計算機編程語言分類及各自用武之地 最近,見大家都在看C++,卻很少人知道C++能干嗎,覺得學了沒意思,因為只是看些語法知識自然沒意思,如果做出東西來,看著自己的成果,想必也會提高自己興趣的。 針對學習編程語言的迷茫,從而引出一個問題,各種編程語言都是干什么用的?學了基本的語法,程序的流程,面向?qū)ο蟮乃枷耄芨牲c啥? 對于ICT行業(yè)的的大學生來說,能夠詳細的區(qū)別編程語言的用途及使用方法,對以后的選擇性學習以及就業(yè)方向來說是非常必要的。就此,本人就幾種常用語言的簡單分析一下。 先說一下計算機語言的分類(大家都知道,一筆帶過): 1、機器語言。 2、匯編語言。 3、高級語言。 前兩天看臺灣蔡學鏞先生著的《Java程序員的心聲:爪哇夜未眠》,他把程序語言大致分為五類,還是不錯的: 1、web page script languages 用來做網(wǎng)頁的語言,就是網(wǎng)頁代碼,比如html、javascript、css、asp、php、xml都應該屬于此類,但html算不上編程語言。Javascript和Java沒有半毛錢關(guān)系,是兩門單獨的語言,在Web2.0時代,打造富客戶端的絢麗效果,Javascript語言還是很值得學習的,新出的HTML5其實就是Javascript。我比較看好Javascript,應該算是值得學習的一門語言。 2、interpreted languages(解釋型語言) 包括perl、python、rebol、ruby等,也常被稱作script語言,通常被用于和底下的操作系統(tǒng)溝通。照蔡學鏞先生的意思,每個人至少應該學會一套這類的語言。這類語言的缺點是效率差、源代碼外露——所以不適合用來開發(fā)軟件產(chǎn)品,一般用于網(wǎng)頁服務(wù)器。google公司用的比較多的是C++、Java和python。有時間我也要學學python或者ruby。 3、hybrid laguages(混合型語言) 代表是java和c#。介于解釋型和編譯型之間。蔡認為c#是.net平臺上最重要的語言,值得期待其后續(xù)發(fā)展;至于java,蔡叫你們看他的《sleepless in java》——我暈! 4、compiling languages(編譯型語言) c/c++,Delphi都是編譯型語言。C++變得越來越龐大,大多數(shù)的C++程序員只用到(也只懂)C++功能的一小部分。C++很復雜,要成為C++高手沒三五年是不行的(就憑這句話,我決定向java投降),盡管如此,但真正要成為高手的都應該懂C/C++,重要的API一般都有C++的版本,可見C++的重要性,怪不得大家說C++是真正程序員的語言。 5、assembly languages(匯編語言) 匯編語言是最接近于硬件的語言,不過用的很少。 程序語言學習順序建議 如果完全沒有程序經(jīng)驗,可照這個順序:javascript——解釋型語言——混合型語言——編譯型語言——匯編(如果需要的話)。 用業(yè)界流行一句話做程序語言分類的結(jié)尾“真正的程序員用c++,聰明的程序員用delphi”,那么,什么樣的程序員用java呢? 以下是Tiobe公布的最新的2011年9月編程語言排行榜TOP20: 現(xiàn)在來按順序大致看一下各種語言的用武之地(我也好多不懂,有些是自己網(wǎng)上找的,大家將就看一下): 1、Java: Java是一種可以撰寫跨平臺應用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言。Java最初是由James Gosling在Sun Microsystems(現(xiàn)在是Oracle旗下的子公司)開發(fā)的一種編程語言,并作為Sun Microsystems的Java平臺的核心組件于1995年發(fā)布。 這種語言的大部分語法源自于C和C++,但是它具有簡單的對象模型和更少的底層服務(wù)。Java源代碼經(jīng)過編譯之后生成類文件,這樣可以使它運行在任何一個Java虛擬機上,而無需考慮計算機的架構(gòu)。Java 平臺有三個版本,這使軟件開發(fā)人員、服務(wù)提供商和設(shè)備生產(chǎn)商可以針對特定的市場進行開發(fā): Java SE(Java Platform,Standard Edition)。Java SE 以前稱為 J2SE。它允許開發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實時環(huán)境中使用的Java 應用程序。Java SE 包含了支持 Java Web 服務(wù)開發(fā)的類,并為 Java Platform,Enterprise Edition(Java EE)提供基礎(chǔ)。 Java EE(Java Platform,Enterprise Edition)。這個版本以前稱為 J2EE。企業(yè)版本幫助開發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端 Java 應用程序。Java EE 是在 Java SE 的基礎(chǔ)上構(gòu)建的,它提供 Web 服務(wù)、組件模型、管理和通信 API,可以用來實現(xiàn)企業(yè)級的面向服務(wù)體系結(jié)構(gòu)(service-oriented architecture,SOA)和 Web 2.0 應用程序。 一些電子商務(wù)網(wǎng)站就是基于此平臺。 Java ME(Java Platform,Micro Edition)。這個版本以前稱為 J2ME。Java ME 為在移動設(shè)備和嵌入式設(shè)備(比如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環(huán)境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對可以動態(tài)下載的連網(wǎng)和離線應用程序的豐富支持。基于 Java ME 規(guī)范的應用程序只需編寫一次,就可以用于許多設(shè)備,而且可以利用每個設(shè)備的本機功能?,F(xiàn)在很火的Android開發(fā),你懂的。 一入豪門深似海,偶現(xiàn)在就走上了Java EE這條不歸路。2、C: C語言,是一種通用的、過程式的編程語言,廣泛用于系統(tǒng)與應用軟件的開發(fā)。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。 C語言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)和肯·湯普遜(Ken Thompson)于1970年研制出的B語言的基礎(chǔ)上發(fā)展和完善起來的。目前,C語言編譯器普遍存在于各種不同的操作系統(tǒng)中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。C語言的設(shè)計影響了許多后來的編程語言,例如C++、Objective-C、Java、C#等。 前段時間在老板公司實習,一個項目經(jīng)理就是用C語言的高手,他以前在UT斯達康開發(fā)GSM核心網(wǎng)的。 3、C++ C++最初發(fā)布于1980年代中期,當時面向?qū)ο笳Z言被認為是解決軟件復雜性問題的銀彈。C++的面向?qū)ο筇匦钥聪嗳ナ蛊淙娉搅薈,支持者認為C++將迅速把上一代語言擠到陳列館里去。 但是歷史并非如此。究其原因,至少有一部分歸咎于C++本身。為了與C兼容,C++被迫作出了很多重大的設(shè)計妥協(xié),結(jié)果導致語言過分華麗,過分復雜。為了與C兼容,C++并沒有采用自動內(nèi)存管理的策略,從而喪失了修正C最嚴重問題的機會。 另外一部分原因,恐怕要算到面向?qū)ο笊砩???雌饋鞳O并沒有很好的達成人們當年的預期。我就這個問題調(diào)研過,我發(fā)現(xiàn)使用OO方法導致組件之間出現(xiàn)很 厚的粘合層,并且?guī)砹藝乐氐目删S護性問題。今天讓我們來看看開放源碼社區(qū),你會發(fā)現(xiàn)C++的應用還是集中在GUI,游戲和多媒體工具包這些方面,在其他 地方很少用到。要知道,面向?qū)ο笠仓皇窃谶@些領(lǐng)域被證明非常成功,而開放源碼社區(qū)的選擇,很大程度上體現(xiàn)了程序員的自由意志,而不是公司管理層的胡亂指揮。 也許C++實現(xiàn)OO的方法有問題。有證據(jù)表明C++程序在整個生命周期的開銷高于相應的C, Fortran和Ada程序。不過,究竟這是否應該歸咎與C++的OO實現(xiàn)上,還不清楚。 最近幾年,C++加入了很多非OO的思想,其異常思想類似Lisp,STL的出現(xiàn)是非常了不起的。 其實C++最根本的問題在于,它基本上只不過是另一種傳統(tǒng)的語言。STL中的內(nèi)存管理比先前的new/delete和C的方案要好的多,但是還是沒有解決問題。對于很多應用程序而言,其OO特性并不明顯,相比與C,除了增加復雜度之外沒有獲得很多好處。 總結(jié):C++優(yōu)點在于作為編譯型語言,把效率與泛型和面向?qū)ο筇匦越Y(jié)合起來,其缺點在于過于華麗復雜,傾向于鼓勵程過分復雜的設(shè)計。 C++是最流行的編程語言之一,它的應用領(lǐng)域涵蓋了系統(tǒng)軟件、應用軟件、驅(qū)動程序、嵌入式軟件、高性能的服務(wù)器與客戶端應用程序和諸如電視游戲等娛樂軟件。 C++常用于操作系統(tǒng)和驅(qū)動級別軟件開發(fā),圖像處理,3D游戲開發(fā)等;C++主要應用于開發(fā)性能要求較高的系統(tǒng)級軟件,如操作系統(tǒng)、編譯器以及游戲軟件,如暗黑系列等等。 前段時間研究的NS,無線網(wǎng)絡(luò)仿真,里面一些鏈路層、路由層協(xié)議的實現(xiàn)也大都用的是C++,看來還是躲不過啊。 4、C# C#是微軟推出的一種基于.NET框架的、面向?qū)ο蟮母呒壘幊陶Z言。C#由C語言和C++派生而來,繼承了其強大的性能,同時又以.NET 框架類庫作為基礎(chǔ),擁有類似Visual Basic的快速開發(fā)能力。 C#可以大范圍的適用于高層商業(yè)應用和底層系統(tǒng)的開發(fā),即使是通過簡單的C#構(gòu)造也可以各種組件方便的轉(zhuǎn)變?yōu)榛赪EB的應用,并且能夠通過Internet被各種系統(tǒng)或是其他開發(fā)語言所開發(fā)的應用調(diào)用。 C#也可以為C/C++開發(fā)人員提供快速的開發(fā)手段而不需要犧牲任何C/C++語言的特點/優(yōu)點。從繼承角度來看,C#在更高層次上重新實現(xiàn)了C/C++,熟悉C/C++開發(fā)的人員可以很快的轉(zhuǎn)變?yōu)镃#開發(fā)人員。 5、 PHP PHP是基于預處理 HTML 頁面模型的一種腳本語言。它大量地借用C和Perl語言的語法, 并結(jié)合PHP自己的特性,使Web開發(fā)者能夠快速地寫出動態(tài)產(chǎn)生頁面??梢杂糜诠芾韯討B(tài)內(nèi)容、支持數(shù)據(jù)庫、處理會話跟蹤,甚至構(gòu)建整個電子商務(wù)站點。它支持許多流行的數(shù)據(jù)庫,包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。PHP本身就是為處理超文件html設(shè)計的,正是由于它是專為基于 Web 的問題而設(shè)計的,而且它是開源的導致可擴展性大大增強 ,所以運用非常廣泛。 相信大家很多人都聽說過LAMP。Linux+Apache+Mysql+Perl/PHP/Python,一組常用來搭建動態(tài)網(wǎng)站或者服務(wù)器的開源軟件,本身都是各自獨立的程序,但是因為常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。 6、 Objective-C Objective-C是蘋果Mac OS X 上開發(fā)的首選語言,主要是因為Mac OS X 技術(shù)源自NextStep OpenStep操作系統(tǒng), 因為OPENSTEP的軟件架構(gòu)(framework) 都是用Objetive-C 寫成,所以Mac OS X上的開發(fā)最佳語言自然也就是Objective-C 了。 Objective-C是ANSI C的超集,擴展了C語言使它具備面向?qū)ο笤O(shè)計的能力,如類,消息和繼承。Objective-C 程序中可以利用現(xiàn)有的C語言代碼,使其利用現(xiàn)有的軟件架構(gòu)。這也是為甚莫Objective-C 過去多年間能夠成為一種流行的用戶界面開發(fā)語言而且至今沒有消亡,因為一方面用它可以實現(xiàn)底層系統(tǒng)編程,另一方面可以支持利用動態(tài)架構(gòu)進行開發(fā)。 前段時間在公司實習,有一研二的學長就精通此語言,獨自一人負責iphone終端上的應用程序開發(fā),頗得老板賞識。 7、VB VB是快速的界面生成語言,是快速的數(shù)據(jù)庫程序開發(fā)語言。vba是vb的應用版,嵌入在MS office中。編寫MS office上的程序很好用。缺點是只能在Windows平臺運作。 8、 Python Python是一種腳本語言,可以與C緊密整合。它可以與動態(tài)加載的C庫模塊交換數(shù)據(jù),也可以作為內(nèi)嵌腳本語言而從C中調(diào)用。其語法類似C和模塊化語言的雜合,不過有一個獨一無二的特征,就是以縮進來確定語句塊。 Python語言非常干凈,設(shè)計優(yōu)雅,具有出色的模塊化特性。它提供了面向?qū)ο竽芰?,但不強迫用戶進行面向?qū)ο笤O(shè)計。其類型系統(tǒng)提供了強大的表達能力,類似Perl,具有匿名lambda表達式,這點又讓Lisp黑客們感到親切。Python依靠Tk提供方便的GUI界面開發(fā)能力。 在所有的解釋型語言里,Python和Java最適合多名程序員以漸進方式協(xié)同開發(fā)大型項目。在很多方面,Python比Java要簡單,它非常適合與構(gòu)造快速原型,這一點使得它對于Java有獨特優(yōu)勢:對于那些既不很復雜,又不要求高效率的程序,Python十分合適。 Python的速度沒法跟C/C++相比,不過在今天的高速CPU上,合理地使用混合語言編程策略使得Python的上述弱點被有效地彌補。事實上,Python幾乎被認為是主流腳本語言中最慢的一個,因為它提供了動態(tài)多態(tài)性。在大量使用正則表達式的小型項目,它遜于Perl。對于微型項目而言, shell和Tcl可能更好,Python顯得太過強大了。 總結(jié):Python最出色的地方在于,它鼓勵清晰易讀的代碼,特別適合以漸進開發(fā)的方式構(gòu)造大項目。其缺陷在于效率不高,太慢,不但跟編譯語言相比慢,就是跟其他腳本語言相比也顯得慢。 9、Perl Perl是原本為文本處理而開發(fā)的通用型編程語言,但是自2010年開始,它便廣泛的應用于包括系統(tǒng)管理、網(wǎng)站開發(fā)、網(wǎng)絡(luò)編程、游戲、生物信息學和 GUI開發(fā)等領(lǐng)域。 10、Javascript Javascript是一種基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言,廣泛應用于客戶端web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動態(tài)功能。 此前我在公司實習就主要弄這。有興趣的可以百度下Ajax,Javascript,Jquery,Json,node.js 11、Ruby Ruby是一種動態(tài)、反射、通用、面向?qū)ο蟮木幊陶Z言,結(jié)合了來源于Perl的語法。Ruby在90年代中期起源于日本,最初由松本行弘“Matz”設(shè)計并開發(fā)。 12、 Delphi 此處省略500字。 13、 Lua 百度一下“憤怒的小鳥”用什么語言開發(fā)的你就知道了。我的好友劉世洋童鞋研究過,大家可以向他請教。要此人QQ者,可以聯(lián)系我或直接聯(lián)系其本人,不過此人已心有所屬。
|
|
來自: 聯(lián)合參謀學院 > 《語言編程》