惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News - Newest:
Hacker News - Newest: "LLM"
U
Unit 42
月光博客
月光博客
T
The Blog of Author Tim Ferriss
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
美团技术团队
D
Docker
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
The Cloudflare Blog
博客园 - 叶小钗
M
MIT News - Artificial intelligence
AI
AI
Security Archives - TechRepublic
Security Archives - TechRepublic
The Register - Security
The Register - Security
C
Cybersecurity and Infrastructure Security Agency CISA
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
宝玉的分享
宝玉的分享
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Security Latest
Security Latest
Recorded Future
Recorded Future
Cloudbric
Cloudbric
K
Kaspersky official blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园_首页
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Last Week in AI
Last Week in AI
I
Intezer
The Hacker News
The Hacker News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
Attack and Defense Labs
Attack and Defense Labs
MongoDB | Blog
MongoDB | Blog
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
Project Zero
Project Zero

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
介绍 Dynatalk
种瓜 · 2024-04-03 · via 夜行人

文章目录

Dynatalk 致力于对象之间的交流, 尤其关心不同语言/环境之间的互操作。 – Dynatalk

Make it work, make it correct, make it fast, make it cheap – Alan Kay

前言

为什么制作这样一个东西?

我喜欢在 Squeak 进行探索性编程, 但 Squeak 第三方库不够丰富。 渴望一个简单的跨语言的对象协作机制, 需要时, 可以在 Squeak 里使用 Python 或浏览器的 API。

什么情况下对你有用?

  • 你想让分布在不同语言/环境之间的对象协同工作, 诸如使用图形化环境或 Python 驱动 Roblox
  • 你尝试过 RPC 之类的东西, 但渴望有更多的灵活性和控制权
  • 你希望有一个比 ROS 更轻量级的通信系统, 来协调机器人的不同部分。它足够简单, 可以轻易被 hack 来满足特殊需求。 但又不至于简陋到只有 pub/sub, 它提供了基础的功能: 对 Services, Actions 的支持
  • 你想构建Future Park(teamLab) 那样的交互艺术项目
  • 你有一个跟 CodeLab Neverland 一样的可编程空间, 想让环境中的大量可编程对象协同工作

先前的经验

把事情搞得困难是简单的, 把事情搞得简单是困难的

Dynatalk 可以看作对 CodeLab Adapter 核心的重构。

它们都试图提供基于消息的对象协作机制。

CodeLab Adapter 的一个用例是用于驱动可编程空间, 这方面引起过许多人的兴趣。

CodeLab Adapter 在设计上有许多地方不令人满意, 关注点的分离做得不好, 正交性不够, 最终导致项目变得复杂, 难以持续生长, 维护成了苦差事。

Dynatalk 追求简单、一致和正交, 遵循关注点分离的原则。 它是易于理解且易于扩展的。

所有的代码目前都开源在 Github.

开始使用

Dynatalk 目前支持的编编程语言客户端:

选择你正在使用的语言的客户端, 里边有具体的引导。

FAQ

有视频教程吗?

参考 在线视频

目前有哪些局限?

一些语言的 Dynatalk 客户端(诸如 Python)对并发的支持做得还不够, 不打算把它列入核心中, 而将其视为可扩展的能力。

同一个 supervisor 里的 agent 并不是并发执行的, 它们会彼此阻塞。

dynatalk 将并发性作为关注点从核心中分离出来。如果你需要并发执行多个 agent, 可以继承 Agent 基类, 将 _commit 重写为多线程或多进程版本(dynatalk 可能需要在 supervisor 和 agent 之间架设一个 queue)。

目前我还没有这个需求, 如果你确实需要并发功能,欢迎联系我。

我可以替换消息传输协议(MQTT)吗?

目前采用了 MQTT 作为底层的消息传输协议, 这部分被设计为可插拔的, 可以很容易替换成 RabbitMQ、ZeroMQ、websocket, 或任何你喜欢的其他消息协议…

我甚至完全使用 HTTP 实现过它(因为 Roblox 服务器只支持 HTTP)。

只需要构建一个新的 Space 替换 MQTTSpace 即可(只有数十行代码)。

目前已经有了多种基于不同消息传递机制的 dynatalk:

强大而危险的 eval agent

能力越大,责任越大。

我喜欢 eval agent(可以执行代码的 agent), 这是 JavaScript 实现的一个例子

通过与 eval agent 交互, 我们可以获得另一个编程语言的所有能力, 这对于探索性编程和构建原型非常方便。

但在部署是请注意风险。

设计理念是什么?

Alan Kay 创造 “OOP(面向对象)” 一词时, 包含以下三个含义:

  • 一切都是对象
  • 对象通过消息进行沟通
  • 对象解释它所理解的消息

Smalltalk 展示了如何实施这些想法。

许多编程语言都支持面向对象风格的编程, 它们通常关注第 1 点, 而对 2, 3 点缺少关注。

Dynatalk 致力于对象之间的交流, 尤其关心不同语言/环境之间的互操作。

Dynatalk 提供的通信对象被抽象化为 Agent, 它在行为上类似于 Actor 模型。

参考 设计理念

它是如何开发的?

SqueakJS 类似, 最初的 Dynatalk 以探索性编程的风格在 LivelyKernel 中开发, 受益于 LivelyKernel 强大的 liveness, 开发过程高效而愉快。

最近的几个版本在 Squeak 中开发, 借助其强大的 debugger, 可以将手伸到运行堆栈的每个角落里。在 Smalltalk 中,测试驱动风格的开发充满了乐趣(在其他语言中通常是烦人的苦差事), 这种开发风格诞生自 Smalltalk 是不足为怪的。

其他语言的版本(Python、Snap!、MicroBlocks) 从以上两者中翻译而来。

参考