Alan Kay 创造 "OOP(面向对象)" 一词时, 包含以下三个含义:
- 一切都是对象
- 对象通过消息进行沟通
- 对象解释它所理解的消息
Smalltalk 展示了如何实施这些想法。
许多编程语言都支持面向对象风格的编程, 它们通常关注第 1 点, 而对 2, 3 点缺少关注。
Dynatalk 致力于对象之间的交流, 尤其关心不同语言/环境之间的互操作。
Dynatalk 提供的通信对象被抽象化为 Agent, 它在行为上类似于 Actor 模型。
早先的 Dynatalk 存在以下问题:
- 核心不够清晰(与 Roblox Agent 项目有很多耦合)
- 基于 Agency 实现。Agency 在关注点分离上做得不理想。新版本的过度设计使项目变得复杂。
新的 Dynatalk 打算兼容 Agency(1.6.1) 的消息结构, 数据结构的兼容使得它们可以进行互操作。根据需要, 可以复用之前的资产。
- 消息管道: MQTT。 如有需要, 可以轻松替换为 RabbitMQ 、 ZeroMQ、进程间的消息机制...
- MQTT 拥有庞大的生态: Mosquitto、MQTT.js、MQTTX(MQTT client) 。 这些工具对于实现
可观察性
等特性会有帮助 - MQTT 基于pub/sub 模式
- 在 pub/sub 之上可以构建有应答和无应答的请求(client)
- 对象解释消息使其有服务能力(server)
- 相比于 websocket 等服务, 提供了更多的功能: 账号, 桥接器...
- 目前有一个基于 postMessage 版本的 dynatalk
- MQTT 拥有庞大的生态: Mosquitto、MQTT.js、MQTTX(MQTT client) 。 这些工具对于实现
- 在探索性环境(Lively, Squeak, Snap!...)中构建早期原型
- Agency
- lively messenger
- MicroBlocks IDE 与 VM 的通信
- Squeak 的对象/消息机制
- CodeLab Adapter
- 建立在异步消息之上的同步指令
- 在 Roblox 中探索自主 Agent