各種程式語言介紹(轉載)
2002-04-12新增內容: 除了彙編語言外,c是最接近系統底層的語言,因此它是大部分程式的程式設計語言。c的缺點是沒有統一的函式庫,標準不統一,因此,同樣是c程 序員,相互看不懂程式碼是很平常的事。
ada的出現就是為了解決統一標準的問題。有一個國際組織專門進行嚴格ada語言的認證來保證ada的統一。因此,ada編譯器有很多種,但ada語 言程式用任何ada編譯器編譯都能通過。同時,ada的執行程式的效率和c比較接近。有人說比c要快,我想不可能,除非c用的庫有問題。ada比c 排錯能力更強,但c也有類似的功能。ada還有一個缺點,就是語言羅索,象cobol一樣非常難看。
java是對c的大大的改進。有統一的標準,豐富的庫,完全的面向物件。也繼承了c的一些特點,無所不包的全功能,深入系統底層的程式設計的靈 活性。但因為java學習了c的深入系統底層的特點,它的語言就嚴格、呆板、羅索。另外,java要跨平臺,它的速度就非常令人不滿意,只能局 限在高階應用方面。在速度上,可以選擇微軟的.net和蘋果的coco(可能拼寫有錯誤)。他們也同樣是底層的面嚮物件語言。
作為高階的應用程式,如果沒有保密要求,指令碼語言是最合適的。指令碼語言因為不用編譯,因此開發速度會比編譯語言快很多。 basic和perl都是古老的指令碼語言。basic被微軟發揚光大了,但它的缺點是沒有完整的面向物件特性,因此編寫大型程式很困難。另外,微軟 的產品肯定是“腫件”。perl被特別設計來進行文字的處理,文字處理能力非常強,但不適合編寫大程式,語言風格也比較令人費解。 python定位於入門的程式設計語言,是basic的代替品,它具有和basic同樣的簡單性,並且程式設計語句更優雅。python有比較完整的面向物件特性, 可以用來編寫大程式,因此有些大型的實用程式是python完成的,從加快開發速度的角度,可以代替c和java。python的另一個巨大的應用領域 是用來操作定製其他程式,這個能力basic也有,從這個角度說,python就是unix世界的basic。但python更進一步,和c的溝通能力非常好,任 何為c編寫的介面能夠很容易轉化為python的介面。和java的介面有專門的python的java版,就是jython,jython可以和java本身一樣使用各種 java資源。 ruby首先是smalltalk的替代品。有徹底的面向物件特性。另外,也努力作為perl、php、basic、python的替代品。 rebol是lisp的替代品,同時作為指令碼語言的一員,有自己的獨特之處,他的網路程式設計和圖形使用者介面程式設計是最強大的。 語言解析語言yacc、 html、xml、xlt、xul等也可以算作語言。
[edit] 各種語言的選擇 如果編寫對效能要求苛刻,或和作業系統結合緊密的程式,必然選擇c。 如果編寫到處可用的程式,選java。 如果編寫大程式,可能的化儘量用python,不行了再用java和c。因為python帶來了生產力。 編寫文字的處理程式用perl。 編寫知識的處理程式用prolog。 編寫最靈活,最模糊的程式用lisp。 編寫office程式用vba。 編寫伺服器端程式,php、perl、python、asp都是選擇。 編寫資料庫程式用vb或delphi。
[edit] 各種語言的選擇 如果要追求效能和程式的能力,要完全發揮作業系統的能力,使用c語言是合適的。在windows環境下用vc,在linux環境下用gcc。 如果不是追求和作業系統完美結合,而只是效能,又要追求跨平臺性,那麼仍然選擇c,但可以選擇跨平臺的庫,如qt、gtk、fox、wxwindows 。如果要編寫遊戲也有跨平臺選擇:SDL。 如果不滿意c領域標準的不統一,不滿意c的容易出錯,不滿意c的面向物件特徵不徹底。如果不在乎跨平臺,windows平臺可以選擇c#,mac平臺 可以選擇coco。如果需要跨平臺,可以選擇java。 如果需要跨平臺,又要廣泛的支援的話,選擇java。 如果不在乎商業機密,應用目標也不是太苛刻的話,編寫大型跨平臺程式還有一個選擇就是python或ruby。指令碼語言,但是具有全面的庫的支 持,有和c語言的方便的互動能力。他們和java相比,程式設計效率更高。同時因為沒有編譯,程式更方便修改。因為他們的庫都是c實現的,也比 java有更高效能。同時,他們都是開源的,都是對商業應用友好的,也是簡單的、方便定製的。也是不滿意java的不可控制的越來越龐大的庫 的又一個選擇。 在linux下,最方便的工具語言是perl,它有強大的社群和程式碼庫的支援。 如果只作為簡單應用的工具語言,python和ruby是更好的選擇,他們的跨平臺移植性好,應用也比較廣泛。其中python更適合入門和交流,長 期使用也不錯。ruby是對python不滿意的另一個選擇,它提供了很多額外的功能。 如果要選擇一個程式的嵌入語言,原來有lisp、basic和java,現在還可以選擇python和ruby。 如果在要求動態解釋執行語言,而又不想學其他語言的話,c程式設計師的選擇是pike,java程式設計師的選擇是beanshell。 在java平臺,又想用指令碼語言的話,可以用jython。 最正統的基於文件的語言或叫動態頁面語言是javascript。 最專門的伺服器端語言是php,當然也有很多其他選擇。 xml語言以xul為最著名,dtml也算一個,你自己也可以用xml作為自己特殊用途的語言。比如jedit就用xml作為一種模式定製語言。xml語言是 一種比較先進的趨勢,比現有的語言在特殊領域更高效。 要找容易實現的語言,lisp和tcl是選擇。 lisp的資料和程式融為一體的能力和自由是其他語言都沒有的。現在出現了一個lisp的現代化的變種:rebol。 如果有基於事實的程式設計的需要的話,prolog和clips是必然。
[edit] 我為什麼選擇了python 首先宣告,我程式設計只編應用程式,就是代替自己工作的小程式。如果編寫系統程式總會用到c或java的。 我喜歡指令碼語言,指令碼語言不用編譯就可以執行,非常便於修改,而程式設計序是一種經常性的活動,程式編完後總在不斷的修改中,沒必要搞的 很隆重,還要編譯。另外,指令碼程式每個使用的人都可以隨手拿來修改,不會出現還要去找原始碼的情況。因此,c和java就被排除了。 我喜歡簡單的語言,不喜歡為了編寫簡單的程式而去學習大量複雜的規定,需要大量的學習才會的語言不是好語言,是把人當機器看。c和java 都有嚴格但羅索的語法,有永遠學不完的函式、類、庫。讓人看到就頭大。而perl有各種怪里怪氣的速記符號,程式常常讓人頭暈。簡單的含 義除了容易學,還要功能豐富,常用到的東西要早就準備好,不用每個人都去寫同樣的資料結構程式等。python有豐富的資料型別,有完備的 面向物件的結構,有規則表示式等各種方便程式設計的模組。這個邏輯就是程式做的多,人做的就少,如果程式做的少,就要人做的多。這就是界 面友好的問題。容易上手,功能豐富是程式設計的很重要的目標,windows就是靠這個流行的。而python也很好的體現了這點。而perl象unix的 emac之類其它工具一樣,功能強大,但太難學,太難懂。是比較違揹人性的。 關於效能。現在cpu已經很強大了。除了很大的程式和系統程式,沒必要關心效能。 關於功能。如果不是編寫系統程式和貼近系統的程式,沒必要使用作業系統特別提供的功能。c是可以幹任何事情,但它程式設計效率低,複雜。 至於我為什麼不用vb,因為vb太龐大了。我沒必要實現一個小功能啟動這麼龐大的程式。太誇張。另外,vb沒有類繼承,雖然是應用程式設計,但 如果要編稍微大的程式,總會用到類繼承的。 python得強大得擴充套件能力使對python得學習不會浪費。python經過簡單得處理能使用各種得c和c++庫,也可以被c和c++呼叫。python可以直接 使用java得類,也可以直接被java呼叫。這樣,對python、java、c得學習和使用經驗都不會被浪費,還能相互補充。python可以提高java和c 得程式設計效率,java和c可以補充python功能上得不足。python還可以和tcl直接互動,這種功能是內建得。期待python能簡單的呼叫perl和php得 功能。能使用lisp和prolog更好。
ruby 吸取了所有語言精華的語言 第二版
ruby 語言還是雜耍 ruby?:O ruby 日本人的玩意
ruby有
* perl的正則表示式
* python的語言的簡單性可讀性、最容易的擴充套件能力,強大的可移植性。
* php的嵌入功能和多種客戶端
* smalltalk的純面向物件語法和單繼承
* lisp的無窮巢狀的語法,也就是函式式的語法。
* 用“塊”來實現更快捷的資料結構的處理。不知道是不是scheme的巨集功能。用塊能更清楚的實現python的表處理功能。
* java和ada的執行緒程式設計
* java的安全程式設計
不得不承認ruby確實是個精彩的語言,它完全學會了lisp的所有程式設計都是函式的思想,smalltalk的所有東西都是物件的思想,perl的一個目的 多種手段的方法,python的簡單化的“最少驚喜”的原則,java的多執行緒和安全控制的功能,tcl的容易擴充套件的功能,php的嵌入功能和強大客 戶端的功能,最方便的shell命令的呼叫。
[edit]
ruby和python的比較
[edit]
python和ruby的相同點
* 都強調語法簡單,都具有更一般的表達方式。python是縮排,ruby是類basic的表達。都大量減少了符號。
* 都是動態資料型別。都是有豐富的資料結構。
* 都具有c語言擴充套件能力,都具有可移植性,比perl的可移植性更好。也都可以作為嵌入語言。
* 都是面向物件的語言,都可以作為大專案的開發工具。
* 都有豐富的庫支援。
* 也有最寬鬆的版權許可,除了一些工具屬於GNU世界。
* 都有lisp特色的eval函式,也都能把函式作為引數。
* 也有圖形介面的ruby的專門編輯器。
* 都獲得了廣泛的c庫的支援。如qt、gtk、tk、SDL、FOX等,ruby計劃實現SWIG介面。
* 都有完善的文件。
[edit]
和python相比ruby的優點
* 具有正則表示式和嵌入html的功能。python也有正則表示式,但沒有ruby的應用方便和廣泛。python的嵌入html專案才剛起步。ruby還有 apache的mod模組。ruby本身也實現和很多unix工具,如racc,doctools。比python更親近linux。
* 比python功能更完整的面向物件的語法。
* ruby的整個庫都是具有類繼承的結構。
* 他的基本的資料型別和運算子都是可以過載的。
* ruby主要的功能都是通過物件的方法呼叫來實現的,而不是函式。python也在向這方面發展,但沒有ruby做的徹底。
* ruby的類是更規範的單繼承,還有介面等概念的實現。
* python可以實現在列表內的條件語句、迴圈語句,而ruby用“塊”的方式來實現這個功能,比python的更靈活,更具有通用性。
* ruby具有類似lisp的徹底的函式方式的條件語句、迴圈語句等。語句的表達能力更強。
* 附帶一些unix工具,如racc等。
[edit]
和python相比ruby的不足
* 最大的不足正是因為ruby的強大所引起的。它沒有python的簡單性好。比較複雜的面向物件語法、“塊”語法的引入、正則表示式的引入、 一些簡寫標記都增加了語言的複雜性。
* python的縮排表達方式比ruby的basic的表達方式更讓人悅目,ruby程式的滿眼的end讓人不舒服。當然,ruby認為end的方式比python更先 進。
* ruby還沒有python的“自省”的能力,沒有從程式檔案中生成文件的能力。
* ruby沒有國際化的支援。國際化支援在ruby的計劃中。這是因為ruby的歷史比python要短造成的。
* ruby沒有類似jython的東西。
[edit]
python和ruby的語言的選擇
從簡單的就是好的來說,選python是沒錯的。python適合尋找簡單語言的人,這很可能造成python更流行,因此也有更多的支援。但如果要追 求更強大的語法功能,則ruby是好的選擇。因為ruby和python的哲學有很多相似的地方,先從python入手,儘量用python,如果python的能力 不足了,可以在找ruby。
ruby和python的比較,就像五筆和拼音輸入法的比較。拼音作為入門的輸入法和長久使用的輸入法都沒有問題。五筆適合更高要求的情況。如 果追求效能的不妨學學ruby。對程式設計語言感興趣,想了解各種程式設計概念的學ruby也會很興奮。
[edit]
php有什麼好處
我一直認為php是一個垃圾,因為它只是實現了指令碼語言得嵌入,卻單獨實現一種語言、實現大量得函式庫,浪費了大量得開發人員得寶貴時間 來重複其他指令碼已經實現了得功能,也浪費了php開發人員得大量學習時間,還要單獨學一種只能存在於web伺服器得語言,浪費了perl、 python得已有得使用經驗。相似得還有pike,一種c得指令碼語言,沒什麼新東西,還不如仍然用c編譯器。
但我最近看書才瞭解php得獨特得開發目標。
php為什麼不直接用perl作指令碼語言。是因為perl是一種unix語言,帶有unix傳統得字元神祕高深,讓人難於學習。而編動態網頁得人不見得會 用perl這種unix工具,他們可能只有html知識。php就簡化了perl得語言,變成了一種簡單友好得語言,免去了人們學習perl得困難。
php為什麼不選python作指令碼。因為python是一種面向物件得語言,大量得功能都要涉及面向物件概念,而web應用只是簡單得實現客戶機邏輯 和顯示功能。沒必要涉及面向物件得複雜概念。函式是最簡單,最容易理解得,因此,php傾向於所有得功能都用函式來解決,而不是用物件來 解決。這有點象c和c++之爭。應該承認,函式在實現簡單功能得時候是最有利得工具,它得語句量最少。
php定位於以html為使用者介面,充當各種伺服器得客戶端,實現得是傳統得客戶端程式設計得任務。它有pop、smtp、ftp、多種資料庫等各種伺服器 得客戶端得函式,也有圖片、pdf生成,xml處理等這種必要得功能。這些都是其他指令碼比不上php得地方。
我幾乎沒用過php,說得不對,請指教。
[edit]
ada語言草述
ada語言我看了他的介紹。
ada語言和c一樣是一種編譯語言,他們最後編譯出的執行檔案的機器碼都很小。因此現在眾多的語言只有c很ada能比較。
和c相比,ada的特點是可靠、可移植。
他的可靠是通過比其他語言都強大的型別,每種型別還都可以象資料庫欄位一樣進行強型別、範圍的檢查。以此來保證在編譯中就發現錯誤。
它有強大的標準化組織,嚴格認證ada編譯器的標準。有多執行緒能力。
適於編寫實時程式。
但和c相比太複雜、羅嗦,因此註定不能流行。
[edit]
多指令碼語言的大統一及疑問
現在各種指令碼語言太多了,有必要進行整合,parrot是一個好的想法。.net也是好的想法。它為各種指令碼提供了一個統一的虛機,為各種指令碼 語言提供了基於“類”的相互呼叫,為各種指令碼提供了統一的類庫。
現在各種指令碼語言只是提供了對c語言的互動性,這種互動也是費勁的和效果不好的。比如python、perl、ruby等都提供了對c的互動功能。腳 本語言之間的交流障礙重重。而類似.net的東西,提供了非常容易的各種指令碼的相互利用的途徑,避免了很多的程式碼的重複編寫。這種標準平 臺的力量是很大的,這種標準平臺為什麼沒有在開源領域首先出現呢?眾多的指令碼正是開源的特點和優勢,為什麼這種問題要微軟來解決呢? 前面有人提出了類似的問題,在linux中為什麼至今沒有好用的類似ODBC的東西呢?
可能這種整合只有商業公司有能力實現吧。
我的理解是,如果有創新思想的人都拿他的想法去賣錢了,因此,在開源中只剩下了模仿的人。kde是模仿windows,koffice是模仿office, linux是模仿unix,gcc、bash等也全都是模仿,以及gstep等,還有freedos、atheos等也是模仿,wxwindows、SDL也是模仿。我想知道開源社 區有沒有自己的創新?我所知道的創新是zope,但zope最初也是商業產品,後來才開源的。perl是創新,python是創新,但還有什麼呢?是不 是開源領域只有hack,沒有creator?
[edit]
.net介紹
.net所實現的java的功能
可控程式碼 跨平臺的虛機和偽碼免費贈送命令列編譯器 純面嚮物件語言 對xml和xml web services的支援 和jsp對應的asp.net 網頁上的程式 一套統一的中介軟體環境。
asp.net跟jsp不是同一個層次上的web技術, asp.net使用完善的事件響應機制,WinForms類似的 WebForm技術,只有JSF跟Asp.net有可比性。
.net未實現的java功能
免費的整合開發環境 多廠家支援,跨平臺的成熟度
免費的IDE, #develop , ASP.net的有MS的WebMatrix 而免費開源的CLR實現,有MS自己的XP,FreeBSD,MacOS下的實現(原理演示不能進行商 業應用), Novell下的Mono專案,已經發布了Beta1版本,在2004-6-30 將會發布Release1; 還有GNU的一個.net實現!!
[edit]
.net實現的java不具備的功能
多語言支援 強大的整合開發環境。在windows上媲美本機程式的速度。 對COM的支援,對vs的繼承 對widows form 、web form、伺服器端程式 的圖形直觀程式設計。
[edit]
相對vs6的改進
統一了整合開發環境,使c++程式也具有了vb的友好性。
[edit]
xml各種技術介紹
xml:
xml是統一格式的結構化資料的文字檔案。
基於xml的程式,資料結構是開放的,方便不同程式處理同一種檔案,這樣,程式之間可以達到高水平的協作。
xml現在成為了各行各業統一資料格式的基礎。
xml發展出了完善的語法,它用DTD或scheme來界定xml的標記語言。用uri來唯一確定一個xml格式。用css或XLT來轉換xml格式,xlink和 xpointer等來建立xml的連結,用xpath來定位xml中的資料。
xhtml: