Loading AI tools
来自维基百科,自由的百科全书
領域特定語言(英語:Domain-specific language,縮寫:DSL),也稱為特定域語言,是專門針對特定應用領域[註解 1]的计算机语言,和可以用在多種領域的通用語言(GPL)恰好相反。像HTML專門用在網頁設計上,就屬於領域特定語言,也有些領域特定語言只用在一個或幾個軟體上,例如MUSH軟體碼。領域特定語言還可以依使用的語言分類,像是領域特定的標記語言、領域特定的建模語言(或更廣義的規格語言)以及領域特定的程式語言。從電腦發明開始,就已出現特定用途的電腦語言。而「領域特定語言」一詞是隨著特定域建模(domain-specific modeling)的興起,才開始廣為使用。簡單的領域特定語言(特別是只有單一應用程式使用的領域特定語言),有時也會稱為迷你語言。
此條目可参照英語維基百科相應條目来扩充。 |
領域特定語言和通用語言之間沒有明確的界線,因為可能某计算机语言原來有一些適用於特定領域的特徵,但也可以應用在更通用的範圍,相反的,也有可能某计算机语言理論上可以用在多種領域,但實務上只用在特定領域中。像Perl一開始是設計為文字處理語言以及膠水語言(和AWK、shell script的領域相同),但後來成為通用的程式語言。相反的,PostScript是圖靈完備的語言,但實際上只用作頁面描述語言(領域特定語言)。
設計及使用適合的語言,是領域工程中重要的一環,作法可能是選擇適合此領域的現有語言(可能是某個領域特定語言或通用電腦語言),也可能是開發一種新的領域特定語言。面向语言的程序设计會把為了描述問題而創建特定語言一事,視為問題解決流程的標準步驟之一。假如用一種新的領域特定語言描述某種問題,會比用現有語言描述更加清楚,而且這種問題又常常出現,那麼創建此一領域特定語言(以及配合的軟體)就是值得的。領域特定語言可以針對特定的問題領域、特定的問題表示方式、特定的解決方案技術,或是某一領域的其他層面。
领域特定语言是在設計和實現上有特定目的的語言(或是宣告的語法或是文件)。领域特定语言可以是視覺對話語言(visual diagramming language),例如Generic Eclipse Modeling System中建立的語言,可以是程式化抽象,例如Eclipse Modeling Framework,也可以是文字語言。例如,命名列工具grep中正则表达式語法,可以在文字中尋找特殊排列規則的文字。sed工具定義了匹配和取代正则表达式的語法。一般來說,這些小工具可以在殼層內整合使用,以達到複雜的系統工作。
有時领域特定语言和腳本語言之間沒有清楚的分界,不過领域特定语言多半沒有處理檔案系統的低階功能、跨行程控制、以及一些全功能程式語言或腳本語言必須有的功能。許多领域特定语言不會編譯成字节码或是可執行檔,而會轉換為許多不同的媒體格式。像GraphViz可以輸出PostScript、GIF檔、JPEG檔等。Csound則會編譯成聲音檔。像是POV-Ray之類的光線追蹤(ray-tracing)领域特定语言會轉換為圖形檔。像是SQL之類的電腦語言會有種特殊的情形:SQL是針對特定領域(存取和維護關聯資料庫)的,所以的確是领域特定语言,也常會其他應用程式呼叫,但SQL的關鍵字及函數比許多腳本語言都多,一般也會視為是獨立的語言,有可能是因為在程式中資料庫使用的普及性,以及要成為此語言專家需要有的掌握程度。
許多领域特定语言也有提供API,因此可以在其他程式執行時呼叫此API,不影響原程式的流程,此運作方式類似程式的函式庫,和腳本語言之間的差異就更小了。
有些领域特定语言會隨著時間擴展,加入全功能的程式開發工具,因此更增加了該語言是否是领域特定语言的問題難度。
在模型驱动工程中,有許多领域特定语言的例子,像是用斷言說明模型的OCL、或是领域特定的轉換语言QVT,不過统一建模语言(UML)反而是通用的建模語言。
有一個類推可以說明超小型語言及领域特定语言:超小型語言像是刀,有許多不同的使用方式,從切食物到鋸樹都可以。领域特定语言像是電鑽,也有很多不同的使用方式,不過都是用來在東西上鑽洞上。通用特定语言是完整的完整的工作台,有許多特別用來進行特定工作的工具。程式設計師使用领域特定语言的方式類似他們看工具台,知道他們需要一個較好的電鑽,而且找到一個剛好適用的领域特定语言。
領域特定語言的一些缺點如下:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.