语言工作台

2008年9月9日

语言工作台是我在2005年创造的一个术语,用来描述一种新型的软件开发工具,它旨在通过多个集成领域特定语言的丰富环境来构建软件。这些工具距离主流应用还有很长一段距离,但它们的开发仍在继续,并且越来越有趣。它们是我认为可以显著改变编程格局的少数事物之一。

语言工作台支持面向语言的编程理念,即通过识别系统的各个领域并为每个领域使用(也许是构建)领域特定语言来构建软件系统。工作台既支持这些语言的定义,也支持将它们集成到一个连贯的整体中。

定义工作台支持的 DSL

  • 定义语言语义模型的模式
  • 为语言定义一个或多个丰富的编辑环境
  • 通过解释和代码生成相结合的方式定义语言的行为语义。

编辑环境是这些工具脱颖而出的关键。人们几十年来一直在制作外部 DSL,但你是在文本编辑器中编辑它们。语言工作台希望将此推向更远,接近现代PostIntelliJ IDE 的水平,甚至超越。一些语言工作台支持在普通文本中进行编辑,另一些则使用投影编辑器,支持不需要解析的结构化文本、图表或两者兼而有之。

一种特别强大的编辑风格是将示例执行编织到编辑器中的环境,我称之为说明性编程。最常见的例子是电子表格。当你编辑电子表格时,你看到的主要内容不是表示行为定义的公式,而是从公式计算出来的数字。程序和示例数据交织在一起,因此当你编辑程序时,你会立即看到结果。这种编辑风格与我们通常对编程语言的认识截然不同,并且可能是更好地让领域专家参与软件开发的关键。

2005 年,我写了一篇关于语言工作台的论文集。其中一些想法需要修改,但目前它们是关于这些想法的最佳深入讨论。