<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    冒號和他的學(xué)生們(連載17)——語言討論

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

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

    17.語言討論

    因了解而喜愛,因無知而憎惡                                                            ——題記


    教室里,學(xué)員們正熱火朝天地討論著流行的編程語言。冒號推門而入,沸水鍋被澆了一瓢冷水,立刻平靜下來。

    冒號笑吟吟地看著大家:“怎么不討論了?”

    眾人齊道:“該您了!”

    “首先需要聲明的是,本課評論編程語言,乃是應(yīng)眾位之邀,實(shí)非本意。”冒號嚴(yán)肅起來,“因?yàn)檫@種評論,不可避免地會帶上個人色彩,容易產(chǎn)生誤導(dǎo)。正所謂,通禪悟道者拈花不語,坐井觀天者蛙鳴鼓噪。

    眾人迅速自動對號:看來我們就是一群蛤蟆。

    “這樣一來,我的處境就很尷尬了。”冒號自嘲著。

    有人在幸災(zāi)樂禍地偷笑。

    “也罷,即使作蛙鳴,至少也要先跳出井來。”冒號毅然決然地加入了蛤蟆的行列,“要談,就旗幟鮮明地談,該贊嘆的就贊嘆,該鄙視的就鄙視。說些你好我好大家好之類不痛不癢的話,倒不如不說。”

    嘆號一拍大腿:“好,這樣才夠痛快!”

    冒號啟開話題:“如果說編程范式是一種文化,那么編程語言更像是一種宗教——盡管它本不該是。每種語言都有大批忠實(shí)的信徒,隨時可能與其他的信徒發(fā)生宗教戰(zhàn)爭。”

    逗號深有同感:“周圍和網(wǎng)上關(guān)于語言的爭論從來不絕于耳,志不同道不合者動輒惡語相向。”

    冒號有些忿忿然:“這些信徒或準(zhǔn)信徒們認(rèn)為他們所崇拜的語言鶴立雞群,遠(yuǎn)比其他語言高明得多,恨不得成為全天下程序員的通用語言。對其他語言的使用者,或居高臨下地同情,或不屑一顧地譏諷。無知與偏見總是相輔相成的,他們中的絕大多數(shù)頂多熟悉一兩種語言,其他的或淺嘗輒止、或道聽途說,卻敢妄評優(yōu)劣,豈不可笑之極?”

    引號點(diǎn)頭稱是:“是啊,沒有深入的了解,怎會有深入的比較。只是真正掌握好一門語言已殊為不易,同時掌握幾種就更難。學(xué)完一種語言再看另一種,總覺得別扭。”

    “這就是第一堂課所說的‘學(xué)會’與‘會學(xué)’的差距。”冒號挑明,“每種語言都有天然設(shè)計(jì)上的不同,當(dāng)你用得很別扭時,恰恰說明沒有真懂。正如刀法以劈為主,槍法以扎為主,你若反其道而行之,刀扎槍劈,怎不別扭?如果愣拿雙節(jié)棍當(dāng)單節(jié)棍使,恐怕沒砸到別人先砸暈自己了。可見不是兵器問題,而是招法問題。”

    下面隱約傳來周杰倫《雙節(jié)棍》的調(diào)子。

    問號注意到:“似乎不只是初學(xué)者,大師們也會對一些語言提出過尖銳的批評。”

    冒號引用道:“C++的發(fā)明者Bjarne Stroustrup說過這樣一句話,語言只有兩種:一種怨聲載道,一種無人問津。”

    眾笑。

    句號有所體會:“一種語言如果用者甚眾,自有其可取之處。沒有一種語言是完美的,愛之深者尚苛之切,何況其余者乎?”

    冒號忽然問:“你們知道對一種語言最大的批判是什么嗎?”

    眾人紛紛搖頭。

    “那就是發(fā)明一種與此語言有類似功用的新語言。”冒號語速放緩,“Stroustrup認(rèn)為Simula太慢、BCPL又太底層,于是發(fā)明了C++Gosling覺得C++用得不爽,于是發(fā)明了Java;微軟惱恨Java,于是請Hejlsberg發(fā)明了C#Matsumoto用了兩年多的C++仍不順手,于是發(fā)明了Ruby。如此這般,不一而足。”

    嘆號無奈地說:“那是牛人的批評方法,常人怎能辦到?”

    “沒有能力發(fā)明語言,就老老實(shí)實(shí)地用別人的吧。”冒號酷酷地說,“對待一門語言的態(tài)度應(yīng)該是:與其抱怨?fàn)巿?zhí),不如揚(yáng)長避短。”

    引號順勢道:“按這種說法,編程語言的發(fā)展史就是一種批判史咯?”

    冒號祭起辯證法:“從另一個角度看,發(fā)明一種語言也是對先前語言的一種最高的贊美。C++之于CJava之于C++C#之于Java,都是后者對前者的一種承認(rèn),哪怕是不情愿的承認(rèn)。批判與贊美,繼承與發(fā)展,謂之揚(yáng)棄。”

    眾人心想,語言課又改哲學(xué)課了。

    冒號續(xù)道:“對于編程語言還有一種論調(diào):語言只是一種工具,哪種都差不多。”

    逗號接茬:“是啊,經(jīng)常在論壇上看到一些高手這么說。”

    “一群偽高手,是工具就差不多?能拿錘子當(dāng)?shù)妒箚幔?#8221;冒號嗤之以鼻,“過分拔高一種語言與抹煞語言之間的差別是兩種極端,皆為秕言謬說。圖靈獎獲得者Alan Perlis曾說:如果一種語言不能影響你對編程的看法,那么就不值得去了解。試想,一種沒有獨(dú)特魅力的語言如何吸引程序員趨之若騖?了解這些獨(dú)特之處對于編程往往至關(guān)重要,如果沿襲以前語言的做法,會顯得不倫不類甚至可能鑄成大錯。”

    問號要求:“能具體點(diǎn)嗎?”

    冒號舉例:“有人說,學(xué)C++要先學(xué)C;還有人說,學(xué)會了CC++就不在話下了。”

    嘆號一驚:“難道不是嗎?”

    冒號解釋:“其實(shí)C++的真正來源是Simula而不是C,向下兼容C只是因?yàn)?/span>C效率高、普及廣。換句話說,C++C形同而神異。學(xué)會了C當(dāng)然對C++有一定幫助,但若不能理解C++OOP思想,那么C的背景反而是一種障礙。”

    逗號想當(dāng)然:“C++Java都是OO語言,差別該不大了吧?”

    冒號再次否定:“一個純粹的C++程序員用Java編程,會非常不習(xí)慣沒有指針運(yùn)算、沒有內(nèi)存控制、沒有運(yùn)算符重載、沒有自由函數(shù)等等。一個純粹的Java程序員用C++編程,會極度不適應(yīng)相對貧乏的標(biāo)準(zhǔn)庫;會困惑于指針、引用、數(shù)組、字符串還有頭文件等的用法;會毫不吝惜地在堆(heap)上創(chuàng)建新對象,并且從來不去釋放它們。這些概念或用法都是貫穿整個程序始終的,差別能不大嗎?”

    嘆號聽罷嘆曰:“做一個好的程序員還真不容易。”

     “如果容易,我們開這個班做什么?”冒號笑道,“提一個問題,程序員最不能離開的應(yīng)用軟件是什么?”

    逗號順嘴道:“當(dāng)然是IDE了。”

    引號糾正:“應(yīng)該是編輯器,有些程序員用vi甚至記事本來寫程序。”

    冒號插一句:“有人還在命令行下寫程序。”

    嘆號眼瞪得溜圓:“怎么可能?”

    冒號眉毛一挑:“當(dāng)然可能,一些簡單的程序完全可以在命令行下完成,然后重定向(redirect)到一個文件中或直接編譯執(zhí)行。這種情況雖有些極端,對于那些沒有IDE就沒法編程的人來說更是不可思議,但至少說明離開編輯器還是有可能的。”

    句號突然明白了:“是編譯器!”

    “不錯,編譯器或解釋器。”冒號作了一點(diǎn)修正。

    問號有點(diǎn)茫然:“為什么談這個呢?”

    “因?yàn)榫幾g器或解釋器是語言實(shí)現(xiàn)的標(biāo)志。”冒號提高了聲調(diào),“我想借此強(qiáng)調(diào):對于一個程序員來說,語言為本,余者為末。許多人偏偏本末倒置,常常為在IDE、框架、設(shè)計(jì)工具等中挖掘到某一新功能而欣喜不已,或者津津樂道于各種語言的優(yōu)劣高下,卻對正在使用的語言中大量的寶藏視而不見。這些人若有幸拜關(guān)公為師,他們最艷羨的一定他的赤兔馬和青龍偃月刀,或許還會抹紅臉蓄長須什么的,就是不太愿學(xué)他的蓋世武功。”

    引號質(zhì)疑:“您似乎有些唯語言論,設(shè)計(jì)思想不是更重要嗎?”

    冒號補(bǔ)充道:“我所談的語言,當(dāng)然不是孤立的語法和用法,也包括語言背后的編程范式和設(shè)計(jì)思想。”

    問號仍有疑惑:“語言真那么重要嗎?IDE的一些集成工具可以輔助生成許多代碼,或許到了某一天,拖拖鼠標(biāo)、畫個UML類圖之類的,程序就大功告成了。”

    冒號哈哈一笑:“這不就是元編程嗎?元編程也是用語言實(shí)現(xiàn)的。且不說你描繪的美景是否可能,即便實(shí)現(xiàn)了,程序員的任務(wù)也是用更高級的語言做更高級的編程——還是離不開語言。別忘了,技術(shù)含金量是與工資含金量成正比的,你永遠(yuǎn)需要比別人多一門扎實(shí)的功夫。程序員這門職業(yè),你選擇,你擔(dān)當(dāng)。好了,閑話少說,下面我們該討論一些具體的語言了。”

    posted on 2008-06-01 13:09 鄭暉 閱讀(2458) 評論(5)  編輯  收藏 所屬分類: 冒號和他的學(xué)生們

    評論

    # re: 冒號和他的學(xué)生們(連載17)——語言討論 2008-07-01 15:01 姓巫的

    嗨,你的文筆如此生動活潑,如此行云流水,若不寫它三五本書我實(shí)在為你覺得惋惜!  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載17)——語言討論 2008-08-05 16:54 leweslove

    你以前是大學(xué)語文教授嗎?  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載17)——語言討論 2008-08-05 17:01 鄭暉

    @leweslove
    你猜對了一半——在大學(xué)教的不是語文,當(dāng)然也不是計(jì)算機(jī),而是數(shù)學(xué)。  回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載17)——語言討論 2008-08-06 10:34 leweslove

    @鄭暉
    現(xiàn)在還是嗎?感覺你文筆挺好的。
      回復(fù)  更多評論   

    # re: 冒號和他的學(xué)生們(連載17)——語言討論 2008-08-07 14:02 鄭暉

    @leweslove
    那都是上個世紀(jì)的事了。  回復(fù)  更多評論   

    導(dǎo)航

    統(tǒng)計(jì)

    公告

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

    留言簿(17)

    隨筆分類(61)

    隨筆檔案(61)

    文章分類(1)

    文章檔案(1)

    最新隨筆

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久亚洲AV无码精品色午夜麻| h片在线播放免费高清| 亚洲成AV人片在线观看ww| 日本高清免费aaaaa大片视频| 一级做a爰全过程免费视频| 一级特黄色毛片免费看| 亚洲日韩亚洲另类激情文学| 久久精品亚洲综合专区| 青青草原亚洲视频| 国产午夜鲁丝片AV无码免费| av无码久久久久不卡免费网站| 免费高清国产视频| 成人免费一区二区三区| 一级一片免费视频播放| 边摸边吃奶边做爽免费视频99| 亚洲精华国产精华精华液网站| 亚洲网站免费观看| 亚洲综合久久综合激情久久| 国产成人亚洲综合色影视| 亚洲午夜AV无码专区在线播放| 波多野结衣一区二区免费视频| 免费黄网在线观看| 四虎影视免费在线| 卡一卡二卡三在线入口免费| 114一级毛片免费| 色se01短视频永久免费| 97国产在线公开免费观看| 亚洲免费精彩视频在线观看| 国产高清不卡免费视频| 国产麻豆成人传媒免费观看| 免费a级毛片无码a∨免费软件| 在线视频网址免费播放| a级毛片在线视频免费观看| 久久久久女教师免费一区| 久久国产精品免费一区二区三区| 无遮挡国产高潮视频免费观看| 无码的免费不卡毛片视频| 国产美女视频免费观看的网站 | 中文无码日韩欧免费视频| igao激情在线视频免费| 99热在线日韩精品免费|