Project GNU來自十年前,由Richard Stallman在網(wǎng)絡(luò)討論區(qū)的一篇文章http://www.cs.pdx.edu/~trent/gnu/begin發(fā)起的。Richard Stallman在這篇文章中明白的說明了他為什么要發(fā)起這個(gè)計(jì)劃。這篇文章就是后來的GNU Manifesto。而Richard Stallman后來成立Free Software Foundation全力投入Project GNU的工作,是FSF的終身儀工。
GNU是GNU's Not Unix的縮寫(GNU是一種大型的哺乳動(dòng)物--牛羚),在Manifesto內(nèi)Stallman提到UNIX雖然不是最好的操作系統(tǒng),但是至少不會太差,而他自信有能力把UNIX不足的地方補(bǔ)全, 使它成為一個(gè)優(yōu)良的操作系統(tǒng), 就是名為 GNU 的操作系統(tǒng)。
GNU當(dāng)初的策略就是先發(fā)展UNIX現(xiàn)有的程式。(因?yàn)榇_定GNU會是一個(gè)與UNIX相容的系統(tǒng),而UNIX下的標(biāo)準(zhǔn)介面都已經(jīng)蠻完備了,只要照著標(biāo)準(zhǔn)完成的程式,將來GNU Kernel完成后,立刻可以有所有 UNIX 的公用程式),因此會先有 emacs,gcc等utility出來。 其中g(shù)cc更是Project GNU能夠自立更生的主力(不需要依靠Non-Free Software來產(chǎn)生/編譯自己)。
gcc是FSF最有名的程式之一,目前是C,C++,Pbkectove C三合一的compiler。gcc的作法是有一個(gè)先導(dǎo)程式(front end),把C,C++,Objective C的語法轉(zhuǎn)換成一個(gè)內(nèi)部的型式(一個(gè)類似lisp的高階組合語言,稱為RTL,或者說先把高階語言轉(zhuǎn)成一個(gè)想像的CPU的組合語言),再由backend對這個(gè)虛擬組合語言進(jìn)行最佳化,最后產(chǎn)生目的CPU(target)的組合語言碼,如此架構(gòu)下,只要寫好一個(gè)新的語言的frontend,那么因?yàn)間cc backend己經(jīng)支援不少架構(gòu),該語言立刻就可以在不少不同架構(gòu)下的機(jī)器編繹執(zhí)行。有了一種新的CPU,也只要完成把虛擬ASM轉(zhuǎn)換成真正asm的部份,立即就有多種語言的最佳化編譯器。除了C家族之外,gcc還有Fortran 90,ada9x,Pascal的frontend,其中Fortran是最晚問世的 frontend,版本號碼0.5。
說到GNU就不能不說GPL。
GPL -- General Public License
GNU 的精神就是認(rèn)為軟體的源代碼應(yīng)該要自由流通,軟體公司該做的,不應(yīng)該是把源代碼據(jù)為己有,賺取發(fā)行binary 的金錢,而是整合與服務(wù)的費(fèi)用而已,因?yàn)樵创a自由流通的軟件才能讓軟件的品質(zhì)提高,讓軟件設(shè)計(jì)師可以自由的與他人交換心得,不受智慧財(cái)產(chǎn)權(quán)的約束。但是現(xiàn)實(shí)的環(huán)境是惡劣的,為了怕有好利之徒把自由流通的軟件占為己有,F(xiàn)SF制定的GPL,先依著作權(quán)法獲得軟體的智慧財(cái)產(chǎn)權(quán),再透過GPL釋放此權(quán)力給大眾:只要你遵守GPL,不把源代碼,以及你對源代碼所作的修改據(jù)為己有,你就擁有使用GPL軟體的權(quán)力。GPL的規(guī)定不怎么適用于Library(太嚴(yán)格),為了能夠鼓勵(lì)更多人使用GNU軟件,F(xiàn)SF另外制定了LGPL--Library GPL,限制比較松一點(diǎn)。
GNU manifesto/GNU General Public License/Library GPL皆可在GNU mirror sites找到(其中GPL放在目錄名為COPYING的文件內(nèi),LGPL則在COPYING.LIB內(nèi))。另外,F(xiàn)SF每年的1月與7月都會定期公布一份名為GNU bulletin的文件,說明FSF現(xiàn)況與動(dòng)態(tài)。GNU bulletin電子版只公告在gnu announce上。
????????????????????????????????????????????????? 田晟
??????????????????????????????????????????????? 2006-5-9