# 附:

# A. 概念

静态类型语言:在编译期间或运行之前施行类型检查(type checking)。
函子:又称function object,在C++中指重载了函数调用算符的类,在Java和C#中可通过interface来实现。

# 程序设计思想

陌生的理论和技术开始总是拒人千里,不过一旦你了解其问题来源,它们会慢慢变得和蔼可亲起来。

任何技术都是在赞美与批判中成长起来的,预测它们是流星还是恒星绝非易事。
就拿OOP来说,上个世纪六十年代就出现了支持OOP的语言,但直到九十年代中后期它才真正成为主流的编程范式。
这段时间恐怕比大多数人的程序员生涯还长吧。
再说mixin,其实并非今日的重点,介绍它的目的不是盲目追新,而是希望透过其背后的需求驱动点,重新审视现有技术。
至于它今后会不会为主流语言所接纳,反倒不是那么重要了。
如果一定要我给个建议,那就是八个字:‘不执一法,不舍一法’。”
“软件技术这棵大树经过多年的快速成长,早已枝蔓丛生。欲臻不执不舍之境,
当如开班导言中所说:究其根本以知过去,握其主干以知现在,察其生长点以知未来。
之所以倾向于用抽象的方式来谈论技术,正是因为抽象的东西更接近根、更接近干、更接近生长点,
从而更普泛深刻,也更稳定持久。

在学习时应注重从具体知识中领悟抽象思想,在应用时应注重用抽象理论来指导具体实践。
类似地,软件开发也是如此:从具体需求中构建出抽象模型,再根据抽象模型来完成具体实现。
因此,在设计阶段抽象类型尤为关键,而在实现阶段则是具体类型更为重要。

是否有必要抽象建模,关键看项目需求。如果需求简单而稳定,一步到位又何尝不可?
甚至软件的开发效率和运行效率还更高——为劈几根细柴而磨刀,值吗?
如果需求复杂而多变,引入抽象方有‘磨刀不误砍柴工’之效。
毕竟抽象不是目的而是手段,对它片面的追求反会导致过度的设计。

# 何谓体悟?

体是从平凡中看到不平凡,悟是从不凡中看到平凡。