2008年12月30日
摘要:
抽象类型——实中之虚(
介绍抽象类型的种类、意义及其用法)
• 浅显的比方只是门槛前的台阶,借之或可拾级入门,却无法登堂入室
• 具体类型是创建对象的模板,抽象类型是创建类型的模块
• 抽象数据类型的核心是数据抽象,而抽象类型的核心是多态抽象
• 必先以术养道,而后以道御术
• 以社会身份而非个人身份作为公民之间联系的纽带,正是针对接口而非实现来编程的社会现实版
• 个体身份对应的规范抽象借助封装,以数据抽象的形式出现
• 家庭身份对应的规范抽象借助继承,以类型层级的形式出现
• 社会身份对应的规范抽象借助多态,以多态抽象的形式出现
阅读全文
摘要:
多态类型——静中之动(
通过实例展示多态类型的三种用法)
• 继承是多态的基础,多态是继承的目的
• 多态是动静结合的产物,将静态类型的安全性和动态类型的灵活性融为一体
• 前者(参数多态)是发散式的,让相同的实现代码应用于不同的场合
• 后者(包含多态)是收敛式的,让不同的实现代码应用于相同的场合
• 模板方法模式突出的是稳定坚固的骨架,策略模式突出的是灵活多变的手腕
阅读全文
摘要: 终于有了自己的独立博客
http://blog.zhenghui.org,以后就在那儿安家落户了。
阅读全文
摘要:
后台脚本——敏捷开发的利器(
简谈Perl、PHP、Python和Ruby)
• 语言的发展趋势一定是动静结合、刚柔并济
• Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯
• 或许优雅正是来自对细节和规范的重视
• (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影
阅读全文
摘要:
前台语言——视觉与交互的艺术(
简谈VB、Delphi和JavaScript)
• Delphi让复杂的事情变得简单,VB让简单的事情变得更简单
• 它(JavaScript)宛如一只神奇的魔袋,乍看平淡无奇,却总能变出意想不到的宝贝
• 待友之道,贵在放大其优点而缩小其缺点,对待语言亦当如是
• 大道相通,难者亦易,易者亦难
阅读全文
摘要:
平台语言——先搭台后唱戏(
简谈Java和C#)
• Java的目的是让一种语言在多种平台上运行,而C# 的目的是让多种语言在一种平台上运行
• 两个平台语言(Java和C#),一个重在语言,让语言向平台扩散;一个重在平台,让平台来凝聚语言
• C++提供了一马平川的大路,也提供了陷阱密布的小道;Java则在大路上铺设水泥,同时封锁了捷径小道;C#同样填平了大路上的坑坑洼洼,但把一些小道上“此路不通”的牌子悄悄换成了“此路危险”
阅读全文
摘要:
系统语言——权力的双刃剑(
简谈C、C++和D)
• 通禅悟道者拈花不语,坐井观天者蛙鸣鼓噪
• Java程序员大多被惯坏了,环保意识要淡薄得多
• (指针)用得好可以是削铁如泥的神兵利器,用得不好则可能是自我毁灭的罪恶渊薮
• OOP又不是金子,含量越高越好。试图把一切都装进OOP的箱子里的想法无异于削足适履
• 它们(系统语言)的理念是:优化机器的时间而不是人的时间,优化机器的记忆而不是人的记忆;假设编译器是愚蠢的而程序员是聪明的,因此赋予程序员更多的权利、义务与责任
• C++是匹无辔无鞍的野马,看似桀骜不驯,若能顺性而御,必能足踏飞燕,行千里而不劳
阅读全文
摘要:
语言误区——语言的宗教情结(
关于编程语言的一些误区)
• 如果说编程范式是一种文化,那么编程语言更像是一种宗教——尽管它本不该是
• 语言只有两种:一种怨声载道,一种无人问津
• 对待一门语言的态度应该是:与其抱怨争执,不如扬长避短
• 过分拔高一种语言与抹煞语言之间的差别是两种极端,皆为秕言谬说
• 这些人若有幸拜关公为师,他们最艳羡的一定他的赤兔马和青龙偃月刀,或许还会抹红脸蓄长须什么的,就是不太愿学他的盖世武功
• 理想的架构师应当如文学大师,既有恢弘大气的构思,又有细腻深刻的笔法;应当如统军大帅,既有运筹帷幄的韬略,又有冲锋陷阵的武功
阅读全文
摘要:
动态语言——披着彩衣飞舞的脚本语言(
动态语言简谈)
• 程序是为终端用户服务的,而脚本是为程序员服务的
• 动态语言秉承的一个理念是:优化人的时间而不是机器的时间
• 待静态语言披盔戴甲、备马抬枪之际,动态语言已衣袂飘飘,长剑出手了
• 当脚本语言披上动态语言的彩衣,昔日不起眼的毛毛虫便羽化成碟,开始飘舞在众人追逐的目光之中
阅读全文
摘要:
数据类型——规则与变通(
关于数据类型的讨论)
• Duck类型的哲学是:名义不重要,重要的是能力
• 将一个会叫会游的家伙放进池塘看起来不算坏主意,但如果一艘轮船趁机也轰隆隆地开了进来,事情恐怕就不那么美妙了
• 静态类型检查类似“疑罪从有”的有罪推定制,动态类型检查类似“疑罪从无”的无罪推定制
• 尽可能守规则,必要时求变通
• 规则如裤带,过于宽松和过于束缚都不好
阅读全文
摘要:
教学计划——接下来的故事(
讨论下一步教学计划)
• 编程水平的提升之道是:在实战中演练招法,在招法中领会心法,心法反过来提升招法,进而提高实战水平,如此循环往复呈螺旋式上升过程。正所谓熟能生巧,巧能生通
• 迭代学习法:即在具体知识与抽象理论之间进行折返式学习
• 网页的迷人之处就在于,能够用精美的画皮来包裹冗长低效的代码
• 无论干哪一行,要想胜任愉快,离不开四样东西:才能、兴趣、方法和努力
阅读全文