冒号和他的学生们
——程序员提高班纪事
- 编程心法
言者所以在意,得意而忘言
——《庄子·外物》
问号第一个从小说里走出来,问道:“刚才谈到了低级语言和中级语言,现在该谈高级语言了吧?”
冒号微叹:“高级语言大概有近千种,流行的也不下几十种,有时候选择过多反而无所适从啊。”
逗号不以为然:“最流行的不就那么几个:Java、C++、C#还有VB吗?”
不意此言遭到冒号连珠炮似的反问:“可你知道它们为什么会流行吗?是不是学会这几样就是一个合格的程序员了?它们会不会变得不那么流行,甚至被其他语言取代?如果不会,为什么?如果会,又怎么办?”
逗号赧然语塞。
冒号口气放缓:“掌握一门语言的语法、工具和技巧固然重要,但那只相当于学会一门兵器的招法,更重要的当然是心法。招法重形,心法重意。得形而忘意,无异舍本逐末;得意而忘形,方能游刃有余。下面要谈的就是一种心法:编程范式。”
问号不解:“编程范式?听上去很学究,那是什么东东?”
冒号续道:“范式译自英文的paradigm,也有译作典范、范型、范例的。如果说每个编程者都在创造虚拟世界,那么编程范式就是他们置身其中自觉不自觉采用的世界观和方法论。”
叹号吸口气:“好抽象哦!”
句号心中一动:“您是说我们都是虚拟世界的创造者,都在创造自己的黑客帝国?”
大家不禁莞尔。
冒号动情地说:“难道不是吗?只不过帝国有大小之分、优劣之别罢了。当你编程之时,便进入到自己创造的世界之中。这是你的世界,只有注入你的想象力、创造力和激情,它才有勃勃生机。你编写的岂止是代码,分明还有乐曲;你敲击的岂止是键盘,分明还有琴键;你运行的岂止是程序,分明还有世界。当优美的旋律奏起,整个世界都随之翩然起舞,一种莫可名状的满足是否会充溢你的全身?”
大家都被冒号诗化的语言感染了,没想到编程也可以如此感性。
良久,引号试探地问:“面向对象编程就是一种编程范式吧?”
冒号点头:“不错,它是时下最流行的一种编程范式。顺便说一句,‘面向对象’ 译自Object-Oriented,但‘面向’二字令人费解。据说有本书叫‘面向对象方法’,比别的计算机书都畅销,知道为什么吗?不少同学把它当成恋爱指南买走了。”
全班笑倒。
冒号认真地说:“将Object-Oriented译成‘对象导向’,虽然稍嫌拗口,但更贴切。并非刻意要咬文嚼字,这关系到对编程范式的理解。我们知道,编程是为了解决问题,而解决问题可以有多种视角和思路,其中普适且行之有效的模式被归结为范式。由于着眼点和思维方式的不同,相应的范式自然各有侧重和倾向,因此一些范式常用‘oriented’来描述。换言之,每种范式都引导人们带着某种的倾向去分析问题、解决问题,这不就是‘导向’吗?而‘面向’ 的宾语往往是预先确定的目标,如面向世界、面向未来、面向用户、面向问题等等。”
句号一语惊人:“找对象是‘对象导向’的,去约会是‘面向对象’的。”
全班再倒。
句号得意地解释:“按梦中情人的标准去找对象,目标未定但倾向已定,这就是一种导向,而且是对象导向。找到之后再约会,不就面向对象了吗?”
众人称绝。