《冒号课堂:编程范式与OOP思想》摘抄

掌握一门语言的语法、工具和技巧固然重要,但那只相当于学会一门兵器的招法,更重要的当然是心法。招法重形,心法重意。得形而忘意无异舍本逐末;得意而忘形,方能游刃有余。

 

编程之时,你便进入自己创造的世界之中。这是你的世界,只有注入你的想象力、创造力和激情,它才有勃勃生机。你编写的岂止是代码,分明还有乐曲;你敲击的岂止是键盘,分明还有琴键;你运行的岂止是程序,分明还有世界。当优美的旋律奏起,整个世界都随之翩然起舞,一种莫可名状的满足是否会充溢你的全身?

 

找对象是“对象导向”的,去约会是“面向对象”的。按梦中情人的标准去找对象,具体目标未定但选择倾向已定,这就是一种导向,而且是对象导向。找到之后再约会,不就面向对象了吗?

 

语感是一个人对语言的敏锐感知力,反映了他在语言方面的整体上的直觉把握能力。语感强者,能听弦外之音,能说双关之语,能读隽永之作,能写晓畅之文。这是一种综合的素质和修养,其重要性是不言而喻的。那么如何培养语感呢?普通的学习和训练固不可少,但如果忽视语言背后的文化背景和语言方式,终究只是缘木求鱼。

 

OO程序的世界是民主制的,所有对象都是独立而平等的公民,有权维护自己的财产和隐私并向他人寻求服务,同时有义务为他人提供承诺的服务,公民之间通过信息交流来协作完成各种任务。更进一步地,封装使得公民拥有个体身份,须要对个体负责;继承使得公民拥有家庭身份,须要对家庭负责;多态使得公民拥有身份,须要对社会负责。

 

算法串联数据,如脊贯肉;数据实化算法,如肉附脊;

 

编程范式各擅胜场,有风格之别而无高下之分。作文绘画讲究形神兼备,编程也不例外。语言为形,范式为神。若能以神导行,以形传神,则看似平白无趣的程序也能写出诗画般的意境。

 

编程水平的提升之道是:在实战中演练招法,在招法中领会心法,心法反过来提升招法,进而提高实战水平,如此循环往复呈螺旋式上升过程。正所谓熟能生巧,巧能生通。

 

无论干哪一行,要想胜任愉快,离不开4样东西:才能、兴趣、方法和努力。没有才能则难以胜任,没有兴趣则难以愉快,没有方法则事倍功半,没有努力则一事无成。

 

当脚本语言披上动态语言的彩衣,昔日不起眼的毛毛虫便羽化成蝶,开始翩舞在众人追逐的目光之中。但静态语言也绝不会淡出人们的视线,它如矫健的苍鹰,依然有搏击长空的雄力。程序员只要保持严谨的作风和开放的心态,既有稳如泰山的马步,又有一跃长空的飞腿,静如处子,动如脱兔,如履平地般游走于高高的梅花桩上,绝无跌落之虞。

 

从心里学上分析,一个人在某种观点形成之后,会通过自我的暗示和倾向性的证据不断地强化这种观点,并对其他观点本能地选择性失明。这背后折射的其实是一种懒人的心态——认定自己的语言是最好的,便不必费事再学其他语言了;这更是一种弱者的心态——无论是耿耿忠心的铁杆卫士,还是振振有词的辩护律师,一旦丧失自我批判的勇气和精神,声嘶力竭的挞伐只能反正他们的偏狭浅薄和自信缺失。

 

C++的发明者Bjarne Stroustrup说过这样一句话,语言只有两种:一种怨声载道,一种无人问津(There are only two kinds of languages : the ones people complain about and the ones nobody uses)

 

通禅悟道者拈花不语,坐井观天者蛙鸣鼓噪。

 

学好C一本书足矣,学好C++即使推荐十本书仍有遗珠之憾。可以说C++是苦了编程者,甜了著书人。开个小数单:初级——《C++ Primer》和《Thinking in C++》;中级——《The C++ Programming Language》和《Effective C++》系列;高级——《The C++ In-Depth》系列。这里还要特别推荐一下《The Design and Evolution of C++》,从中你可以看到C++的设计和演变的来龙去脉,极具启发性。C++是匹无辔无鞍的野马,看似桀骜不驯,若能顺行而御,必能足踏飞燕,行千里而不劳。

 

待友之道,贵在放大其优点而缩小其缺点,对待语言亦当如此。这既是一种态度,也是一种境界。

 

每种编程语言都有其独特的惯例用法和哲学理念,它们与编程范式一道形成了语言的编程风格。体悟愈深者编程语感愈强,思维与语言愈交融无碍,渐从必然王国走向自由王国。

 

没有最好的语言,只有最合适的语言。

 

没有糟糕的语言,只有糟糕的程序员。

 

没有一种语言是万能的,只会一种语言是万万不能的。

 

编程就是在人脑和电脑之间寻找最佳平衡点的过程。

 

借口是纲,实现是目。纲若不举,目无以张。

 

抽象——尤其是数据抽象——才是OOP的核心和起源,尽管它们并非OOP的专利。没有抽象做基础,封装、继承和多态尽皆无本之木。只有贯彻ODT思想,设计出来的类才会是“万人迷”:有优雅的外形——抽象,有丰富的内涵——数据,有鲜明的个性——类型。

 

在融会贯通者的眼里,知识是大同小异的;在一知半解者的眼里,知识是小同大异的。此所谓:通,则大处圆融合一而小处各具其妙;不通,则大处千变万化而小处无所分别。

 

任何一门技艺到了高级阶段,都是“度”的学问。初级程序员的理想是为所欲为——能用编程解决一切问题;中级程序员的理想是尽善而为——追求最佳解决方案;高级程序员的理想是有所为有所不为——重在整体设计的选择能抵制局部技巧的诱惑;最高理想是无为而无不为——无论宏观设计还是微观实现,均非可以选择,却自然合度。这四个阶段可以分别用四句广告词来代表:从全球通的“我能”,到奥运会的“更快、更高、更强”,到安踏的“我选择,我喜欢”,最后是马爹利的“心意有别,心中有度”。

Unix有一个哲学:一个程序只做一件事,但要做好。

 

访问控制只是个玻璃罩,能防止乱动的双手,却防止不了偷窥的双眼。它至多只能维护语法上的封装和信息隐蔽,而语义上的封装只有靠规范来维护。对于程序员来说,前者是一种须要学的知识,后者是一种须要培养的素质。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值