11 2008 档案

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

posted @ 2008-11-30 22:27 郑晖 阅读(3200) | 评论 (3)  编辑

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

posted @ 2008-11-24 08:37 郑晖 阅读(4018) | 评论 (5)  编辑

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

posted @ 2008-11-17 08:35 郑晖 阅读(3141) | 评论 (0)  编辑

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

posted @ 2008-11-10 23:40 郑晖 阅读(2304) | 评论 (0)  编辑

冒号课堂§3.1:泛型范式
     摘要: 泛型范式——抽象你的算法(泛型式编程简谈)
• 算法串联数据,如脊贯肉;数据实化算法,如肉附脊
• 泛型编程是算法导向的,即以算法为起点和中心点,逐渐将其所涉及的概念内涵模糊化、外延扩大化,将其所涉及的运算抽象化、一般化,从而扩展算法的适用范围
• 思想是鸡,结论是蛋  阅读全文

posted @ 2008-11-05 23:35 郑晖 阅读(2836) | 评论 (1)  编辑

冒号课堂§2.4:并发范式
     摘要: 并发范式——合作与竞争(并发式编程简谈
• 有谁愿意驾驶一辆启动后不能刹车、不能倒车、不能变速、油尽方停的汽车呢?
• 并发式编程以进程为导向、以任务为中心将系统模块化
• 并发式编程以资源共享与竞争为主线  阅读全文

posted @ 2008-11-04 00:33 郑晖 阅读(1226) | 评论 (2)  编辑

冒号课堂§2.3:对象范式
     摘要: 对象范式——民主制社会的编程法则(OOP简谈
• 如果把整个流程看作一颗倒长的大树,过程式编程自树根向下,逐渐分支,直到每片树叶,类似数学证明中的分析法,即执果索因的逆推法;OOP则从每片树叶开始,逐渐合并,直到树根,类似数学证明中的综合法,即执因索果的正推法
• 与其说OOP更具重用性,不如说更具易用性
• 函数是被动的实体,对象是主动的实体
• 过程式程序的世界是君主制的;OO程序的世界是民主制的  阅读全文

posted @ 2008-11-04 00:20 郑晖 阅读(1399) | 评论 (3)  编辑

冒号课堂§2.2:声明范式
     摘要: 声明范式——目标决定行动(声明式编程简谈
• 命令式编程是行动导向的,因而算法是显性而目标是隐性的;声明式编程是目标驱动的,因而目标是显性而算法是隐性的
• 声明式编程重目标、轻过程,专注问题的分析和表达而不致陷入算法的迷宫,其代码也更加简洁清晰、易于修改和维护
• 归根结底,编程是寻求一种机制,将指定的输入转化为指定的输出  阅读全文

posted @ 2008-11-03 23:27 郑晖 阅读(2585) | 评论 (0)  编辑

冒号课堂§2.1:命令范式
     摘要: 命令范式——一切行动听指挥(命令式编程简谈
• (命令式编程)其世界观是:程序是由若干行动指令组成的有序列表;其方法论是:用变量来储存数据,用语句来执行指令
• (结构化编程)在微观上,主张循规守矩;在宏观上,主张分而治之
• 一个按结构化编程思想设计的流程图,每个模块大小适中、模块之间关系简明、模块内部线路清晰,单从视觉上就会给人一种美感  阅读全文

posted @ 2008-11-03 23:16 郑晖 阅读(2885) | 评论 (2)  编辑

导航

统计

公告

博客搬家:http://blog.zhenghui.org
《冒号课堂》一书于2009年10月上市,详情请见
冒号课堂

留言簿(17)

随笔分类(61)

随笔档案(61)

文章分类(1)

文章档案(1)

最新随笔

积分与排名

最新评论

阅读排行榜

评论排行榜