范式
声明编程的本质 尾声
范式编程大体上可以分为,非结构式编程,面向过程编程(包括函数式编程等子概念),面向对象编程等三种范式
声明本文主要基于B站UP主我是杨同学杨同学的观点,补充了我的思考
编程的本质冯诺伊曼结构中,计算机程序遵循自由组合调度硬件提供的指令以实现功能的原则,从这个角度看编程的本质就是调用 API。编程史上诞生过 2500 多种编程语言,在现代主流编程语言中 API 一般是属性代码和方法代码
在面向对象编程中通常会用类封装属性(变量)与方法(函数),站在这个角度,任何一种数据类型都是一个类,例如我们需要声明一个整数变量时,就直接实例化一个整数类型,整数变量就直接继承加减乘除等方法
计算机程序中一切事物都是对象即数据(物理实现是逻辑电路的状态)与算法(物理实现是逻辑电路的变化),价值就是全部的属性与方法
不同的编程范式通过面对的主体界定而客体都是对象,以人为主体,对象的属性和方法是具体的直观的,且是数据和算法的集合,而成这些对象的往往是更深层面的对象,只不过当深度离开人的视角后的对象很难具体的直观的理解。面对这些对象的编程便不再定义为面向对象编程,大多没有也不需要采用类的思想,他们中具有结构的是面向过程编程,没有结构的是指令式编程,且对象的价值通常是单一仅仅是一个数据或者一种算法,甚至就是硬件电路所提供的API,如电路的开与关之类
事实上编程实现一个功能需要通过不断的调用与封装对象,封装通常包含三个层面,全局封装即承载编程语言的外壳,系统封装即编程语言自带的不允许更改的属性与方法,局部封装即自定义的属性与方法且可以嵌套,调用对象同上,每一个层面都有自己的命名空间(Namespace),可以声明变量去实例化对象,与当前空间没有连接的对象则需要先开辟通道导入至与当前空间有连接的任何空间才可调用,全局(Global)空间与系统(Built-in)空间始终和局部空间相连,但是局部空间之间却往往不相连,另外嵌套时如果局部封装中嵌套了局部封装那么对于里层的局部封装和程序的全局封装来讲,外层的局部封装的变量空间就是通常说的即非局部(Nonlocal)或闭包(Enlocal)空间
尾声不同的编程范式各有各有优劣,面对不同的问题需要综合考虑编程效率,可维护性,可扩展性,易移植性等灵活调整策略多方面因素。例如参加数学建模比赛,需要建立一个单一的数学建模,此时就仅仅使用函数式编程即可,快速的构造一个符合逻辑的数学函数完成数学建模,比起花里胡哨的写一堆类来模块化工作要简单直接的多,因此不必拘泥于形式,灵活运用即可



