天天看点

编程范式与编程语言

一、综述

范式是语言的内核;

语言是范式的表现形式。

编程范式是编程语言的核心特征。

二、编程范式

 编程范式的核心是:世界观、思维方式、思想、体系;

编程范式的表现形式就是一组概念和规则、(逻辑)体系的集合;

实现了编程范式的编程语言需要对这些概念、规则作出定义、解释和运行支持。

编程范式是基于数学理论或一组特定原则的方法,每一种范式支持一组概念。

范·罗伊信仰多范式编程语言:

解决一个编程问题,需要选择正确的概念;解决多个问题,则需要组合分属不同部分的多个概念。况且,许多程序需要解决的问题本来就不止一个。“理论上,一门语言应该以良好的方式支持多种概念,这样程序员就可以在需要时选择合适的概念,不受他人所累。”说得很直观,但我觉得也有潜在缺点:阅读这种语言的源码时,需要精通多种范式,并了解它们是怎么相互影响的。(范·罗伊可能在说“良好的方式”时考虑过如何改正这种缺点:真正的多范式语言应该避免跨范式干扰,而不仅仅是支持一大堆概念)。正如范·罗伊本人在后面讨论状态时所说的:“关键在于选择具有正确概念的范式。概念太少,则程序比较复杂;太多,则推理比较复杂。”

https://www.cnblogs.com/feng9exe/p/11052037.html

三、编程语言

每一种编程范式都是一种解决方案;

编程语言的实现就是要选择解决方案和世界观、思维方式的集合。

并为这些集合的概念和规则提供实现支持。

同一种编程范式在不同的语言中提供的实现细节可能会不同:比如oop,c++提供的是虚函数表机制,oc提供的是动态派发机制。

四、语言、原生范式、二次范式

由语言提供方提供的语言中缺省支持的范式称为原生范式。

比如c++的oop、泛型;

java的oop、泛型、注解;

swift的oop、面向协议、函数式、泛型等。

二次范式是编程语言原生没有提供,有第三方库提供的范式。

比如rxjava、rxjs等rx系列。

第三方库给编程语言添加范式,是在原声语言的基础上进行二次开发,提供新引入的范式的概念、规则等支持。

五、编程范式是思想、思维、世界观和逻辑体系。

1. 自然观/世界观——观念范式:指看待世界、运用科学的不同方式。

2. 学科的逻辑体系——规则范式。在科学实际活动中,各种被公认的规范,如定律、理论、应用以及仪器设备、工具等等,组成了一个逻辑体系。这一体系通过专业教育,为从事该领域的人——科学共同体,规定了思考框架,并形成一种科学习惯和科学传统。科学共同体从同一模型(规则范式)中学习专业基础,因此他们不会再在基本原则方面碰到重大分歧。

------------------越是喧嚣的世界,越需要宁静的思考------------------

合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。