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

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

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

          1. 語言選擇

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


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

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

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

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

          句號(hào)若有所悟:“所以好的語言就是適合編程者和解決對(duì)象的語言。”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          引號(hào)提出:“好像有些書上把C語言稱為中級(jí)語言。”

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

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

          大家會(huì)心地笑了。

          引號(hào)冷不防冒出一句:“我會(huì)跆拳道哦!”

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

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

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

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

          評(píng)論

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

          引號(hào)突的冒出來說:我會(huì)跆拳道哦  回復(fù)  更多評(píng)論   

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

          @viMory
          多謝,你的臺(tái)詞我已采用  回復(fù)  更多評(píng)論   

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

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

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

          分號(hào)這次純粹支持。  回復(fù)  更多評(píng)論   

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

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

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

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

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

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

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

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

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

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

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

          文筆真不錯(cuò)!!!  回復(fù)  更多評(píng)論   

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

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

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

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          博客搬家:http://blog.zhenghui.org
          《冒號(hào)課堂》一書于2009年10月上市,詳情請(qǐng)見
          冒號(hào)課堂

          留言簿(17)

          隨筆分類(61)

          隨筆檔案(61)

          文章分類(1)

          文章檔案(1)

          最新隨筆

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 阿拉尔市| 龙陵县| 友谊县| 连南| 巴塘县| 横峰县| 石台县| 嘉荫县| 沙田区| 庆元县| 陆丰市| 高雄县| 建始县| 克拉玛依市| 天门市| 六枝特区| 遵化市| 洞头县| 平阴县| 潢川县| 大冶市| 垫江县| 剑川县| 湖州市| 南京市| 定南县| 天台县| 正定县| 疏附县| 射洪县| 石台县| 大埔区| 南召县| 漠河县| 彰化市| 崇义县| 略阳县| 阿拉善右旗| 昭觉县| 凌海市| 宜宾县|