引入
程序设计法(Programming paradigm)提供并决定了程序员对程序执行的看法。编程的本质是人通过符号学秩序去刻画并改造世界。因此,从哲学的高度去看程序设计法,有助于我们更好的认知和实践。
其「场域」是计算机,「主体」是人,「客体」是世界,「目的」是改造世界。
何为计算机?
可以执行计算的机器。关键词
计算:计算量,抽象性,完备性
机器:计算能力,具体性,局限性
人如何与计算机交互?
通过既定的符号秩序和计算机交互。
符号秩序(编程语言)
- 数理逻辑抽象性
- 体系结构可见性
- 现实映射难易性
好的编程语言可以在所适用的场景下实现三者的最佳平衡。
程序设计法
面向过程编程
世界观:一切都是数据和计算
方法论:通过计算操作数据
价值观:偏重机器,偏重可实现和高性能
好处是
- 贴近计算机的本质,容易实现
- 看得到体系结构,获得高性能
坏处是
- 映射现实的方式更贴近机器,认知负担大
面向对象编程
世界观:一切都是对象和关系
方法论:通过对象方法操作对象和关系
价值观:偏重人,偏重更自然的刻画世界
好处是
- 映射现实的方式更贴近人的认知规律,即主客体与运动,更容易刻画复杂的事物
坏处是
- 远离计算机本质,抽象性更高,额外计算开销大
- 更不易看到体系结构,无法获得高性能
函数式编程
世界观:一切都是函数和函数运算
方法论:通过函数运算操作函数
价值观:偏重数学,偏重极度简洁和高度抽象性
好处是:
- 贴近数理逻辑,抽象性高,操作细节的复杂度低
坏处是:
- 看不到体系结构,实现开销大
- 使用数学来映射现实,对认知能力具有极高的要求