04 2009 档案

冒号课堂§5.2:数据类型
摘要:数据类型——规则与变通(关于数据类型的讨论) • Duck类型的哲学是:名义不重要,重要的是能力 • 将一个会叫会游的家伙放进池塘看起来不算坏主意,但如果一艘轮船趁机也轰隆隆地开了进来,事情恐怕就不那么美妙了 • 静态类型检查类似“疑罪从有”的有罪推定制,动态类型检查类似“疑罪从无”的无罪推定制 • 尽可能守规则,必要时求变通 • 规则如裤带,过于宽松和过于束缚都不好 阅读全文

posted @ 2009-04-27 10:22 郑晖 阅读(2039) 评论(12) 推荐(0) 编辑

冒号课堂§5.1:教学计划
摘要:教学计划——接下来的故事(讨论下一步教学计划) • 编程水平的提升之道是:在实战中演练招法,在招法中领会心法,心法反过来提升招法,进而提高实战水平,如此循环往复呈螺旋式上升过程。正所谓熟能生巧,巧能生通 • 迭代学习法:即在具体知识与抽象理论之间进行折返式学习 • 网页的迷人之处就在于,能够用精美的画皮来包裹冗长低效的代码 • 无论干哪一行,要想胜任愉快,离不开四样东西:才能、兴趣、方法和努力 阅读全文

posted @ 2009-04-23 09:15 郑晖 阅读(2594) 评论(8) 推荐(0) 编辑

冒号课堂§4.4:情景范式
摘要:情景范式——餐馆里的编程范式(编程范式在餐馆中的应用) • 厨师只需提供一种服务:把纸上菜变成盘中菜,至于蒸、煮、炒、炖等具体做法纯属实现细节 • 可以这么理解(闭包):所谓包,指函数与其周围的环境变量捆绑打包;所谓闭,指这些变量是封闭的,只能为该函数所专用 • 合理地使用闭包能使代码更加简洁清晰,散发出函数式特有的优雅气质 • 换盘子有两种方式:一种是服务员主动换,一种是客人要求换。前者是轮询,后者是通知 • 如果把待加工的菜看作数据,技法看作算法,将数据与算法分离,以算法为中心,那是什么范式? 阅读全文

posted @ 2009-04-16 17:36 郑晖 阅读(2668) 评论(18) 推荐(0) 编辑

冒号课堂§4.3:汇总范式
摘要:汇总范式——一张五味俱全的大烙饼(总结编程范式) • 设计模式好比组合套路,能在一些特定场合下克敌制胜;编程范式则好比武功门派,博大精深且自成体系 • 一种编程范式之所以能独树一帜,关键在于它突破了原有的编程方式的某些限制,带来革命性的新思维和新方法,进一步解放了程序员的劳动力 • 因其长而容己,因其短而容他,此万物之理也 • 语言为形,范式为神。若能以神导形、以形传神,则看似平白无趣的程序也能写出诗画般的意境 阅读全文

posted @ 2009-04-14 16:05 郑晖 阅读(2576) 评论(3) 推荐(0) 编辑

冒号课堂§4.2:逻辑范式
摘要:逻辑范式——当算法失去了控制(再谈逻辑式编程) • 评价代码的复杂度,长短只是一个因素。程序员不是打字员,花在思考上的时间和精力远远超过花在键盘上 • 算法=逻辑+控制。其中逻辑是算法的核心,控制主要用于改进算法的效率 阅读全文

posted @ 2009-04-12 15:27 郑晖 阅读(2706) 评论(7) 推荐(1) 编辑

冒号课堂§4.1:函数范式
摘要:函数范式——精巧的数学思维(再谈函数式编程) • 单靠记忆只能触及知识之表,单靠练习只能深入知识之里,唯有培养方能渗透知识之根 • 学会适度地容忍无知 • 不仅需要强调钻劲和深度的“钉子精神”,还需要强调磨功和广度的“刨子精神” • 编程语言的语法、语义等都是从编程范式的树根衍生而出的枝叶,把握了这种脉络和节奏,代码才会如音乐舞蹈般韵律有致 • 每种范式擅长的问题领域不尽相同,只有博闻广识,方可扬长避短,程序才会如行云流水般流畅自然 • 程序员更习惯机器风格的过程式思维和现实风格的OOP思维,不容易接纳数学风格的函数式思维 阅读全文

posted @ 2009-04-08 23:36 郑晖 阅读(3685) 评论(3) 推荐(0) 编辑

冒号课堂§3.4:事件驱动
摘要:事件驱动——有事我叫你,没事别烦我(事件驱动式编程简谈) • 它们(同步回调和异步回调)都使调用者不再依赖被调者,将二者从代码上解耦,异步调用更将二者从时间上解耦 • 它们(控制反转、依赖反转和依赖注射)的主题是控制与依赖,目的是解耦,方法是反转,而实现这一切的关键是抽象接口 • “回调”强调的是行为方式——低层反调高层,而“抽象接口”强调的是实现方式——正是由于接口具有抽象性,低层才能在调用它时无需虑及高层的具体细节,从而实现控制反转 • 控制反转导致了事件驱动式编程的被动性 • 事件驱动式还具有异步性的特征,这是由事件的不可预测性与随机性决定的 • 独立是异步的前提,耗时是异步的理由 • 发行/订阅模式正是观察者模式的别名,一方面可看作简化或退化的事件驱动式,另一方面可看作事件驱动式的核心思想 阅读全文

posted @ 2009-04-06 22:16 郑晖 阅读(5476) 评论(16) 推荐(2) 编辑

冒号课堂§3.3:切面范式
摘要:切面范式——多角度看问题(切面式编程简谈) • 从宏观角度看,太阳底下没有新鲜事——AOP无非是SoC原理和DRY原则的一种应用 • 从微观角度看,太阳每天都是新的——AOP虽自OOP的土壤中长出,却脱离藩篱自成一体 • 抽象是前提,分解是方式,模块化是结果 • 在常人眼中复杂的牛体,庖丁经过抽象,已目无全牛,及至提刀分解,自是游刃有余。待牛如土委地,模块化即成 • 两条(抽象与分解的原则):单一化,正交化。每个模块职责明确专一,模块之间相互独立,即高内聚低耦合 • 对程序员来说,英语也是一门计算机语言,而且是必修的语言 • OOP只能沿着继承树的纵向方向重用,而AOP则弥补了OOP的不足,可以在横向方向重用 • 如果一个程序是一个管道系统,AOP就是在管道上钻一些孔,在每个孔中注入新的代码流 阅读全文

posted @ 2009-04-02 22:10 郑晖 阅读(3059) 评论(2) 推荐(0) 编辑

冒号课堂§3.2:超级范式
摘要:超级范式——提升语言的级别(元编程简谈) • 元编程作为超级范式的一个体现是,它能提升语言的级别 • 如果说OOP的关键在于构造对象的概念,那么LOP的关键在于构造语言的语法 • 离开IDE就无法编写、编译或调试的程序员,如同卸盔下马后便失去战斗力的武士,是残缺和孱弱的 • 既然有重复的代码,不能从语法上提炼,不妨退一步从文字上提炼 • 元程序将程序作为数据来对待,能自我发现、自我赋权和自我升级,有着其他程序所不具备的自觉性、自适应性和智能性,可以说是一种最高级的程序 阅读全文

posted @ 2009-04-01 22:18 郑晖 阅读(2624) 评论(7) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示