http://www.cnblogs.com/waynelin/p/5505399.html
Pascal語言:
Pascal是一種計算機通用的高級程序設計語言,由瑞士Niklaus Wirth教授六十年代末設計並創立的。
Pascal的主要特點有:嚴格的結構化形式、豐富完備的數據類型、運行效率高、查錯能力強等特點。
由於上述特點,Pascal可以方便用於描述各種算法和數據結構。對於程序設計的初學者,Pascal語言有益於培養良好的程序設計風格和習慣。IOI(國際奧林匹克信息學競賽)把Pascal語言作為三種程序設計語言之一。NOI(全國奧林匹克信息學競賽)把Pascal語言定為唯一提倡的程序設計語言,在大學中Pascal語言也常常被用作學習數據結構與算法的數學語言。
C語言:
C語言是介於匯編語言和高級語言之間的語言,屬於高級語言,也稱為中級語言,是集匯編和高級語言優點於一身的程序設計語言。於1972年在美國貝爾實驗室里問世。早期的C語言主要用於UNIX系統。由於C語言的強大功能和各方面的優點逐漸為人們認識,到了九十年代,C語言開始進入其他操作系統,並很快在各類大、中、小和微型計算機上得到廣泛的應用。成為當代最優秀的程序設計語言之一。
C的特點
1. 是一種結構化語言。層次清晰,便於按模塊化方式組織程序,易於調試和維護。
2. C語言的表現能力和處理能力極強。不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構,它還可以直接訪問內存的物理地址,進行位級別的操作。
3. 由於C語言實現對硬件的編程操作,所以既可用於系統軟件的開發,也適合於應用軟件的開發。C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類計算機上,從而形成了多種版本的C語言。
4. 由於C語言允許直接對位、字節和地址進行操作,能實現匯編語言的大部分功能。
5. 目標代碼質量高,程序執行效率高。
總體上來說,C語言的優點是簡潔、緊湊、使用方便、靈活、易於學習和應用。僅有32個關鍵字。9種控制語句,程序的書寫形式也很自由。
C語言的弱點:非強類型;語法限制不嚴格,使得編程者無法過多地依賴C編譯程序去查錯;缺少實時檢查,如數組越界等。
從嚴格上來說,C語言是塊結構語言,這是因為它在結構上類似於ALGOL、Pascal和Modula-2。從技術上講,塊結構語言允許在過程和函數中定義過程和函數。因為C語言不允許在函數中定義函數,所以不能稱為通常意義上的塊結構語言。
C語言作為一門面向過程的計算機語言,至今已有三十多年歷史,應用廣泛,無論是Windows還是Linux,你所看到的底層都是用C寫的。大部分的網絡協議也都是用C實現的。你看到的最漂亮的游戲畫面也是用C實現的,工業控制程序也是用C實現的。不過C不是萬能,只是某些方面它適用而已。
C++語言
C++是於1986年由AT&T貝爾實驗室開發的,語言開發的目的在於通過數據封裝減少程序變量的副作用,從而降低程序的復雜性並提高程序的可靠性。(筆者曾經聽到的開發C++的目的是由於懂得C語言的人越來越多,所以需要再出一門更難的、比C語言強大的語言,才能保住飯碗,so。C++出世啦)C++是C語言的直接擴展,C++的多繼承機制能更好地描述對象的屬性和行為。
C++是C的擴展,但C++可以作為一種全新的語言來看。
C++的特點:面向對象、繼承、封裝、多態性。
由於C++是C的擴展,所以也具有C的特點。
C++在C的基礎上,加入了面向對象編程思想,也就決定了C++的效率在某一方面是不如C的。比如定義一種類型,C++用類(Class)來封裝,而C可能就直接幾個變量的組合就成了一個結構體(Struct),類不僅具有成員變量,還具有成員函數等,在精細的比較其效率時,C會比C++的效率要高。但由於時代的發展,項目或工程的龐大化,基於面向對象的思想顯然更能適應。即C++在這方面能比C要做得更漂亮。現在不少系統級編程都是用C++實現,許多應用級別的軟件也是用C++實現。
這里要注意一點,就是C++並不是完全的面向對象語言。它是提供了面向對象的模型以及思路,但是同時兼容了面向過程的模型。
Java語言
Java語言來自於Sun公司的一個叫Green的項目,其原先的目的是為家用消費電子產品開發一個分布式代碼系統,這樣我們就可以把email發給電冰箱、電視機等家用電器。對他們進行控制和信息交流。開始,准備用C++,但C++太復雜,安全性差,最后用一種新的語言Oak(Java的前身),Oak是一種用於網絡的精巧而安全的語言,Sun公司曾依此投標一個交互式電視項目,但被SGI打敗。可憐的Oak幾乎無家可歸,恰巧這時Mark Ardreesen開發的Mosaic和Netscape啟發了Oak項目組成員,他們用(Java)編制了HotJava瀏覽器,得到了Sun首席執行官Scott McNealy的支持,觸發了Java進軍Internet。Java的取名有一段趣聞:有一天,幾位Java成員組的會員正在討論給這個新的語言取什么名字,當時他們正在咖啡館喝着Java(爪哇)咖啡,有一個人靈機一動說就叫Java怎樣,得到了其他人的贊賞,於是,Java這個名字就這樣傳開了。
Java的特點:
1. 簡單性:風格類似於C++,Java摒棄了C++中容易引發程序錯誤的地方,如指針和內存管理。
2. 面向對象:Java是一種完全面向對象語言。從這點來看,Java類似於SmallTalk,但其特性、尤其是適用於分布式計算環境的特性遠遠超越了SmallTalk。
3. 分布式:Java包括一個支持HTTP和FTP等基於TCP/IP協議的子庫。因此,Java應用程序可憑借URL打開並訪問網絡上的對象,其訪問方式與訪問本地文件系統幾乎完全相同。
4. 健壯:Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自己操縱內存減少了內存出錯的可能性。
5. 結構中立:Java將程序編譯成一種結構中立的中間文件格式。只要有Java運行系統的機器都執行這種中間代碼。這種中間語言被設計在虛擬機上運行,由機器相關的運行調試器實現執行。
6. 安全:
1)刪除了香指針和手動釋放內存等功能,避免了非法內存操作。
2)當Java用來創建瀏覽器時,語言功能和瀏覽器本身提供的功能結合起來。
Java在機器上執行前,要經過很多測試,它經過代碼校驗,檢查代碼段的格式,檢測指針操作,對象操作是否過分以及試圖改變一個對象的類型。
7. 可移植的:同體系結構無關的特性使得Java應用程序可以在配備Java解釋器和運行環境的任何計算機系統上運行。任何Java代碼會被解釋成一種中間語言,然后通過不同機子的特定環境(如機器指令)運行程序。實現方便移植的特點。
8. 解釋性。Java解釋器能直接運行目標代碼指令。鏈接程序通常比編譯程序所需資源少。
9. 高性能。如果解釋器速度不慢,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鍾內可調用300,000個過程。
10. 多線程:Java提供的多線程功能使得在一個程序里可同時執行多個小任務。多線程帶來的更大好處是更好的交互性能和實時控制性能。
11. 動態:動態特性允許程序動態地裝入運行過程中所需要的類。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網絡中另一系統中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。
Java在誕生之后不久,便受到廣大群眾的歡迎,甚至有人說出有了Java,可以不要C/C++了。一度把Java提到了很高的地位。這當然是對Java的一種贊賞,只是有點過了。到今天,Java依然不能取代C,C++,而且還出現了新的對手――.Net(后面將會介紹)。
Java目前主要應用:Web瀏覽器、網絡應用系統。
C#語言。
C#是一種精確、簡單、類型安全、面向對象的語言。說到C#,就不得不先簡單介紹一下.net。到底什么是.net呢,按照微軟總裁兼首席執行官Steve Ballrner把它定義為:.Net代表一個集合,一個環境,它可以作為平台支持下一代Internet的可編程結構。C#是.net的代表語言。
C#的特點:
1. 完全面向對象。
2. 支持分布式,之所以有C#,是因為微軟相信分布式應用程序是未來的趨勢,即處理過程分布在客戶機和服務器上。所以C#一出生就注定了能很好解決分布式問題。
3. 跟Java類似,C#代碼經過編譯后,成為了一種IL(中間語言)。在運行時,再把IL編譯為平台專用的代碼。
4. 健壯,C#在檢查程序錯誤和編譯與運行時錯誤一點也不遜於Java,C#也用了自動管理內存機制。
5. C#不像Java那樣完全摒棄了指針和手動內存管理。C#默認情況下是不能使用指針的,程序員在有必要時可以打開指針來使用。這樣可以保證編程的靈活性。
6. 安全性:C#的安全性是有.net平台來提供的。C#代碼編譯后成為IL語言。是一種受控代碼,.net提供類型安全檢查等機制保證代碼是安全的。
7. 可移植性:由於C#使用類似Java的中間語言機制。使得C#也跟Java類似,可以很方便的移植到其他系統。在運行時,再把中間代碼編譯為適合特定機器的代碼。
8. 解釋性:C#也是一種特殊的解釋性語言。
9. 高性能:C#把代碼編譯成中間語言后,可以高效的執行程序。
10. 多線程:與Java類似,可以由一個主進程分出多個執行小任務的多線程。
11. 組件模式:C#很適合組件開發。各個組件可以由其他語言實現的,然后集成在.net中。
C#是在Java流行起來后所誕生的一種新的語言。由於微軟在操作系統上占有很大的優勢。在以往的開發中累積了不少經驗,所形成的.net平台,所以C#在Windows方面可以說比Java具有更大的優勢。如果單純從技術上來講,C#在網絡編程上可以與Java匹敵。C#還在Windows Forms也有一定的優勢。
C#是一種非常類似於C++的語言,風格是更接近於Java,不管是C++程序員還是Java程序員,都可以很方便的轉到C#上來。
C#的強大是依賴於.net的發展,而.net的發展是看微軟在.net上的決心和投入有多少。從Windows 2003和Vista系統可以看出(前者內置.net1.1,后者內置.net2.0。).Net在Windows編程中具有重要的戰略意義。
C#目前主要是應用在網絡編程上,其他領域比如數據庫、窗體編程,都逐漸在增大。
Pascal PK C
現在,看我們學習Pascal和C的過程:學Hello world,然后知道怎么編譯,運行。然后學習基本數據類型,然后輸入輸出。不管學校希望學生能學多好,實際來看,學生學Pascal跟學C是沒什么區別的。不同的只是語言風格。有人也許會說,學C的精華在於指針。學C的人會比Pascal強很多。沒錯,指針是學C的一個重點。但是就按我學C的課本來看,用到的指針只是很簡單的。理解了*p和p有什么不同,就夠了。然后會編個簡單的幾行代碼,就自認為會C了。C庫中有很多函數,教師在課堂上幾乎沒講。比如memset,qsort等,少了這些。你學Pascal和C沒什么不同,只是作為了學習其他語言的鋪墊而已。而新生由於沒有語言根基,有不少好學生由於教師在課堂上沒講,就以為學完教師所教的了。這正是好學生的弱點所在。如果是“壞”學生,不聽課堂的。倒還可能發現課堂所學的C是多么膚淺。還有,我至今沒見過有學校會教C的圖形開發的。雖然圖形開發不是語言基礎。不過對於擴展新生的編程視野是一個不錯的選擇。現代程序軟件支持圖形窗口的太豐富了,幾乎不會太多的學生去在意窗體的設置,定位等功能。圖形編程還能激起學生的編程欲望。筆者曾經實現過C的動畫演示,當里面的所有圖形都按預期的運動起來的時候,那種興奮感猶如你在冰天雪地的情況下忽然淋你一盤冰水所感到的那種感覺。
C PK C++
C++是在C的基礎上發展起來的。看起來似乎這兩個pk,贏者肯定C++。其實未必。C至今還有生存的空間,而沒有被C++全盤代替。說明了C還是具有不可替代的作用。C目前主要應用在於硬件底層的部分,以及對於性能要求較高的應用程序中。但是對於復雜的系統級的開發,顯然C++顯得從容自在。聯系實際,不少人學C++的時候,就已經有C 的基礎了。有C的基礎,學C++的基本類型的時候可以快速渡過,然后學類,繼承,多態等概念。還是從我的經歷說起,我選了C++,然后幾乎沒怎上課,因為實在聽了想睡覺,期末前用C++做了一個大作業后,就叫懂C++了哈,然后考試當然輕松過了。其實我那時還是沒學到C++,本質點說,我只是還是在會點C的基礎上。多了一個結構類型:類,而已。后來使用了1年的C++后,才恍然察覺到當年的無知。才明白C++是什么。我相信已經學過C++的同學估計現在連IO流的概念還沒搞清楚的人很多。造成這種現象的原因在於:1. 學生本身沒有認真去編程實現。2. 教師只是重復的講課本而已。最終判定學生是否會C++的標准也只是考試為主。關於高校的考試制度在計算機系中的效用,筆者將在未來幾天內出一篇個人觀點文章。
Java PK C#
目前不少人對這兩種語言議論紛紛。筆者在開始學C#的時候,曾經看過Java程序員對於C#的觀點。把C#貶得一文不值。忽然發現,似乎很多Java的程序員對C#懷有天生的敵意。筆者目前自認為精通的是C#(別BS我)。以往學過Java,在此我寫一下我所感觸到的。雖然微軟一直稱C#是繼承於C/C++,但是不論從代碼結構,還是內置的支持類,都跟Java有驚人的相似之處。我感覺C#就是在Java之上,針對Java的優點和缺點來設計的。我用過C、C++、Java,感覺還是C#最好,這只是筆者的個人感受。由於C#還保留着指針,當要實現一下比較底層的,性能要求高的時候,解決辦法之一是C#可以打開指針,而Java是做不到的,Java只能通過其他途徑,比如優化算法來解決。
Java在非windows下獲得了很大的成功:某調查公司曾經使用Google搜索引擎來統計以下指標:熟練使用某種語言的工程師數量、某種語言課程教學的可用性、有多少公司在出售用某種語言編寫的軟件。最后綜合得分情況是:Java以45.2分排名第一;第二名是C,得分是32.2;C++是以24.6分排名第三;C#遠遠落后在第九位,得分為4.6。這些數據是幾年前的數據。在這次測試中還發現,C#的受歡迎程度正在急劇上升;而Java相對穩定。這其中一個原因是.net允許許多種編程語言,而不像Java那樣,限制人們只能使用一種語言。開發者能夠使用包括C、C++、C#甚至Java在內的幾乎任何語言來編寫代碼,然后把這些代碼翻譯成機器看得懂的CLR代碼(公共語言運行時代碼)。這樣.net可以讓開發者保護自己的“代碼投資”,換句話說,過去人們用C、C++編寫的代碼都能再次被利用。而Java只能重新寫代碼。