自從計(jì)算機(jī)問(wèn)世,各種編程言語(yǔ)也隨之降生,作爲(wèi)程序猿,Java、Python和C++是必學(xué)的三種編程言語(yǔ),但有時(shí)難免疑惑:這三種言語(yǔ)終究孰優(yōu)孰劣?
那麼無(wú)妨讀一讀這篇文章,用一種別開(kāi)生面的方式爲(wèi)你解答
Java:輕巧靈便的多面手
戰(zhàn)場(chǎng)上的Java語(yǔ)言就像美國(guó)陸戰(zhàn)隊(duì)標(biāo)配M4A1步槍
這種輕巧靈便的武器十分貼合Java容易上手的特性,而且威力強(qiáng)勁,在各種戰(zhàn)場(chǎng)上都能發(fā)揮效用(平臺(tái)獨(dú)立和可跨平臺(tái)賦予Java一次編譯、到處執(zhí)行的特性)各大軍隊(duì)都有配備(是當(dāng)今應(yīng)用最廣泛的語(yǔ)言之一)還有一個(gè)誰(shuí)也不能比擬的優(yōu)勢(shì)(庫(kù)多!庫(kù)多!就是庫(kù)多?。?/p>
不過(guò)射程和殺傷力偏弱,雖然靈活,但是論攻城掠地還是飛機(jī)大炮來(lái)的省事兒。
Python:高性能的重武器
Python被昵稱為膠水語(yǔ)言,能夠把用其他語(yǔ)言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起,是一種高性能的重武器。
Python具有豐富和強(qiáng)大的庫(kù)。應(yīng)用領(lǐng)域也是非常廣泛。而且語(yǔ)言簡(jiǎn)潔,便于讀懂,開(kāi)發(fā)速度快,但因?yàn)閜ython屬于解釋性語(yǔ)言,使用時(shí)由解釋器解釋執(zhí)行,效率會(huì)相對(duì)低。
這玩意兒威力強(qiáng)勁,面對(duì)大型的物體的修整也是游刃有余,不過(guò)對(duì)于一些精細(xì)的調(diào)優(yōu)工作,反倒是力有余而心不足。
所以常見(jiàn)的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對(duì)其中有特別要求的部分,用更合適的語(yǔ)言改寫。
比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫(kù)
C++:功能齊全的大殺器
其實(shí)C++很像瑞士軍刀,而且是其中的巨人軍刀。
這把刀什么都有,說(shuō)明C++是一種功能繁多的語(yǔ)言,能應(yīng)付各種情況;細(xì)致齊全,說(shuō)明C++是能做細(xì)活的語(yǔ)言,但相應(yīng)過(guò)多的工具,也意味著操作更為復(fù)雜。
要是換成戰(zhàn)場(chǎng)上的武器,C++估計(jì)長(zhǎng)這樣——
一看這只在科幻電影里面出現(xiàn)過(guò)的造型就知道威力不一般了。C++真的是一種很強(qiáng)大的語(yǔ)言,高性能且靈活(指針,地址,二維指針,指針數(shù)組),而C++繼承C的簡(jiǎn)潔、高效的特點(diǎn)。
提到C++就不能不提到C,C是C++的基礎(chǔ),C語(yǔ)言是一種結(jié)構(gòu)化語(yǔ)言。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。
C語(yǔ)言的表現(xiàn)能力和處理能力極強(qiáng)。它不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問(wèn)內(nèi)存的物理地址,進(jìn)行位(bit)一級(jí)的操作,當(dāng)然編譯效率高也是它的一大優(yōu)點(diǎn)。
C++對(duì)C的類型系統(tǒng)進(jìn)改革擴(kuò)充,更加安全也能檢查出更多類型錯(cuò)誤。更重要的是C++支持面向?qū)ο蟮姆椒?,它所支持的這些面向?qū)ο蟮母拍钊菀讓?wèn)題空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計(jì)不同的思維方式和編程方法。因而也增加了整個(gè)語(yǔ)言的復(fù)雜性,掌握起來(lái)有一定難度。
而這種強(qiáng)大的語(yǔ)言,確實(shí)已經(jīng)在軍用領(lǐng)域運(yùn)用——譬如美國(guó)F-35戰(zhàn)機(jī)的戰(zhàn)斗系統(tǒng)
我們可以看一組數(shù)據(jù):
△ 7% 匯編、5% Ada83、35% C++、53% C
wikipedia 詞條中也有關(guān)于 F-35 軟件所用編程語(yǔ)言的介紹:
可以看到,F(xiàn)-35 用到的編程語(yǔ)言,C/C++占了相當(dāng)大的比重。

其實(shí)無(wú)論武器有多么強(qiáng)大,決定戰(zhàn)爭(zhēng)勝敗的還是使用武器的人;無(wú)論編程語(yǔ)言多么的強(qiáng)大,決定程序好壞的也是編程的人。也只有不斷強(qiáng)化自身水平,才能更好的駕馭這些的編程武器。