Mark24
记录灵感、技术、思考
编程语言的几个能力维度
我把编程语言或者是功能深入的维度划分为八个层次。
一、 八个层次
1. 基本函数能力 —— Function
可以构建一个子函数的能力。具有基本的
- 顺序
- 分支
- 循环
控制逻辑,可以整合变量、对象 到一个函数的概念中去。
2. 类/模块能力 —— Class/Module
可以把 数据、方法,整合到一个概念中。比如 类。
有基本的,数据访问、方法访问。
可以进行复用,比如实例化过程。
也可以是某种方法的集合,比如 模块概念。
可以对模块的 Mixin、Inclde 过程
总之这是一个整合 data、methods,并且可以复用 methods 的概念。 到这里进一步的把复用、封装的抽象概念进行贯彻。
3. 文件包能力 —— Package/Module
这里是站在文件角度,可以将文件中的 上面的概念,可以进行:
- 导入
- 导出
从而建立起一个 文件包Package 一样的能力。 可以进行多文件组织。
4. 函数式能力 —— Lambda
除了前面 类 支持多文件、多模块。
纯函数也有自己的方式,可以支持多模块、多文件支持。
从而支持函数式范式。
5. 作用域、以及跨作用域通信 —— Scope
拥有作用域概念,隔离变量。
又有某种方式可以跨域作用域,进行变量的传递、访问。
以及他们之间可以交换值。
6. 接口暴露,委托能力 —— Delegation
可以选择性的暴露,或者把暴露的方法,挂载在某个模块上。
可以进行对复杂过程、基本类、模块的隐藏。
到这里,跨文件、跨模块的各部分才能有效的进行合作。 所有的子函数才能在一起进行配合。
7. 元编程 —— Eval/Proxy
具有 Eval 求值、Proxy 拦截 两个功能,可以进行元编程能力的拓展。 可以进行动态的生成代码。
8. 设计模式和数据结构
既有的语言基础,提供:
- 基本数据结构构造的能力
- 基本的设计模式,实现的接口的能力
站在这个基础上,可以进行复杂模型的设计。
8.1 建立在复杂模型上,可以进行面向模型编程、面向接口编程
二、总结
一个语言,拥有或者摸索出这八个基本的层次,才能进一步的构建复杂程序。
三、程序设计原则
主要设计原则实际上只有一个:高内聚、低耦合。
任何复杂的原则都是基于这两者衍生出来的。
比如完全能体现上面的: “复用”、“可读性”、“KISS” 三个原则。