2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

JetBrains 元编程系统支持面向语言编程和 DSL

  • 2009-01-03
  • 本文字数:1989 字

    阅读完需:约 7 分钟

Meta Programming System( MPS )是 JetBrains 开发的面向语言编程的新工具。开发者可以用它扩展编程语言,也可以用它为企业应用创建领域特定语言( DSLs )。JetBrains 开发团队近日宣布推出 MPS 的 beta 版。

MPS 提供的软件开发环境可以创建新的定制语言,也可以扩展现有语言,然后用它们开发面向领域的应用。MPS 还可以定义新语言的类型系统、约束和专门的编辑器。MPS 用一棵抽象句法树( AST )来维护代码。AST 由节点组成,节点又包含属性、子节点和引用,程序代码就靠 AST 和这些节点完整地表达出来。创建新语言的时候,开发者定义代码编排和表达的规则,还可以规定语言类型系统的组成元素。MPS 凭借这些规则即时检查程序代码,减少用新语言编程的出错机会。MPS 还采用了代码生成的办法:用新语言在更高的层次上表达,然后 MPS 生成 Java、XML、HTML、JavaScript 等语言的可编译代码。用 MPS 建立新语言的时候,必须从 BaseLanguage 扩展。MPS 已经提供了一些常用的 BaseLanguage 扩展,协助开发者处理字符串、容器、日期、正则表达式等语言成分。

面向语言编程( LOP )是一种新的编程风格。在 LOP 里,语言好比传统编程中的类和方法,是搭建软件所用的建筑材料,开发者根据需要,或创建专门的新语言,或对旧语言作扩展。Martin Fowler 曾撰文说明用语言工作台作为IDE 工具去实现面向语言编程,也介绍过用MPS 作为语言工作台。

MPS 还适合用来创建 DSL,因为它可以为任意新语言实现定制的语言编辑器和其他约束条件。不熟悉传统编程的领域专家,可以用本行专业术语构成的 DSL 在 MPS 里工作。

MPS 软件对所有人免费,其中大部分代码还会以 Apache 2.0 许可开源。MPS 起初是 JetBrains 从 2003 年开始的一个研究项目,JetBrains 员工已经用它开发过一些新产品。目前团队的主要目标是下个月的 Beta 2 版,以及 2009 年第一季度的 1.0 版。11 月的时候 JetBrains 还发布过 IDE 产品 IntelliJ IDEA 的 8.0 版,团队协作工具的 TeamCity 的 4.0 版。MPS beta 版下载概念说明,请参阅他们的网站。网站上还有用户指南教程和专门的博客站点介绍MPS 工具的详细信息。

InfoQ 采访了 JetBrains 公司 MPS 核心开发者 Konstantin Solomatov,向他询问 MPS 的软件功能和项目未来的路线图。InfoQ 问及 MPS 与其它建模及代码生成工具的对比,比如 Eclipse Modeling Framework( EMF )、openArchitectureWare( oAW )。

MPS 所依据的概念与 EMF、oAWE 类似。三种技术都可以创建元模型,也都可以描述编辑器、自动完成、模型转换(MPS 称之为“生成器”)等方面。EMF 模型通常用图形编辑器来编辑,你可以用方框线条绘制出代表各实体的图解。这种做法对某些领域很有效,比如绘制 ER 图。但我们认为不适宜用 EMF 创建任何相对复杂的软件。 oAW 最值得注意的部分的 xText 框架,它定义的文字型 DSL 可以被解析成 EMF 模型。不过用这种方式创建语言有其局限。如果在同一个文件里混用多种语言,必须保证文法不会出现二义性,也就是说所有的输入都只能存在一种解释。文本型的语言很难保证这一点。比方说有两家厂商都想为 Java 补充一种支持金融货币的语言,而两家厂商都在语言里新增了 Money 类型。那么,如果代码里两种类型都用到了,我们解析文件的时候就无法分辨一个 Money 类型的变量到底属于哪一种语言。

MPS 把模型表示成一棵可以直接编辑的抽象句法树。在 MPS 里,代码看似文本,在很多方面的表现也如同文本,但由于我们从不需要在代码和文本之间来回转换,也就完全不用担心文法上的二义性。

好像 MPS 还可以编排语言的文法。这项功能与 Oslo OMeta 等工具的类似功能有何异同?

因为 MPS 不是基于文本的,它没有任何文本上的文法。定义语言就是定义它的抽象句法树,它的抽象文法。而没有文本上的文法,也就没有语言兼容的问题,语言从定义上就是兼容的。Oslo 和 Ometa 都是基于文本的,因此都有类似于 xText 的问题。 Oslo 和 Ometa 只能定义语言的解析器,与之相比,MPS 的功能更多,能定义语言的编辑器、约束、类型系统、数据流分析,还有生成器。

JetBrains 开发团队在那些产品中采用了 MPS 作为建模和开发工具?

其中一个是代号为“Charisma”的问题跟踪系统,它也会在 2009 年第一季度公开发布。它是完全用 MPS 编写的。 Charisma 也成了 MPS 本身所用的问题跟踪系统,还被用到 TeamCity 凳产品中。在创建 Charisma 的时候,我们开发了一门完整的 Web 开发语言,在 MPS 中扮演相当于 J2EE 的角色。

MPS 项目的未来路线图如何,有何新特性?

本次 Beta 的主要目的是收集 MPS 用户的反馈,并且决定将来的路线图。我们已经有 1.0 的计划,不过 1.0 版不会有任何大的变动和新特性。我们将在 2009 第一季度发布完 MPS 1.0 之后,再公布更长远的路线图。届时计划中应该会包括调试器和用于定义 UI 的若干新语言。

查看英文原文: JetBrains Meta Programming System Supports Language Oriented Programming and DSLs

2009-01-03 12:476295
用户头像

发布了 225 篇内容, 共 69.4 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

签约快讯|天润融通签约台铃电动车

天润融通

浩辰AI楼梯让建筑设计智能化!

在路上

cad 浩辰CAD

AI for Science(AI4S)的现在与未来,科学智能如何赋能科学研究?

ModelWhale

人工智能 科学智能 AI4S 上海人工智能实验室

成功案例丨基于OptiStruct的三轮车车架结构刚强度仿真计算与优化

Altair RapidMiner

仿真 CAE Hypermesh OptiStruct 结构优化

总决赛定档!“天翼云息壤杯”高校AI大赛巅峰之战即将打响!

天翼云开发者社区

人工智能 AI大赛 天翼云

2025全球人形机器人领域深度报告:人形机器人、具身智能技术、商业化壁垒、产业链公司及投资分析

机器人头条

科技 大模型 人形机器人 具身智能

鸿蒙NEXT上传图片功能PhotoViewPicker核心功能解析

飞龙AI

ArkTS HarmonyOS NEXT

Amazon Bedrock 助力 SolveX.AI 构建智能解题 Agent,打造头部教育科技应用

亚马逊云科技 (Amazon Web Services)

存储与野生动物保护:Solidigm为创新保育工作保驾护航

科技热闻

一面被挂,坚持刷题两月终入字节跳动,欣喜之余把算法与数据结构高频面试题分享给大家!

程序员高级码农

程序员 算法

高性能且低成本的 Goroutine 池库-Ants

天翼云开发者社区

开发 Ants

西南站丨AI驱动仿真未来,2025 Altair区域技术交流会报名开启!

Altair RapidMiner

AI 数字孪生 仿真 CAE 航空航天

内网穿透/DDNS软件怎么选?贝锐花生壳各方面表现最优秀!

科技热闻

禅道5月更新速览 | 新增交付物配置功能,支持建立跨执行任务依赖关系,研发效能平台上线

禅道项目管理

项目管理 甘特图 #研发效能 研发效能度量 研发效能管理

基于YOLOv8的火灾识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

镜舟科技

数据处理 金融 greenplum 湖仓一体 镜舟数据库

决策延迟!你的管理决策正在被拖垮

禅道项目管理

数字化进程 BI 分析工具 效能管理 研发效能度量 #项目管理

新闻速递|Altair 与佐治亚理工学院签署合作备忘录,携手推动航空航天领域创新

Altair RapidMiner

人工智能 AI 数字孪生 CAE 航空航天

SQL Server 2022新功能:将数据库备份到S3兼容的对象存储

电子尖叫食人鱼

数据库 sql

Apache Doris + MCP:Agent 时代的实时数据分析底座

SelectDB

人工智能 大数据 实时数仓 apache doris MCP

天润融通AI训练师助力企业重构核心竞争力

天润融通

AB Test来了!天润融通语音Agent升级你的外呼/呼入策略

天润融通

【银河麒麟高级服务器操作系统】正式上线云主机官方镜像

京东科技开发者

2025北京智源大会开幕|智源发布“悟界”系列大模型,解码物理世界交互新范式

智源研究院

人工智能 AI 科技

【华为云MySQL技术专栏】MySQL8.0 InnoDB ReadView的原理及性能优化

华为云开发者联盟

,华为云

CST软件HVDC 高压陶瓷套管

思茂信息

cst CST软件 CST Studio Suite

Flink在B站的大规模云原生实践

Apache Flink

大数据 flink 云原生 实时计算

大数据-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看

武子康

大数据 hadoop mapreduce hive

议程一览 | KubeCon China 2025 华为云精彩前瞻

华为云原生团队

云计算 容器 云原生

重磅!支持鸿蒙!腾讯视频ovCompose跨平台框架发布

最新动态

基于华为开发者空间,体验鲲鹏DevKit之Python字符串拼接系统性能分析

华为云开发者联盟

Python 鲲鹏 DevKit 开发者空间

JetBrains元编程系统支持面向语言编程和DSL_JetBrains_Srini Penchikala_InfoQ精选文章