无耦合编程语言Zard

Zard即世界

Zard不同于以往任何编程语言,它是不存在耦合的,就如同现实世界。
笔者会从耦合开始,引出信息子,再解释具有空间和法则的世界,利用信息子和世界完成对象的解耦。

耦合

笔者最先接触耦合这个词,是在力学课上。上课溜号了,问了室友才知道耦合是相互作用的意思。放在编程中,耦合也具有相似的意思。高内聚,低耦合,就是说类或不同模块间尽量做到低关联性,方便修改。

耦合是否存在

我不认为耦合是存在的,起码在现实中是不存在耦合的。物理学上,有种说法,作用力的本质是粒子。物质通过释放粒子来传递信息,捕获粒子来获得信息。

信息子

光子就是一段信息,不同的物质对光子有不同的反应,有的放电,有的吸引,有的排斥。就如同,不同人对榴莲气味,有截然不同的反应似的。我认为所有粒子都具有传递信息的能力,都可以被叫为信息子。

世界

世界是存在规则的,万事万物依此运行,所以规则应该依附到世界上。

class World {
    rules
}
复制代码

同时,世界也是存在空间的,物质存在在空间上。空间可以是一维、二维、三维等等。

class World {
    rules
    space
}
复制代码

这样还有个好处,对象不用拥有方法了,只需要保存信息。

规则只需要写在相应的规则中。就如,同性相斥不用写在南极或北极中(这本身也不好写),而是写在电磁学法则中。

信息是需要流通的,是依靠信息子在空间的移动实现的。当然,我们也可以通过不同的空间和对象间的位置关系,来控制程序的运行。

仔细一看,这非常像ECS模式。我觉得ECS之所以好用,是因为游戏开发更接近创造世界。

Zard语言更新计划

现阶段Zard还在理论阶段。正要开展Zard的实现。

准备用Rust实现Zard,吐槽一下Rust真难学。

  1. 实现World的创建,rules的添加,unidirectional_channel的创建和连接。

以上可以用来代替过程编程,也就是说过程编程是世界编程的子集。

最后,希望自己能坚持下去,完成Zard的创作。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享