3

在超前的关系中有一种美。考虑以下示例:

  1. 原子由亚原子粒子组成,分子由原子组成,细胞由分子组成,器官由细胞组成,人由器官组成,社会由人组成。
  2. 围棋游戏的复杂策略是建立在需要构建具有“两只眼睛”的结构以便它们能够生存的基础上的——然而,“两只眼睛”的东西从来没有在规则中说明,但它本身就是围棋的一种新兴属性。非常简单的围棋规则。
  3. Conway's_Game_of_Life的图灵完备性可以用滑翔机枪支宇宙飞船来证明,它们又基于开和关的概念以及非常简单的规则集

在所有情况下,最小的对象集和最小的规则集最终会导致非常复杂的结构。

我的第一个问题:是否可以概述一组可用于构建 OOP 语言的小而简约的编程“对象”和“规则”?

现在,聪明的计算机科学家可能会指出规则 110的图灵完备性并说这就是你所需要的!但这并不是我想要的。相反,冒着提出定义不明确的问题的风险,可以构建到面向对象编程语言中的最简单、人类可理解的概念是什么?

对于暗示我想要什么的糟糕且不完整的示例,请定义三个概念对象:引用函数信息持有者。然后(第 2 级?)定义一个结构作为信息持有者,通过对其他信息文件夹的引用来保存其他信息。一个基本的(第 3 级?)将通过对函数的引用来扩充结构,但必须构建额外的结构来处理私有函数与公共函数的概念。最终,我们应该得到一种功能齐全的 OOP 语言,它完全建立在基本概念之上,而且我们在任何地方都没有作弊通过使用机器代码硬编码优化或语法盐。理想情况下,最终结果仍然是有吸引力且可读的代码。

我的第二个问题:是否有任何 OOP 语言已经接近这一点?

4

4 回答 4

1

io可能是最接近您正在寻找的语言。

于 2011-02-01T03:41:11.047 回答
1

原型

IO语言参考给出了一个很好的提示——OOP 最简单的方法似乎是基于原型的编程。您所需要的基本上是关联数组一流的函数

由于包括字典在内的许多数据结构都可以用函数来实现所以我们很快就会找到一些语法糖和lambda 演算,它涵盖了整个图灵完备的计算模型。

于 2011-02-02T12:50:40.793 回答
0

有趣的问题,但我不完全确定这是明智的。

考虑到 1 和 0 是我们在计算机科学中的原子。它们是严格不可分割的。它们的不同组合产生了具有各种惊人特性的程序。但是,不适合写 1 和 0,因为抽象级别太低。

我认为同样的问题也会发生在你的语言上。如果它足够灵活以允许构建任何东西,那么它将无法使用,如果不是,它将无法满足您的要求。

于 2011-02-01T03:54:20.280 回答
0

Smalltalk 建立在一组非常有限的原语之上,但 OO 理念在那里是原子的。理论上,您可以在SK 逻辑或 lambda 演算等简单的基础之上构建任意复杂的语言。OO 特性没有任何不同,它们可以简化为更原始的集合。任何基于原始 Lisp 宏的 OO 系统都是一个很好的例子。

更新:总体上看一下术语重写系统,它是一种在更简单的事物之上定义复杂语义的强大技术。

我还建议阅读一本书http://www.cambridge.org/gb/knowledge/isbn/item1132720/?site_locale=en_GB

于 2011-02-02T12:01:32.647 回答