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

          冒號和他的學生們

          ——程序員提高班紀事

          1. 語言選擇

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


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

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

          期待的目光如風中之燭般開始黯淡。

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

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

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

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

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

          逗號依然困惑:“我們如何判斷一種語言是否適合自己,是否適合解決對象呢?”

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

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

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

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

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

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

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

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

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

          大伙心里話,敢情來這兒不是學編程,是學武術的。

          嘆號說道:“我看還是高級語言好,現在誰還學低級語言啊?”

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

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

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

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

          大家會心地笑了。

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

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

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

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

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

          評論

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

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

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

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

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

          寫的很好,尤其針對初學者,期待更新.  回復  更多評論   

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

          分號這次純粹支持。  回復  更多評論   

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

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

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

          很有味道,繼續關注  回復  更多評論   

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

          按這個邏輯vim,emacs算什么
          內力?  回復  更多評論   

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

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

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

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

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

          文筆真不錯!!!  回復  更多評論   

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

          大有所獲......  回復  更多評論   

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

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

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

          導航

          統計

          公告

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

          留言簿(17)

          隨筆分類(61)

          隨筆檔案(61)

          文章分類(1)

          文章檔案(1)

          最新隨筆

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新津县| 吴旗县| 顺平县| 迭部县| 隆回县| 河西区| 南宫市| 遂溪县| 自贡市| 高要市| 宁都县| 芮城县| 拜城县| 商河县| 绥芬河市| 高尔夫| 龙门县| 凤城市| 东兰县| 依兰县| 安龙县| 桦南县| 康马县| 宣城市| 金昌市| 塘沽区| 太仓市| 陇川县| 历史| 湖州市| 鄂州市| 乐山市| 八宿县| 离岛区| 陵川县| 昌吉市| 龙陵县| 樟树市| 即墨市| 延边| 波密县|