資源描述:
《主流編程語言優(yōu)劣比較》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、主流編程語言優(yōu)劣整理收集自:P57效果(www.52slimmer.com)這里,我將比較一下幾種主流編程語言:C,C++,Java,.NET,Ruby,JavaScript。其他主流編程語言,如Pascal,Delphi,我不太熟悉。希望熟悉的朋友能夠補(bǔ)全對(duì)這些語言的評(píng)價(jià)。至于Basic,它的版本差異很大,而且能力不太全面,這里也不做評(píng)價(jià)。語言特性對(duì)比表????????????????C??????????C++????????Java??????????.NET????????Ruby????????????JavaScript類型????????無類型??????
2、強(qiáng)類型??????強(qiáng)類型????????強(qiáng)類型??????強(qiáng)類型????????強(qiáng)類型靜態(tài)/動(dòng)態(tài)??????靜態(tài)????靜態(tài)??靜態(tài)檢驗(yàn)類型動(dòng)態(tài)解釋執(zhí)行??????動(dòng)態(tài)????????動(dòng)態(tài)支持面向過程??是????????是??????????????否????????????否??????????????否??????是支持基于對(duì)象??否????????是??????????????否????????????是??????????????是??????是支持范型??????否????????否??????????????是????????????是??????????
3、????否??????否支持模板??????否??????????是??????????????否????????????否??????????????否??????否支持面向?qū)ο??否????????是????????????是????????????是??????????????否????????否可能你對(duì)于我這樣的語言評(píng)價(jià)有些疑問,請(qǐng)首先看我的另一篇文章基于對(duì)象和面向?qū)ο缶幊谭妒奖嫖龊椭髁骶幊陶Z言中的應(yīng)用??理清相關(guān)的概念。我對(duì)與面向?qū)ο蠛突趯?duì)象的定義和流行的定義不太一樣。C語言優(yōu)劣考C語言由來讓我們先回顧一下歷史。電腦使用CPU指令,通過寄存器,內(nèi)存等物件執(zhí)行
4、計(jì)算。最早的編程,是直接使用代表CPU指令的機(jī)器碼編寫的。直接使用二進(jìn)制的數(shù)據(jù)編程,當(dāng)然很容易出錯(cuò)。于是,人們后來發(fā)明了一種方法,就是使用英語單詞作為助記符,代表各條CPU指令。這就是匯編語言?,F(xiàn)在,程序員可以使用英語單詞進(jìn)行編程,然后使用一個(gè)解釋程序,把匯編指令翻譯成機(jī)器語言,再交給計(jì)算機(jī)執(zhí)行。1970年,UNIX操作系統(tǒng)的研制者丹尼斯·里奇(DennisRitchie)和肯·湯普遜(KenThompson)為了更好地編寫操作系統(tǒng),發(fā)明了C語言。C語言比匯編語言更先進(jìn)。它使用了面向過程的編程范式。同時(shí)它仍是一門十分接近匯編語言,面向機(jī)器的編程語言。適合編寫操作系統(tǒng)和其
5、他直接操縱硬件硬件的編程。面向過程編程范式下面是我查到的過程式設(shè)計(jì)的定義:過程式設(shè)計(jì):1、自上而下(top-down)的設(shè)計(jì)方式:是一個(gè)自頂向下,逐步求精的過程;2、以main函數(shù)概括出整個(gè)應(yīng)用程序需要做的事情,而main函數(shù)由對(duì)一系列的子函數(shù)的調(diào)用組成;??????main中的每一個(gè)子函數(shù)都可以被精煉成更小的函數(shù)。重復(fù)這個(gè)過程,即可完成一個(gè)過程式的設(shè)計(jì);3、特征是以函數(shù)為中心,以函數(shù)作為劃分程序的基本單位,數(shù)據(jù)往往處于從屬地位。過程式設(shè)計(jì)的優(yōu)點(diǎn):易于掌握與理解,符合人們的思維習(xí)慣;過程式設(shè)計(jì)的缺點(diǎn):1、不能適應(yīng)問題比較復(fù)雜,或者需求經(jīng)常變化的情況;2、數(shù)據(jù)與操作分離開
6、,對(duì)數(shù)據(jù)與操作的修改變得很困難;3、程序架構(gòu)的依賴關(guān)系不合理:main函數(shù)依賴于子函數(shù),子函數(shù)又依賴于更小的子函數(shù);????而子函數(shù)往往是細(xì)節(jié)的實(shí)現(xiàn),這些實(shí)現(xiàn)是經(jīng)常變化的,造成的結(jié)構(gòu)就是:????程序的核心邏輯依賴于外延的細(xì)節(jié),一個(gè)細(xì)節(jié)上的小改動(dòng),會(huì)引起一系列的變動(dòng)。我對(duì)于面向過程編程范式是這樣理解的:面向過程編程,就是使用函數(shù)代表處理的過程。這些函數(shù)使用的數(shù)據(jù),要么是參數(shù),要么是外部的數(shù)據(jù)。使用函數(shù)編程,這看上去很像函數(shù)式編程。但面向過程的編程范式不同于函數(shù)式編程。函數(shù)式編程的函數(shù),一般不使用外部的數(shù)據(jù)。不維持外部的狀態(tài)。這有很多優(yōu)點(diǎn),但也同樣有了很大的局限性,不似面
7、向過程編程這樣方便。C語言就是典型的面向過程編程語言。它通過函數(shù)抽象了過程處理。函數(shù),就是C語言的接口。C語言中,數(shù)據(jù)常常作為全局的變量保存起來。這樣,使用C語言編程就很難保證其他代碼不破壞函數(shù)依賴的數(shù)據(jù)的狀態(tài)。這是C++基于對(duì)象編程范式出現(xiàn)的原因。這個(gè)我們稍后再說。我們?cè)倏纯碈語言對(duì)機(jī)器指令的抽象。C語言是一門十分接近匯編語言的語言。所以有人說C語言既是一門高級(jí)語言(面向過程,函數(shù)),也是一門低級(jí)語言(面向機(jī)器,直接反映計(jì)算機(jī)的實(shí)際計(jì)算過程)。C語言使用原生類型,數(shù)組,Struct等來表示數(shù)據(jù)。C語言中,數(shù)據(jù)在內(nèi)存中的表示是十分確定的。