第一部分 打好基础
第4章 关键的“构建”决策
4.1选择编程语言
研究表明,编程语言的选择从多个方面影响生产率和代码质量。
程序员使用熟悉的语言时,生产率比使用不熟悉的语言时要高
使用高级语言的程序员能比使用低级的语言的程序员达到更好的生产率和质量
某些语言更能表达编程中的各种概念,程序员同样受到所用编程语言的影响
语言描述
- Ada:一种通用的高级编程语言,基于Pascal。
- 汇编语言:一类低级语言,每条语句对应一条机器指令。
- C:一种通用的中级语言,最初与UNIX系统密切相关。
- C++:一种面向对象的语言,基于C语言。
- C#:一种通用的面向对象和编程环境,语法类似C、C++、Java。
- Cobol:一种像英语的编程语言。
- Fortran:第一个高级计算机语言,引入了“变量”和“高级循环”的概念。
- Java:一种面向对象的语言,语法类似C和C++,Java设计为能在任何平台运行,办法是将Java源代码转换为字节码,然后让后者在各个平台上的虚拟机环境中运行,Java广泛用于Web应用的编程。
- JavaScript:一种解释执行的脚本语言,最初与Java略有关系,主要用作客户端编程。
- Perl:一种处理字符串的语言,基于C和若干UNIX工具程序。
- PHP:一种开源的脚本语言,具有与Perl、Bourne Shell、JavaScript、C类似的语法。
- Python:一种解释性的、交互式的面向对象语言。
- SQL:一种查询、更新、管理关系数据库的事实标准。
- Visual Basic:一种高级的面向对象的可视化Basic语言
4.2 编程约定
“实现”必须与(指导该实现的)“架构”保持一致,并且这种一致性是内在的、固有的。
在“构建”开始之前,讲清楚你使用的编程约定。编程约定的细节要达到这样的精确度:在编写完软件之后,几乎不可能改变(翻新)软件所遵循的编码约定。
4.3 你在技术浪潮中的位置
技术周期(或者说是技术浪潮)意味着不同的编程实践,编程实践取决于你在技术浪潮中所处的位置
一些最具创造性的应用程序就是从浪潮早期的程序中涌现出来的。
- "在一种语言上编程”的程序员将他们的思想限制于“语言直接支持的那些构件”,如果语言工具是初级的,那么程序员的思想也是初级的。
- “深入一种语言去编程”的程序员首先决定他要表达的思想是什么,然后决定如何用特定语言提供的工具来表达这些思想。
“深入一种语言去编程”的例子
大多数重要的编程原则并不依赖特定的语言,而依赖于你使用语言的方式。如果你使用的语言缺乏你希望使用的构件,或者倾向于出现其他种类的问题,那就应该试着去弥补它。发明你自己的编码约定、标准、类库以及其他改进措施。
4.4 选择主要的构件实践方法
- 结对编程以及测试驱动开发
- 单人开发和形式化检查
key point - 每种编程语言都有其优点和弱点。要知道使用的语言的明确优点和弱点。
- 在开始编程之前做好一些约定。“改变代码使之符合这些约定”是近乎不可能的。
- “构建的实践方法”的种类比任何单个项目能用到的要多。有意识地选择最适合你的项目的实践方法。
- 问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制?请记得“深入一种语言去编程”,不要仅“在一种语言上编程”。
- 你在技术浪潮中的位置决定了哪种方法是有效的------甚至是可能用到的。确定你在技术浪潮中的位置,并相应调整计划和预期目标。