愚公这篇文章很给力:原子,与原子联结的友类、友函数

但 CSDN 很不给力,要登录才能评论。好不容易注册了帐号,发表评论,居然提示“正在提交,请稍候”。我稍候了半个小时,重试了两次,都未发表成功。干脆响应白鸦的号召,单独发篇博客回复。

――――――――――――-
顶愚公的好文章,很给力。
有几个小疑问:

1. 考虑 false, 0, “” 等 falsy 值,Atom 函数采用下面的写法可能会更好:

function Atom(atom) {
  return new Object(atom);
}

2. 从文中的描述看,atom 代表数据的最小单元? meta 代表操作数据的最小单元? 最简单的程序就是 meta(atom)? 复杂程序都可以基于 meta(atom) 演化出来? 不知这样理解是否正确。

3. 除了原子,还有元素(element)的概念。元素是具有相同质子数的同类原子的总称。js 里的元素是否就是数据类型(type)? QoBean 里好像只有 object 一种类型?

4. 进一步类比,atom 就是人类社会里的“人”,根据不同的分类标准,人可以分为男人/女人,也可以分为中国人/美国人等,这是 type 的概念。type 和分类标准相关。在 js 里,数据分为基本类型和引用类型,其分类标准是数据的存储位置(堆和栈)? 一直有个困惑,在愚公的《js 语言精粹》一书里,讲到数据类型时,一直没提 null. 对于 null, 究竟是 primitive type, 还是 reference type? typeof null === 'object' 到底是怎么回事?

5. 将 atom 与 “人” 类比,很容易理解 atom1 !== atom2 以及 atom1 != atom2. 因为完全相同的人根本就不存在。这的确是一把很好的钥匙。在友类的实现里,是创造了一个“人”来当钥匙,并且用完之后,把这个“人”放入隐藏空间,让任何外人都找不到了。

6. atom/meta 体系,是将世界看成是物质和物质之间的相互作用。但这仅是看世界的一种方式。最近越来越觉得从信息(info)的角度看世界,可以解释和“预测”更多现象(比如游戏里的时空之门)。atom 代表的是一种信息,meta 也是一种信息(关于如何操作 atom 的信息)。这样,是否可以提炼出一种信息编程(Info Programming)?

7. 在 js 里,函数可以表述数据,也可以表述数据的操作。从信息编程的角度出发,函数就是最小单元。对函数式编程不是很熟悉。信息编程,是否就是函数式编程?

越来越觉得有意思,记录于此,期待各位大牛和愚公解惑。