語言工作台

2008 年 9 月 9 日

語言工作台是我在 2005 年創造的一個術語,用來描述一種新的軟體開發工具類別,旨在透過豐富的多元整合 特定領域語言 環境來建構軟體。這些工具距離成為主流還有一段距離,但它們的開發持續進行,而且持續引人入勝。它們是我認為少數幾個能顯著改變程式設計領域的事物之一。

語言工作台支援面向語言程式設計的概念,也就是透過找出系統的各個領域,並為每個領域使用(可能建構)特定領域語言來建構軟體系統的概念。工作台同時支援定義這些語言,以及將它們整合在一起,形成一個有條理的整體。

要定義工作台支援的 DSL

  • 定義語言的語意模型架構
  • 定義語言的一個或多個豐富的編輯環境
  • 透過解釋和程式碼產生等方式,定義語言的行為語意。

編輯環境是讓這些工具脫穎而出的關鍵。數十年來,人們一直在製作外部 DSL,但你會在文字編輯器中編輯它們。語言工作台希望將這一點發揚光大,達到現代 PostIntelliJ IDE 的水準,甚至超越。有些語言工作台支援以一般文字編輯,其他則使用支援結構化文字(不需要解析)、圖表,或兩者的投影式編輯器。

一種特別強大的編輯風格是將範例執行融入編輯器中的環境,我喜歡稱之為 說明式程式設計。最常見的範例是試算表。當你編輯試算表時,你看到的主要內容不是代表行為定義的公式,而是從公式計算出來的數字。程式和範例資料交織在一起,因此在你編輯程式的同時,你可以立即看到結果。這種編輯風格與我們通常對程式語言的概念截然不同,而且很可能是讓領域專家更積極參與軟體開發的關鍵。

我在 2005 年寫了一 系列論文 關於語言工作台。其中一些想法需要修正,但目前為止,它們是對語言工作台最深入的討論。