日历

September 2009
M T W T F S S
« Aug   Oct »
 123456
78910111213
14151617181920
21222324252627
282930  

分类

冒号课堂§6.1:系统语言

系统语言——权力的双刃剑(简谈C、C++和D

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

• Java程序员大多被惯坏了,环保意识要淡薄得多

• (指针)用得好可以是削铁如泥的神兵利器,用得不好则可能是自我毁灭的罪恶渊薮

• OOP又不是金子,含量越高越好。试图把一切都装进OOP的箱子里的想法无异于削足适履

• 它们(系统语言)的理念是:优化机器的时间而不是人的时间,优化机器的记忆而不是人的记忆;假设编译器是愚蠢的而程序员是聪明的,因此赋予程序员更多的权利、义务与责任

• C++是匹无辔无鞍的野马,看似桀骜不驯,若能顺性而御,必能足踏飞燕,行千里而不劳

冒号课堂§5.4:语言误区

语言误区——语言的宗教情结(关于编程语言认识上的一些误区

• 如果说编程范式是一种文化,那么编程语言更像是一种宗教——尽管它本不该是

• 语言只有两种:一种怨声载道,一种无人问津

• 对待一门语言的态度应该是:与其抱怨争执,不如扬长避短

• 过分拔高一种语言与抹煞语言之间的差别是两种极端,皆为秕言谬说

• 这些人若有幸拜关公为师,他们最艳羡的一定他的赤兔马和青龙偃月刀,或许还会抹红脸蓄长须什么的,就是不太愿学他的盖世武功

• 理想的架构师应当如文学大师,既有恢弘大气的构思,又有细腻深刻的笔法;应当如统军大帅,既有运筹帷幄的韬略,又有冲锋陷阵的武功

冒号课堂§5.3:动态语言

动态语言——披着彩衣飞舞的脚本语言(动态语言简谈

• 程序是为终端用户服务的,而脚本是为程序员服务的

• 动态语言秉承的一个理念是:优化人的时间而不是机器的时间

• 待静态语言披盔戴甲、备马抬枪之际,动态语言已衣袂飘飘,长剑出手了

• 当脚本语言披上动态语言的彩衣,昔日不起眼的毛毛虫便羽化成碟,开始飘舞在众人追逐的目光之中

冒号课堂§5.2:数据类型

数据类型——规则与变通(关于数据类型的讨论

• Duck类型的哲学是:名义不重要,重要的是能力

• 将一个会叫会游的家伙放进池塘看起来不算坏主意,但如果一艘轮船趁机也轰隆隆地开了进来,事情恐怕就不那么美妙了

• 静态类型检查类似“疑罪从有”的有罪推定制,动态类型检查类似“疑罪从无”的无罪推定制

• 尽可能守规则,必要时求变通

• 规则如裤带,过于宽松和过于束缚都不好

冒号课堂§5.1:教学计划

教学计划——接下来的故事(讨论下一步教学计划

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

• 迭代学习法:即在具体知识与抽象理论之间进行折返式学习

• 网页的迷人之处就在于,能够用精美的画皮来包裹冗长低效的代码

• 无论干哪一行,要想胜任愉快,离不开四样东西:才能、兴趣、方法和努力

冒号课堂§4.4:情景范式

情景范式——餐馆里的编程范式(编程范式在餐馆中的应用

• 厨师只需提供一种服务:把纸上菜变成盘中菜,至于蒸、煮、炒、炖等具体做法纯属实现细节

• 可以这么理解(闭包):所谓包,指函数与其周围的环境变量捆绑打包;所谓闭,指这些变量是封闭的,只能为该函数所专用

• 合理地使用闭包能使代码更加简洁清晰,散发出函数式特有的优雅气质

• 换盘子有两种方式:一种是服务员主动换,一种是客人要求换。前者是轮询,后者是通知

• 如果把待加工的菜看作数据,技法看作算法,将数据与算法分离,以算法为中心,那是什么范式?

冒号课堂§4.3:汇总范式

汇总范式——一张五味俱全的大烙饼(总结编程范式

• 设计模式好比组合套路,能在一些特定场合下克敌制胜;编程范式则好比武功门派,博大精深且自成体系

• 一种编程范式之所以能独树一帜,关键在于它突破了原有的编程方式的某些限制,带来革命性的新思维和新方法,进一步解放了程序员的劳动力

• 因其长而容己,因其短而容他,此万物之理也

• 语言为形,范式为神。若能以神导形、以形传神,则看似平白无趣的程序也能写出诗画般的意境

冒号课堂§4.2:逻辑范式

逻辑范式——当算法失去了控制(再谈逻辑式编程

• 评价代码的复杂度,长短只是一个因素。程序员不是打字员,花在思考上的时间和精力远远超过花在键盘上

• 算法=逻辑+控制。其中逻辑是算法的核心,控制主要用于改进算法的效率

冒号课堂§4.1:函数范式

函数范式——精巧的数学思维(再谈函数式编程

• 单靠记忆只能触及知识之表,单靠练习只能深入知识之里,唯有培养方能渗透知识之根

• 学会适度地容忍无知

• 不仅需要强调钻劲和深度的“钉子精神”,还需要强调磨功和广度的“刨子精神”

• 编程语言的语法、语义等都是从编程范式的树根衍生而出的枝叶,把握了这种脉络和节奏,代码才会如音乐舞蹈般韵律有致

• 每种范式擅长的问题领域不尽相同,只有博闻广识,方可扬长避短,程序才会如行云流水般流畅自然

• 程序员更习惯机器风格的过程式思维和现实风格的OOP思维,不容易接纳数学风格的函数式思维

冒号课堂§3.4:事件驱动

事件驱动——有事我叫你,没事别烦我(事件驱动式编程简谈

• 它们(同步回调和异步回调)都使调用者不再依赖被调者,将二者从代码上解耦,异步调用更将二者从时间上解耦

• 它们(控制反转、依赖反转和依赖注射)的主题是控制与依赖,目的是解耦,方法是反转,而实现这一切的关键是抽象接口

• “回调”强调的是行为方式——低层反调高层,而“抽象接口”强调的是实现方式——正是由于接口具有抽象性,低层才能在调用它时无需虑及高层的具体细节,从而实现控制反转

• 控制反转导致了事件驱动式编程的被动性

• 事件驱动式还具有异步性的特征,这是由事件的不可预测性与随机性决定的

• 独立是异步的前提,耗时是异步的理由

• 发行/订阅模式正是观察者模式的别名,一方面可看作简化或退化的事件驱动式,另一方面可看作事件驱动式的核心思想

第1 / 2页12»