当前位置: 首页 > news >正文

Choral 编排式编程语言:节省 50% - 400% 代码量,提升分布式系统开发效率!

简单解释版!

编写分布式系统程序很麻烦,要协调多个通过副作用交互的程序,手动控制副作用,出错后找问题难,测试工作也繁琐。Choral 能缓解这些问题,可将分布式系统的协调过程作为单一程序编写。它对 Java 程序员友好,扩展了 Java 语法,将通信副作用封装在类型安全的抽象中,让开发者专注高层次细节。若程序协调描述和实际实现不兼容,Choral 编译器会报错并帮助解决。它还附带测试工具 ChoralUnit,可轻松编写集成测试并在分布式系统上执行运行时测试。使用 Choral 编程简单,能获得具有分散控制和强正确性保证的分布式系统,还可可靠组合不同编译程序。

语言特性

若想大致了解 Choral 程序,可先查看“Alice、Bob 和 Carol 参加会议”的示例。Choral 是面向对象语言,其对象类型形式为 `T@(R1, ..., Rn)`,`T` 是对象接口,`R1, ..., Rn` 是协作实现对象的角色。将角色融入数据类型,使分布在类型层面体现。例如,可编写程序在 `Alice` 和 `Bob` 处并行打印问候消息。通过调用能将数据从一个角色“移动”到另一个角色的方法可实现交互,如 `SymChannel` 接口的 `com` 方法。Choral 不固定中间件,只要满足编排程序的类型要求,就可使用自己的通信实现和现有 Java 代码,其类型系统会强制明确编排程序的通信要求。

Alice、Bob 和 Carol 参加会议

Alice 询问 Bob 是否能和 Carol 就 `topic` 开会,Bob 先问 Carol 是否有空,若 Carol 有空,Bob 再考虑自己是否参加,最后 Alice 从 Bob 处得知会议能否举行的结果。

开发方法论(即 Choral 的工作方式)

Choral 的设计目标是将编排程序生成为正确的 Java 库实现。其开发方法论如下:将系统预期协调过程编写为 Choral 编排程序;Choral 编译器为编排程序中每个角色生成 Java 库;程序员在本地实现中使用这些库。例如,对于 `Alice`、`Bob` 和 `Carol` 角色的编排程序,编译器会为每个角色生成 Java 库,提供 API 供程序员使用。

Choral 带来了哪些优势?

节省时间:在首批用例中,Choral 让实现编排程序所需编写的代码行数减少了 50% 至近 400%。提高代码安全性:编译器实现参与者本地行为,避免编排程序实现中的各类错误,生成的代码保证无死锁,能让人全局了解角色协调方式,易发现不一致之处。掌控库 API:编译后的 Java 库的方法签名与源编排程序中的方法签名同态,所见即所得。Choral 在业务流程、微服务、安全协议和一般分布式服务等领域有巨大应用潜力。

相关文章

若对编程语言感兴趣,想了解 Choral 工作原理及与其他工作的关系,可参考文章 [Choral: Object-oriented Choreographic Programming](https://dl.acm.org/doi/10.1145/3632398)。也可在 [Choreographic Programming Wikipedia article](https://en.wikipedia.org/wiki/Choreographic_programming)、[介绍编排式编程的博士论文](https://www.fabriziomontesi.com/files/choreographic-programming.pdf) 或 [编排式语言理论入门教材](https://doi.org/10.1017/9781108981491) 中了解编排式编程。[Ozone](https://github.com/dplyukhin/ozone) 是实验性库,允许在 Choral 代码中安全使用 _futures_,可编写并行处理请求或异步返回值的端点代码。可通过观看 [此视频](https://www.youtube.com/watch?v=23y1WCdvMX4) 或阅读研究文章 [Ozone: Fully Out-of-Order Choreographies](https://doi.org/10.4230/LIPIcs.ECOOP.2024.31) 了解更多。[Real-World Choreographic Programming: Full-Duplex Asynchrony and Interoperability](https://doi.org/10.22152/programming-journal.org/2024/8/8) 首次用 Choral 开发了 [Internet Relay Chat (IRC)](https://en.wikipedia.org/wiki/IRC) 协议,解决了全双工异步和互操作性问题。

http://www.jsqmd.com/news/1379493/

相关文章:

  • 指针知识点
  • 泉州经济技术开发区新房除甲醛哪家专业?多维度测评本地甲醛治理机构,鑫天成环保深度解析 - 专注室内空气检测治理
  • FIFA 23实时编辑器:打造属于你的终极足球世界
  • x86保护模式入门:从实模式到GDT的硬件级内存保护机制
  • Unity UGUI游戏设置界面开发全流程:从数据绑定到性能优化
  • 2026福建公考机构实力横评:粉笔本地化与AI驱动领跑,华图中公燃领优公学昊各具优势 - 资讯综合
  • 2026年航空航天业问题优化:数造科技陶瓷3D打印行业场景实战派 - GrowthUME
  • 香港公司真实地址挂牌流程2026年 - 资讯综合站
  • 2026宁波防水补漏检测维修哪家正规 无隐形消费商家选择指南 - 滚动商讯
  • 30分钟用SpringBoot集成DeepSeek API构建AI聊天机器人
  • HoRNDIS:在3分钟内解决Mac与安卓USB网络共享的终极方案
  • CTF_Day2
  • GB/T 2423.17-2024《环境试验 第 2 部分:试验方法 试验 Ka:盐雾》新版标准完整解读(替代 2008 版)
  • Unity高效加载与播放GIF动画:从解码原理到性能优化实战
  • 库存成本核算5大方法:先进先出、加权平均一次讲透!
  • 浙江初三复读什么学校好?省内三所主流中考复读院校客观盘点 - 品牌测评网
  • 2026年中山市场口碑不错的GEO优化公司有哪些 - 甄选测评馆
  • C++虚继承构造函数调用链与内存布局深度解析
  • Git仓库完整迁移指南:镜像克隆、远程修改与历史重构
  • 2026年南京旅行社前十名:纯玩南京二日游旅行社,资质齐全中老年慢游跟团游实力测评 - 跟我去旅游
  • @Transactional 注解怎么用?
  • 火狐渗透版禁用JS破解CTF无限刷新难题
  • 霍邱中央空调品牌推荐:松下纳诺怡除醛+自有团队安装,8年服务近2000户的本地之选 - 滚动商讯
  • TrollInstallerX终极指南:iOS 14-16.6.1系统漏洞利用与TrollStore安装器
  • 第19届成图大赛国赛复盘:从CAD建模到创新设计的实战指南
  • 猫抓浏览器扩展:你的智能网页资源管家,轻松捕获一切在线媒体
  • 非线性磁链模型在无感FOC中的应用:原理、实现与开源库实战
  • Systemd 学习总结
  • 2026鲜蛋桃酥哪个牌子好?全品类正规品牌盘点、服务商选型标准及合作避坑指南 - 商业大观
  • 彻底解决Chrome WebDriver进程残留:从原理到实战的完整指南