一种生物启发的编程语言
Source: Dev.to
Motivation
我一直对那些说“我在做一门编程语言”的人感到不屑。更像是对类似“…会比 C 更好!”这种说法背后的傲慢感到反感。虽然我并不认为我会做出比 C 更好的东西,但我确实在做一门编程语言。它不会很完美,也不会解决我不感兴趣的问题,但它可能会为我解决一些需求,也许其他人也会觉得它和我一样有趣。
Problems with Traditional Microservices
我参与过许多不同的软件项目——从前端网页应用到原生移动应用再到后端微服务。后端开发尤其吸引我,但我不断遇到一些重复出现的问题。
- 规模与部署开销 – 微服务要么臃肿,要么过小。部署一个微服务往往比编写代码本身更耗时。在大规模应用中,跨微服务的范围蔓延或过于乐观的架构决策会变得棘手。容器编排以及仅仅为了在本地测试一次改动所需的众多依赖更是添乱。
- 数据物流 – 我喜欢能够看到数据的起点和终点,了解它在应用中的流向和转换。微服务引入了许多必须满足的边界和契约。追踪一条数据的完整生命周期变得极其困难,尤其是当涉及消息流平台时。一旦数据离开你的手进入模糊的消息中间件,对其流向的洞察就会丢失,即使它只是要去另一个微服务。
The Mycelium VMN and Spore Language
Mycelium 是一种受生物启发的虚拟机网络(VMN),运行一种纯函数式语言 Spore——至少这是我们的计划。
- 每个 Spore 函数将作为独立单元部署在 VM 中,并通过网络分发,实际上充当“纳米服务”。
- 由于每个函数都是纯的,我们可以获得函数式语言的典型优势:记忆化、异步安全、模块化、可扩展性等。
- 函数会进行语义哈希,只有真正的函数实现改变才会触发重新部署(重新排序语句、添加注释等都不会)。
- 网络会自动根据使用情况和可用资源分配函数——理想情况下,依据实际使用模式而非在需求变化前的乐观假设来自动形成和重构“微服务”。代码一起触发,线就会一起连接!
- VM 网络本身会根据使用情况和资源可用性进行重组,能够处理从单节点故障到整个数据中心灾难的各种情况。这种自我重构受真菌菌丝网络在自然界中组织方式的启发(因此得名)。
Current Status
在撰写本文时,Spore 仅是一个匆忙(且仅部分完成——但可运行!)构建的字节码解释器。Mycelium 目前由一些实验组成,用来验证实现完整系统的想法。
Future Plans
这些想法我已经在脑中酝酿了好几年。现在终于是把它们付诸实践的时候了。我计划在业余时间构建语言和 VMN,并在此博客中记录想法和过程。我认为我对前文所述问题的一些解决方案相当有趣!
如果你对进展感兴趣或想提出贡献,欢迎前往我的 GitHub 查看。