后记
由于篇幅所限,本书只论述了程序设计语言的一些重点话题。希望读者在阅读本书后能获得一个整体性认识。
如果你读过本书之后,对某些话题的产生了兴趣,想要了解更详细的内容,那是最好不过。兴趣提升学习效率,兴之所至,才能学得深、学得透。在学习了详细内容之后,回过头来再看这一整体框架就更容易理解了。
接下来,我就对本书未能尽述的内容做个简略的补充。
本书提到一个问题会有多种解决方法,或许有读者想知道究竟哪种方法是最好的。那些敢做出断言的宗教人士或占卜师似乎向来人气很高,然而,现实中的大部分问题都需要具体问题具体分析,很难讲哪种最好。最佳设计方案也会因要求的不同而加以修正。针对假设的特定情况进行的速度等的最优化,有可能影响某种方案在其他情况下的应用。关于该话题,读者可以关注富豪式程序设计和 YAGNI 等关键字 1。
1富豪式程序设计是日本图形用户界面设计专家増井俊之倡导的编程风格。它主要针对用户界面开发,主张为了实现简单直观的界面可以不惜代码方面的投入。与此成鲜明对比的是 YAGNI(You aren't gonna need it,你不会需要它)的编程思想,它主张程序员不应该添加任何当前认为不需要的功能。——译者注
可以说,只要是编程,大概都不可避免要产生一些错误(bug)。为了使程序准确运行,就需要调试(debug)。错误是由程序解释和现实情况不一致引起的。要尽早发现错误的存在,可以使用 assertion、test 等表达程序应有行为的解释性语句。要尽早地发现错误产生的原因,可以去学习调试的方法论和调试工具的使用方法。基于 Jenkins 等平台的持续集成(continous integration)可以频繁进行自动软件测试,从而能尽早发现存在的问题。
现在的编程不再单一枯燥。借助编辑器可以实现语法着色,借助 Eclipse 等集成开发环境可以在后台进行编译,并在有问题的代码下面用波浪线标示。这些功能让编程工作变得丰富多彩。但还有人想使编程变得更加轻松,于是出现了 Emacs 等一些编辑器的代码自动补充功能、Snippet 插件和 Eclipse 中的 Quick Fix 这样能大大减轻代码输入压力的功能。而对于一些语言来讲,某些集成开发环境提供的代码重构(code refactoring)支持也是非常有益的。
如果你在一个团队中从事开发工作,那就必然会关心源代码的版本管理和代码可读性的问题。这在单人编程工作中同样需要考虑。因为写完程序一个月后你可能就不再是当初的你,早已忘记了那些当初没有在代码中体现出来的编程的前提事项。另外,不单对自己的程序,还有必要去好好理解他人编写的程序。
我们很容易更加关注 How 的问题(即如何去实现),实际上,What(要实现什么)和 Why(为什么要实现)的问题也是不可忽略的。How 充其量只不过是手段。然而时间是有限的,干劲是宝贵的,要把它们用在真正需要的地方。凡此种种,书不尽言,篇幅所限,至此搁笔。
