超越关系中有一种美感。考虑以下几个例子:
- 原子由亚原子粒子组成,分子由原子组成,细胞由分子组成,器官由细胞组成,人由器官组成,社会由人组成。
- 围棋的复杂策略建立在需要制造具有“两个眼睛”的结构以便生存的基础上 - 然而“两个眼睛”并没有在规则中明确说明,而是围棋非常简单的规则的 emergent property。
- 康威生命游戏的图灵完备性可以通过滑翔机、枪和飞船的概念来证明,这些概念又基于开和关的概念和非常简单的规则集。
我的第一个问题:是否可能概述一组小型且极简的编程“对象”和“规则”,以用于构建面向对象编程语言?
现在,聪明的计算机科学家可能会指出规则110的图灵完备性,并说这就是你需要的全部!但这并不是我要寻找的。相反,冒着提出一个定义不清的问题的风险,有哪些最简单、易于理解的概念可以构建成一个面向对象的编程语言?
对于一个不好且不完整的示例,暗示我想要什么,定义三个概念对象:一个参考,一个函数和一个信息容器。然后(第二级?)定义一个结构体,它是通过引用其他信息文件夹来保存其他信息的信息容器。一种基本的类(第三级?)将使用对函数的引用增强结构,但必须构建其他结构来处理私有与公共函数的概念。最终,我们应该得到一个完全基于基本概念构建的面向对象编程语言,没有任何地方使用机器代码硬编码优化或语法盐。理想情况下,最终结果仍然是有吸引力和可读性的代码。
我的第二个问题:是否已经有任何面向对象编程语言接近这一点了?