冒號和他的學(xué)生們(連載3)——語言選擇

          冒號和他的學(xué)生們

          ——程序員提高班紀(jì)事

          1. 語言選擇

          尺有所短,寸有所長                                                                ——《楚辭》


          問號覺得自己的問題并未解決,追問:“這么多種語言,僅憑流行度就能分出主次優(yōu)劣嗎?”

          “流行度當(dāng)然不是唯一的指標(biāo)。”冒號答道,“語言的主次優(yōu)劣因人而異,答案在你們自己身上。還是剛才那句話,唯一的老師是你自己。”

          期待的目光如風(fēng)中之燭般開始黯淡。

          冒號接著說:“評書里名師授藝時,常常要徒弟自己挑選稱手的兵器。威武的刀,靈活的槍,飄逸的劍,渾厚的棍,粗獷的斧,霸道的錘,詭異的鞭,無不諳合武者的個性。評判語言優(yōu)劣,如同爭論兵器高下,倘若撇開使用的主體和對象,皆為空泛之談。”

          句號若有所悟:“所以好的語言就是適合編程者和解決對象的語言。”

          “非常正確!”冒號贊許道:“這就是問號同學(xué)要的答案。”

          引號并不滿足:“可我記得評書里經(jīng)常描述高手的一句話­:十八般兵器樣樣精通。”

          冒號一笑:“兵器雖多,其理相通,高手精通多種兵器何足為奇?但如果讓趙云使錘,李元霸使槍,武力恐怕還是要大打折扣吧?”

          逗號依然困惑:“我們?nèi)绾闻袛嘁环N語言是否適合自己,是否適合解決對象呢?”

          冒號看出大家共同的疑惑,不緊不慢地說:“要想從中選擇,自然先得了解,不然怎知兵器稱不稱手,合不合用?現(xiàn)在進(jìn)入正題,我們先對計算機(jī)語言作個簡要的回顧。”

          大伙均想,總算要撓著癢處了。

          “計算機(jī)語言是人用來指揮計算機(jī)的語言,按其發(fā)展歷程通常分為五代。”冒號說完在黑板上寫下——

          第一代語言(1GL):機(jī)器語言

          第二代語言(2GL):匯編語言——IA-32 AssemblySPARC Assembly

          第三代語言(3GL):高級語言——FortranPascalCJavaVB

          第四代語言(4GL):面向問題語言­——SQLSASSPSS

          第五代語言(5GL):人工智能語言——PrologMercuryOPS5

          冒號補充道:“也可簡單地將前兩代統(tǒng)稱為低級語言,其他的統(tǒng)稱為高級語言。語言從低級到高級,離機(jī)器語言更遠(yuǎn),離人類語言更近,因而更易讀寫、調(diào)試和維護(hù),安全性、通用性和可移植性更強,開發(fā)效率更高,更加抽象和宏觀;但同時運行速度和效率下降,用法和功能上局限性更大。如果拿兵器作比,高級語言好比長兵器,威力強大卻難免滯重,長于大型應(yīng)用,可謂‘一寸長,一寸強’;低級語言好比短兵器,輕便靈活卻難免風(fēng)險,長于底層應(yīng)用,可謂‘一寸短,一寸險’。”

          大伙心里話,敢情來這兒不是學(xué)編程,是學(xué)武術(shù)的。

          嘆號說道:“我看還是高級語言好,現(xiàn)在誰還學(xué)低級語言啊?”

          冒號糾正道:“低級語言并不低級,只是隨著高級語言的出現(xiàn),計算機(jī)硬件性能的提高,漸漸有些邊緣化了。雖然幾乎沒有人用機(jī)器語言編程了,匯編語言仍有其用武之地。常見的有:包括嵌入式系統(tǒng)在內(nèi)的系統(tǒng)開發(fā),如操作系統(tǒng)、編譯器、驅(qū)動程序、無線通訊、DSPPDAGPS等;其他對資源、性能、速度和效率極為敏感的軟件開發(fā);以信息安全、軟件維護(hù)與破解等為目的的逆向工程等等。即使你不打算從事系統(tǒng)開發(fā),也不想作紅客、黑客或駭客,掌握匯編語言對你深入了解計算機(jī)內(nèi)部運行機(jī)制、調(diào)試軟件和改進(jìn)程序中某些關(guān)鍵代碼的算法也是有幫助的。”

          引號提出:“好像有些書上把C語言稱為中級語言。”

          冒號答道:“這是因為C兼具高級語言和低級語言的特征。一方面它提供了高層抽象和可移植性,使程序員更多地專注問題邏輯而不是機(jī)器邏輯;另一方面它也提供諸如指針、位字段(bitfield)等工具進(jìn)行底層操作,甚至可直接內(nèi)嵌匯編代碼。C語言既簡潔靈活又高效強大,是迄今為止最具影響力的語言。幾乎所有的操作系統(tǒng)和大多數(shù)高級語言都用它來實現(xiàn),C家族的語言CC++JavaC#DObjective C等占據(jù)主流語言的半壁江山。如果再拿兵器作比,C語言就是一把劍,輕靈飄逸、銳利快捷。一名武將無論擅用什么兵器,往往都會腰懸寶劍。不會C的程序員正如不會使劍的武將,無論如何都是一種缺憾。相比之下,匯編語言就像小刀匕首,而機(jī)器語言則近乎赤手空拳了。”

          句號靈光一閃:“我明白了——西門吹雪的西來一劍,那是C語言;李尋歡的小李飛刀,那是匯編語言;陸小鳳的靈犀一指,那是機(jī)器語言。”

          大家會心地笑了。

          引號冷不防冒出一句:“我會跆拳道哦!”

          句號一樂:“哈哈,等你打贏了陸小鳳,就封你為機(jī)器語言。”

          冒號也笑言:“這位是古龍的粉絲吧?武俠小說里的俠客多輕功高絕且喜單打獨斗,故使用輕、短兵器居多;而歷史小說里的戰(zhàn)將多騎馬進(jìn)行大規(guī)模作戰(zhàn),故除了佩劍外,使用重、長兵器居多。這就是前面提到的,中低級語言更適合中小型或底層應(yīng)用,高級語言更適合大型應(yīng)用。”

          眾人活躍起來,開始議論紛紛。冒號放耳聽去,凈是些古龍金庸、三國水滸里的人物,暗想:通俗小說到底比編程吸引人啊。

          posted on 2008-05-02 09:35 鄭暉 閱讀(3516) 評論(12)  編輯  收藏 所屬分類: 冒號和他的學(xué)生們

          評論

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-05-02 14:44 viMory

          引號突的冒出來說:我會跆拳道哦  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-05-02 15:58 鄭暉

          @viMory
          多謝,你的臺詞我已采用  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-05-02 22:26 herowzz

          寫的很好,尤其針對初學(xué)者,期待更新.  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇[未登錄] 2008-05-03 03:42 閑耘

          分號這次純粹支持。  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-05-08 19:16 鄭暉

          @家族主頁
          請勿在此貼廣告,抱歉刪貼。  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-05-11 10:21 Happy漫步者

          很有味道,繼續(xù)關(guān)注  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-05-13 20:05 abyss

          按這個邏輯vim,emacs算什么
          內(nèi)力?  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-05-13 21:07 鄭暉

          @abyss
          編程最終靠語言來解決問題,因此語言可類比兵器。對語言的掌控能力或許與內(nèi)力相仿。至于vim、emacs等是編輯器,與其他的IDE一樣只是輔助工具,不妨理解為常用的非殺傷性裝備。  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-06-12 14:13 wanglidhx

          繼續(xù)戰(zhàn)爭之談,就目前的現(xiàn)代化技術(shù)戰(zhàn)爭形勢,IDE或許是戰(zhàn)爭的重要組成部分,是重量級武器裝備,可以放出很多銀彈,能快速有效的結(jié)束戰(zhàn)爭,這也是一個趨勢,需要更多的武林高手擔(dān)當(dāng)起制造必要的武器裝備的重任,讓我之類的人能輕松的從事開發(fā)工作。  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-06-25 13:09 zwd

          文筆真不錯!!!  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2008-08-04 14:55 brian-17

          大有所獲......  回復(fù)  更多評論   

          # re: 冒號和他的學(xué)生們(連載3)——語言選擇 2009-02-16 11:04 rmn190

          "幾乎所有的操作系統(tǒng)和大多數(shù)高級語言都用它來實現(xiàn),C家族的語言C、C++、Java、C#、D、Objective C等占據(jù)主流語言的半壁江山。如果再拿兵器作比,C語言就是一把劍,輕靈飄逸、銳利快捷。一名武將無論擅用什么兵器,往往都會腰懸寶劍。不會C的程序員正如不會使劍的武將,無論如何都是一種缺憾。相比之下,匯編語言就像小刀匕首,而機(jī)器語言則近乎赤手空拳了"

          比喻精妙,形象生動.  回復(fù)  更多評論   

          導(dǎo)航

          統(tǒng)計

          公告

          博客搬家:http://blog.zhenghui.org
          《冒號課堂》一書于2009年10月上市,詳情請見
          冒號課堂

          留言簿(17)

          隨筆分類(61)

          隨筆檔案(61)

          文章分類(1)

          文章檔案(1)

          最新隨筆

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 敦化市| 芒康县| 白银市| 怀化市| 米脂县| 毕节市| 莲花县| 蓬溪县| 疏勒县| 青冈县| 河池市| 滦平县| 锦州市| 大田县| 阿图什市| 莱芜市| 安乡县| 宜章县| 府谷县| 桃江县| 安图县| 平阴县| 松原市| 沿河| 通渭县| 全州县| 从江县| 龙泉市| 化隆| 永德县| 交口县| 汶川县| 瑞金市| 祁连县| 肥西县| 綦江县| 阳高县| 辉县市| 天全县| 宁夏| 通州市|