编程语言的几个能力维度

我把编程语言或者是功能深入的维度划分为八个层次。

一、 八个层次

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” 三个原则。

Mark24

Everything can Mix.