冒號和他的學(xué)生們
——程序員提高班紀事
- 編程心法
言者所以在意,得意而忘言
——《莊子·外物》
問號第一個從小說里走出來,問道:“剛才談到了低級語言和中級語言,現(xiàn)在該談高級語言了吧?”
冒號微嘆:“高級語言大概有近千種,流行的也不下幾十種,有時候選擇過多反而無所適從啊。”
逗號不以為然:“最流行的不就那么幾個:Java、C++、C#還有VB嗎?”
不意此言遭到冒號連珠炮似的反問:“可你知道它們?yōu)槭裁磿餍袉幔渴遣皇菍W(xué)會這幾樣就是一個合格的程序員了?它們會不會變得不那么流行,甚至被其他語言取代?如果不會,為什么?如果會,又怎么辦?”
逗號赧然語塞。
冒號口氣放緩:“掌握一門語言的語法、工具和技巧固然重要,但那只相當于學(xué)會一門兵器的招法,更重要的當然是心法。招法重形,心法重意。得形而忘意,無異舍本逐末;得意而忘形,方能游刃有余。下面要談的就是一種心法:編程范式。”
問號不解:“編程范式?聽上去很學(xué)究,那是什么東東?”
冒號續(xù)道:“范式譯自英文的paradigm,也有譯作典范、范型、范例的。如果說每個編程者都在創(chuàng)造虛擬世界,那么編程范式就是他們置身其中自覺不自覺采用的世界觀和方法論。”
嘆號吸口氣:“好抽象哦!”
句號心中一動:“您是說我們都是虛擬世界的創(chuàng)造者,都在創(chuàng)造自己的黑客帝國?”
大家不禁莞爾。
冒號動情地說:“難道不是嗎?只不過帝國有大小之分、優(yōu)劣之別罷了。當你編程之時,便進入到自己創(chuàng)造的世界之中。這是你的世界,只有注入你的想象力、創(chuàng)造力和激情,它才有勃勃生機。你編寫的豈止是代碼,分明還有樂曲;你敲擊的豈止是鍵盤,分明還有琴鍵;你運行的豈止是程序,分明還有世界。當優(yōu)美的旋律奏起,整個世界都隨之翩然起舞,一種莫可名狀的滿足是否會充溢你的全身?”
大家都被冒號詩化的語言感染了,沒想到編程也可以如此感性。
良久,引號試探地問:“面向?qū)ο缶幊叹褪且环N編程范式吧?”
冒號點頭:“不錯,它是時下最流行的一種編程范式。順便說一句,‘面向?qū)ο?#8217; 譯自Object-Oriented,但‘面向’二字令人費解。據(jù)說有本書叫‘面向?qū)ο蠓椒?#8217;,比別的計算機書都暢銷,知道為什么嗎?不少同學(xué)把它當成戀愛指南買走了。”
全班笑倒。
冒號認真地說:“將Object-Oriented譯成‘對象導(dǎo)向’,雖然稍嫌拗口,但更貼切。并非刻意要咬文嚼字,這關(guān)系到對編程范式的理解。我們知道,編程是為了解決問題,而解決問題可以有多種視角和思路,其中普適且行之有效的模式被歸結(jié)為范式。由于著眼點和思維方式的不同,相應(yīng)的范式自然各有側(cè)重和傾向,因此一些范式常用‘oriented’來描述。換言之,每種范式都引導(dǎo)人們帶著某種的傾向去分析問題、解決問題,這不就是‘導(dǎo)向’嗎?而‘面向’ 的賓語往往是預(yù)先確定的目標,如面向世界、面向未來、面向用戶、面向問題等等。”
句號一語驚人:“找對象是‘對象導(dǎo)向’的,去約會是‘面向?qū)ο?#8217;的。”
全班再倒。
句號得意地解釋:“按夢中情人的標準去找對象,目標未定但傾向已定,這就是一種導(dǎo)向,而且是對象導(dǎo)向。找到之后再約會,不就面向?qū)ο罅藛幔?#8221;
眾人稱絕。