各種語言的介紹 2005-08-24 10:00 am 作者:linux寶庫 (http://www.) 來自:linux寶庫 (http://www.) 現(xiàn)存:http://www./3717.html 聯(lián)系:linuxmine#gmail.com 不明白?歡迎到 linux論壇 (http://bbs.) 參加討論! 各種語言的介紹: 在 介紹編程語言之前,先說說開放源代碼的必要性。現(xiàn)在,在軟件生產(chǎn)領(lǐng)域存在巨大的智利浪費(fèi),大家把大量的精力用在編寫別人已經(jīng)實(shí)現(xiàn)的程序代碼上??纯?,文本 編輯器有多少,看看ftp程序有多少,看看字處理程序有多少,這些程序雖然有差別,但主要的功能都是一樣的。要實(shí)現(xiàn)個性化的功能,在已有的軟件基礎(chǔ)上修改 會節(jié)省多少時間呀!而每個程序各編一套,又浪費(fèi)多少時間?如果,沒有這些重復(fù)的工作量,世界上的程序員至少可以節(jié)省80%的工作量。同時,開放源代碼也方 便了大家的交流,閱讀源代碼應(yīng)該是最直接最有效的學(xué)習(xí)途徑。尤其是比較專業(yè)的領(lǐng)域。 要開放源代碼,下面幾點(diǎn)比較重要: ×、語言要流行。 ×、語言的函數(shù)和類庫統(tǒng)一。 ×、語言的語法和編譯器要統(tǒng)一。 ×、編譯器是否開放源代碼。 ×、API是否開放源代碼。 ×、語言的可重用性、功能、友好性。 語 言統(tǒng)一的必要性:如果大家都用一種編程語言,都用同樣的函數(shù),同樣的類庫,那么,大家的共同語言就會很多。大家只要學(xué)會一種語言,一套函數(shù),一套類庫,就 可以相互讀懂源代碼,這樣,學(xué)習(xí)量是最少的。學(xué)習(xí)新的API浪費(fèi)程序員大量的時間和精力,尤其是當(dāng)這個API有大量和其他API重復(fù)的功能的時候。 要增加代碼的可重用性,要從下面幾點(diǎn)著手: ×、代碼的可讀性。如格式、是否接近英語語法和單詞。 ×、代碼的表達(dá)能力,也就是簡單性,能用最少的語句和單詞實(shí)現(xiàn)同樣的功能。 ×、代碼的結(jié)構(gòu)性,如函數(shù)、模塊、類。 語言功能的強(qiáng)大從下面幾點(diǎn)來說: ×、是否擁有大量的庫支持。這是最重要的,要求編寫任何功能的程序都有強(qiáng)大的庫支持。 ×、語法功能是否強(qiáng)大,比如是否有出錯處理。是否有指針。 語言的友好性: ×、語言包的大小,語言包越小,學(xué)習(xí)越簡單。 ×、語言是否有友好的編輯調(diào)試環(huán)境。 ×、語言的可視化和集成編程環(huán)境。 c語言: 從性能上說,除了匯編語言,c語言是最接近機(jī)器的語言。各種操作系統(tǒng)的編程接口的默認(rèn)語言都是c語言。因此,用c語言編程,可以最大限度發(fā)揮操作系統(tǒng)的能力。同時,由于絕大部分的商品軟件都是c實(shí)現(xiàn)的,都有c編程接口,可以說,沒有c不能實(shí)現(xiàn)的功能。 在linux環(huán)境中,c具有很好的開放源代碼的條件,它有統(tǒng)一的編譯器gcc,有強(qiáng)大但比較難掌握的編程環(huán)境emacs,有統(tǒng)一的API:posix和linux接口。并且編譯器和API是開放源代碼的。 在linux上編寫圖形界面程序,有兩個選擇KDE和gnome,KDE更成熟,gnome支持多語言和面向?qū)ο蟮某绦蜷g的協(xié)同。 在windows環(huán)境中,現(xiàn)在統(tǒng)一到了vc上,但有一個缺點(diǎn),windows的升級換代太快,從dos環(huán)境到windows31 ,從windows31到windows95,到windows2000,到.net。API常常變換,這樣,在windows上的程序代碼的壽命會比較短。并且vc的編譯器和API太復(fù)雜,難于掌握。 同時,由于c具有現(xiàn)代語言的大量特征,現(xiàn)在常常代替pasical作為教學(xué)的編程語言。 實(shí)際上,如果不深入學(xué)習(xí),c也是一種很簡單的語言。不學(xué)basic,直接學(xué)c完全沒有問題。 和其他語言相比,c有多種編譯器,多種操作系統(tǒng)API,多種語法和函數(shù)。學(xué)習(xí)的難度大,統(tǒng)一性差。 和java相比,c的語法不夠豐富、現(xiàn)代。 java: 相對c,java作為現(xiàn)代語言,具有非常豐富的語法特征,如模塊和類,不像c隨操作系統(tǒng)和編譯器的不同有極大差異,java是一個公司的產(chǎn)品,具有唯一的API,因此,java程序員沒有語言隔閡。 相對跨平臺的語言來說,java具有最好的圖形界面編程API。 java所有的API都是類庫,相對c的函數(shù)來說,是非常大的進(jìn)步。java具有現(xiàn)代語言幾乎所有的特征。 perl: perl的最大特點(diǎn)是有強(qiáng)大的字符串模式匹配,是最好的文本文件的讀取和生成語言。 perl具有很大的自由性,象英語一樣有很大的隨意性, perl有一個強(qiáng)大的數(shù)據(jù)庫接口和其他各種接口。 perl有最大量的程序庫。 perl不適合編寫大程序。 perl有一個著名的缺點(diǎn)是難懂,也有一個著名的優(yōu)點(diǎn)是簡練。 php: 我感到php是個怪胎,本來perl加嵌入html的功能就完全能實(shí)現(xiàn)php的功能,還要另創(chuàng)一種語言,加重了大家的學(xué)習(xí)負(fù)擔(dān)。 php可以嵌入html,更容易編寫服務(wù)器端程序。 php天然和web服務(wù)器以及mysql數(shù)據(jù)庫相結(jié)合。 php可以動態(tài)生成圖像。 python: 首先,python是和basic一樣面向初學(xué)者的語言,和英語一樣容易懂。 python具有和java一樣的最豐富的語法。 python有和perl類似的簡單性,但沒有模式匹配。 python適合編寫大程序。 python有和lisp相似的地方,它有將字符串作為程序執(zhí)行的eval函數(shù),可以對一個對象的所有數(shù)據(jù)進(jìn)行保存,可以把函數(shù)作為參數(shù)傳給另一個函數(shù)。 python具有非常好的擴(kuò)充性,python程序可以和c程序,以及java程序很好地結(jié)合。 tcl: tcl具有最簡單的語法,最好的和其他程序交互的能力,有編寫圖形界面程序的tk。 javascript: 編寫動態(tài)網(wǎng)頁的最佳工具。 lisp: lisp的語法非常簡單,只有簡單的函數(shù)和參數(shù)的語句結(jié)構(gòu)。 lisp數(shù)據(jù)和程序的界限模糊。 lisp可以深度嵌套。 prolog: prolog是一種專門的語言。專門用來處理知識。 我感覺prolog是一種數(shù)據(jù)庫的處理工具。 也是根據(jù)一些知識衍生出更多知識的推理工具。 basic: 現(xiàn)在最著名的basic是vb, basic是簡單的初級語言。 vb是快速的界面生成語言,是快速的數(shù)據(jù)庫程序開發(fā)語言。 vba是vb的應(yīng)用版,嵌入在offic中。編寫offic上的程序很好用。 vbscript是vb的腳本語言,可以產(chǎn)生服務(wù)器端和客戶端的動態(tài)網(wǎng)頁。 basic的丑陋在于參數(shù)還是默認(rèn)傳地址。太危險。 delphi: 和vb一樣是快速開發(fā)環(huán)境,但性能更好,功能更強(qiáng)大。 .net: 支持多種語言的統(tǒng)一的API類庫, 可以編寫webform程序,即所有的邏輯都在服務(wù)器端,傳到客戶端的是標(biāo)準(zhǔn)的html3.0,可以被各種瀏覽器支持。各程序組件間通過soap交換消息。 各種語言的選擇: 如果編寫對性能要求苛刻,或和操作系統(tǒng)結(jié)合緊密的程序,必然選擇c。 如果編寫到處可用的程序,選java。 如果編寫大程序,可能的化盡量用python,不行了再用java和c。因?yàn)閜ython帶來了生產(chǎn)力。 編寫文本的處理程序用perl。 編寫知識的處理程序用prolog。 編寫最靈活,最模糊的程序用lisp。 編寫office程序用vba。 編寫服務(wù)器端程序,php、perl、python、asp都是選擇。 編寫數(shù)據(jù)庫程序用vb或delphi。 |
|