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

如何掌握 Lustre/Scade 同步数据流语言

从 KPN 的萌芽开始,到 Lustre/Scade 的发展,再到 Velus/Zelus/Swan 在形式化编译、连续时间建模、MBD 平权等各方面的边界拓展,同步数据流语言已经历许多。现在,我们讨论如何掌握 Lustre/Scade 这类法式技术,从语言基础,到当前发展。

对掌握 Lustre/Scade 的方法讨论,将从三方面展开:

  • Lustre/Scade 语言基础和相关技术。
  • Lustre/Scade 技术的发展演变过程。
  • Lustre/Scade 当前的拓展方向。

从以上三方面将分别掌握 Lustre/Scade 的基础、历史演变、未来发展。

Lustre/Scade 语言基础和相关技术

Lustre/Scade的语言基础和相关技术,可从巴黎高师2024Q4至2025Q1开设的《同步反应式系统》课程进行掌握。课程网站可访问wikimpri.dptinfo.ens-cachan.fr

在该课程中,将介绍Lustre/Scade等同步语言的数学原理、其语义和逻辑基础、编译成软件的相关技术、通过模型检测进行形式化验证的方法。该课程的大纲由如下部分构成:

  • 第一节至第三节中,将讨论Lustre v4/Lustre v6/Heptagon/Scade 6等语言特性中的数据流部分与控制流部分,将涉及到时序算子与形式化方法之间的关联,以及采样操作中的时钟概念对支持控制流特性的关键作用;以及相关的SMT模型检测技术及Kind 2工具。

  • 在第四节中,将讨论在 Velus 编译器中使用证明辅助工具进行语义形式化和编译算法的端到端正确性证明。

  • 在第五节至第八节中,聚焦于从 Lustre 出发的同步语言,并从类型化函数式语言的视角进行探讨:将研究高阶、控制结构(例如模块化重置、分层自动机)等特性对语义的影响,包括其静态语义和动态语义。将讨论例如某些属性(如确定性)可以通过专门的类型系统以模块化方式描述和验证。

  • 在第九节中,将讨论混合模型编写,将同步语言(离散时间)的构造与常微分方程(ODE)结合,用以描述软件与其物理环境之间的交互。将讨论这一设计在静态和动态语义、编译以及运行时系统(与 ODE 求解器对接)方面所带来的问题。

Lustre/Scade 技术的演变发展过程

Lustre/Scade 的技术演变,通过 A Brief History of Synchronous Programming (Marc Pouzet, SYNCHRON 22) csdn.net 以及 The Synchronous Languages 12 Years Later (Albert Benveniste, 2022) csdn.net 可得到了解。

对更加具体的信息,有若干途径进行了解:

  • 浏览 SYNCRHON 会议历年的主题变化。csdn.net

  • 浏览 ERTS 会议每双年的主题变化。csdn.net

  • Lustre/Scade 技术全明星的工作,比如 Albert Benveniste, Baptiste Pauget, Basile Pensin, Bruno Pagano, Cedric Pasteur, Erwan Jahier, Jean Louis Colaco, Leonard Gerard, Lelio Brun, Marc Pouzet, Nicolas Halbwachs, Pascal Raymond, Paul Jeanmaire, Paul Caspi, Timothy Bouke 等人。

Lustre/Scade 当前的拓展方向

在巴黎高师2024Q4至2025Q1开设的《同步反应式系统》课程中,提到了 Lustre/Scade 的若干发展方向。

  • 在第四节中,讨论的使用证明辅助工具进行语义形式化和编译算法的端到端正确性证明。
  • 在第九节中讨论的向连续时间建模的拓展。该方向在2015年Scade hybrid中已有试验性实践,但10年后的2025年,未出现在Scade Suite系列中。然而,值得注意的是,在下一代Scade技术(Scade One)中,已为该拓展做好了铺垫csdn.net

除语言特性的改变外,在商业策略和具体实现技术方面,Scade技术也作出了相比过去30年(95-25)显著不同的选择:

  • MBD技术平权,将MBD技术从少数高安全领域向更广泛的安全嵌入式软件普及。csdn.net
  • 可视化编程与文本编程的统一。csdn.netcsdn.net
  • 以及在建模技术和对外集成技术方面,下一时代的着力点选择为.NETPython(PyScadeOne)。csdn.net

相关文章:

  • 基于建造者模式的信号量与理解建造者模式
  • 每日算法-250502
  • Python爬虫实战:获取好大夫在线各专业全国医院排行榜数据并分析,为患者就医做参考
  • 传统银行服务和 区块链支付无缝融合的一种解决方案
  • 【AI面试准备】数据治理与GDPR脱敏机制构建
  • 4.Java中的注释
  • VBA宏即根据第一列的内容和第二列的数字,按照数字数量生成对应内容并依次放在第三列、第四列等
  • c++环境和vscode常用的一些有用插件
  • Qt C++简单图形界面与绘图实验
  • 开闭原则与依赖倒置原则区别:原类不变,新增类(功能)vs 接口类不变,原实现类可变
  • 算法篇(九)【滑动窗口】
  • 《筑牢防线:全方位守护移动应用免受逆向侵扰》
  • linux下如何在一个录目中将一个文件复制到另一个录目,删除目录
  • A2A 协议与 MCP 协议:智能代理生态系统的双轮驱动
  • 组件通信-自定义事件
  • Dify 安装 使用
  • STM32 ZIBEE DL-20 无线串口模块
  • Linux Netlink机制:现代网络通信的核心
  • C++ set和map
  • 5月2日日记
  • 纽约大都会博物馆展“萨金特与巴黎”:从艺术生到明星画家
  • 德雷克海峡发生7.4级地震,震源深度10千米
  • 刘洪洁已任六安市委副书记、市政府党组书记
  • 湖南新宁一矿厂排水管破裂,尾砂及积水泄漏至河流,当地回应
  • 王毅谈金砖国家反恐和网络安全合作
  • 滨江集团:一季度营收225.07亿元,净利润9.75亿元