编程的“思想”,是一个很中国化的词汇。编程的思想,通常称为一门编程语言背后的编程范式(Programming Paradigm)。随着编程(programming)方法学和软件工程研究的深入,特别是OO技术的普及,范式编程范式等术语渐渐出现在人们面前。从教学的角度看,当用一门命令范式、函数范式或面向对象范式语言讲授编程时,该语言背后的范式体现为看待编程的观点、语言的逻辑和考虑问题的思路。编程范式也许是学习任何一门编程语言时要理解的最重要的术语。(在国内逐步了解“范式/编程范式”时,英文中该术语已经处于abuse的地步。)
1编程范式
Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词 ,范式源于托马斯.库恩在《科学革命的结构》中提出的范式论。库恩没有严格定义何为范式,用法多至二十一种。yqj2065把将范式归纳为3个方面或层次:
1. 自然观/世界观——观念范式:指看待世界、运用科学的不同方式。这是一套根据特有的价值观念和标准所形成的、关于外部世界的形而上的信念。例如牛顿眼里没有“不确定性”的东西,而微观物理学描述了诸多不确定性。OOP中,正如在[1.1.3 面向对象]中所言,当程序员回答程序是什么、进程是什么的时候,反映了程序员对待程序的观念范式。观念范式体现为程序员的境界和素养,而非程序的实现技能。
2. 学科的逻辑体系——规则范式。在科学实际活动中,各种被公认的规范,如定律、理论、应用以及仪器设备、工具等等,组成了一个逻辑体系。这一体系通过专业教育,为从事该领域的人——科学共同体,规定了思考框架,并形成一种科学习惯和科学传统。科学共同体从同一模型(规则范式)中学习专业基础,因此他们不会再在基本原则方面碰到重大分歧。库恩提出科学发展的模式大致是:前科学——常规科学——危机——科学革命——新的常规科学。新学科(范式)的早期开拓者,所能达到的范围和精确性常常非常有限,他们留下了大量“有待完成的扫尾工作”,绝大多数科学家为此献出了他们的全部生涯。另一方面,一种范式之所以成功,常常是因为在解决许多实际工作者公认的重大问题方面,比竞争对手更为成功。
3. 心理认知因素——心理范式。在不同的自然观和逻辑体系下,科学共同体对其范式有着“虔诚的狂热”,并力图把自然界“强迫纳入”范式所规定的思想框架内,从而展开卓有成效的研究活动。在这里,『范式之间的竞争不是那种可用证明解决的战斗』,你无法说服不想被你说服的人。当范式改变时,不但从事科学研究的人更换了,评价选择的标准、整个社会心理、研究传统以及世界图式都改变了,所以新旧范式是不可通约的、不可比较的。
[1.1.3 面向对象]介绍了面向对象程序员应该具有的程序观(观念范式)和按照日常生活的隐喻进行编程的心理范式,而全书讨论的重点是面向对象编程的规则范式。
2 资料
单词paradigm并不是通过查字典就能够翻译的。 虽然paradigm的原意是example示例、pattern模式 or model.典范、范例、模型。
- 在有些计算机书籍中,将paradigm称为“范例”——“指一种示范性的模型或例子,它提供了一种组织信息的形式;面向对象的范例强调以行为和责任为基础来组织信息”【Timothy Budd,《面向对象Java编程思想》(修订版),清华大学出版社,2002-8】。
- 真正使paradigm广为流行的原因是1962年,美国科学史学家和科学哲学家托马斯·库恩(Thomas S. Kuhn)所著的著名书籍The Structure of Scientific Revolutions(《科学革命的结构》),其核心——范式论在自然科学家中引起强烈的共鸣,并波及社会科学的广泛领域。在李宝恒、纪树立翻译的《科学革命的结构》中,paradigm翻译为“规范”,而在大量的哲学、社会科学文献中,一般称为“范式”。