fbpx
维基百科

领域特定语言

領域特定語言(英語:domain-specific language),也稱為特定域語言,簡稱DSL,是專門針對特定應用領域英语Domain (software engineering)[註解 1]计算机语言,和可以用在多種領域的通用語言英语general-purpose language(GPL)恰好相反。像HTML專門用在網頁設計上,就屬於領域特定語言,也有些領域特定語言只用在一個或幾個軟體上,例如MUSH英语MESH軟體碼。領域特定語言還可以依使用的語言分類,像是領域特定的標記語言、領域特定的建模語言(或更廣義的規格語言)以及領域特定的程式語言。從電腦發明開始,就已出現特定用途的電腦語言。而「領域特定語言」一詞是隨著特定域建模(domain-specific modeling)的興起,才開始廣為使用。簡單的領域特定語言(特別是只有單一應用程式使用的領域特定語言),有時也會稱為迷你語言

領域特定語言和通用語言之間沒有明確的界線,因為可能某计算机语言原來有一些適用於特定領域的特徵,但也可以應用在更通用的範圍,相反的,也有可能某计算机语言理論上可以用在多種領域,但實務上只用在特定領域中。像Perl一開始是設計為文字處理語言以及膠水語言(和AWKshell script的領域相同),但後來成為通用的程式語言。相反的,PostScript圖靈完備的語言,但實際上只用作頁面描述語言(領域特定語言)。

用途

設計及使用適合的語言,是領域工程英语domain engineering中重要的一環,作法可能是選擇適合此領域的現有語言(可能是某個領域特定語言或通用電腦語言),也可能是開發一種新的領域特定語言。面向语言的程序设计會把為了描述問題而創建特定語言一事,視為問題解決流程的標準步驟之一。假如用一種新的領域特定語言描述某種問題,會比用現有語言描述更加清楚,而且這種問題又常常出現,那麼創建此一領域特定語言(以及配合的軟體)就是值得的。領域特定語言可以針對特定的問題領域、特定的問題表示方式、特定的解決方案技術,或是某一領域的其他層面。

用在設計和實現上

领域特定语言是在設計和實現上有特定目的的語言(或是宣告的語法或是文件)。领域特定语言可以是視覺對話語言(visual diagramming language),例如Generic Eclipse Modeling System英语Generic Eclipse Modeling System中建立的語言,可以是程式化抽象,例如Eclipse Modeling Framework,也可以是文字語言。例如,命名列工具grep正则表达式語法,可以在文字中尋找特殊排列規則的文字。sed工具定義了匹配和取代正则表达式的語法。一般來說,這些小工具可以在殼層內整合使用,以達到複雜的系統工作。

有時领域特定语言和腳本語言之間沒有清楚的分界,不過领域特定语言多半沒有處理檔案系統的低階功能、跨行程控制、以及一些全功能程式語言或腳本語言必須有的功能。許多领域特定语言不會編譯成字节码或是可執行檔,而會轉換為許多不同的媒體格式。像GraphViz可以輸出PostScriptGIF檔、JPEG檔等。Csound則會編譯成聲音檔。像是POV-Ray之類的光線追蹤(ray-tracing)领域特定语言會轉換為圖形檔。像是SQL之類的電腦語言會有種特殊的情形:SQL是針對特定領域(存取和維護關聯資料庫)的,所以的確是领域特定语言,也常會其他應用程式呼叫,但SQL的關鍵字及函數比許多腳本語言都多,一般也會視為是獨立的語言,有可能是因為在程式中資料庫使用的普及性,以及要成為此語言專家需要有的掌握程度。

許多领域特定语言也有提供API,因此可以在其他程式執行時呼叫此API,不影響原程式的流程,此運作方式類似程式的函式庫,和腳本語言之間的差異就更小了。

程式開發工具

有些领域特定语言會隨著時間擴展,加入全功能的程式開發工具,因此更增加了該語言是否是领域特定语言的問題難度。

模型驱动工程中,有許多领域特定语言的例子,像是用斷言說明模型的OCL英语Object Constraint Language、或是领域特定的轉換语言QVT英语QVT,不過统一建模语言(UML)反而是通用的建模語言。

有一個類推可以說明超小型語言及领域特定语言:超小型語言像是刀,有許多不同的使用方式,從切食物到鋸樹都可以。领域特定语言像是電鑽,也有很多不同的使用方式,不過都是用來在東西上鑽洞上。通用特定语言是完整的完整的工作台,有許多特別用來進行特定工作的工具。程式設計師使用领域特定语言的方式類似他們看工具台,知道他們需要一個較好的電鑽,而且找到一個剛好適用的领域特定语言。

優點和缺點

領域特定語言的一些優點如下[1][2]

  • 領域特定語言可以使解決方案以較簡潔的方式呈現,而且達到問題域上的抽象層次。意思就是領域專家自身可以理解、驗證、修改,甚至開發領域特定語言的程式。不過,可以達到此程度的例子不多[3]
  • 領域特定語言可以達到領域層次的计算机安全。只要其語言構造(language construct)是安全的,以此寫的所有程式碼可以視為是安全的[來源請求]
  • 領域特定語言有助於將商業資訊系統的開發,從傳統的軟體開發者轉到領域專家身上,此一群體人數較多,對此一領域有較深入知識,但程式技術較為不足[4]
  • 若領域特定語言的scope較小,會比較容易學習。

領域特定語言的一些缺點如下:

  • 學習新語言的成本。
  • 應用範圍受限。
  • 設計、實現及維護領域特定語言以及開發工具(集成开发环境)的成本。
  • 尋找、設定及維護適當的語言scope。
  • 設計領域特定語言時,需在領域專門的語言構造,以及通用的語言構造之間取捨平衡。
  • 相較於程式設計師撰寫的程式碼,領域特定語言的效率可能會比較低。
  • 同一領域可能有計多種非標準語言,例如不同保險公司開發、使用的領域特定語言[5]
  • 非技術背景的領域專家不容易自行撰寫或修改領域特定語言的程式[3]
  • 領域特定語言和(用通用語言撰寫的)IT系統其他模組不易整合。
  • 特定領域特定語言的專家人數較少,會帶來人力成本的增加。
  • 不容易找到相同領域特定語言的程式碼範例。

註解

  1. ^ 此處的領域也可能是指业务领域(business area),例如壽險政策、戰鬥模擬、薪資計算、帳單管理等

相關條目

  • 語言工作檯英语Language workbench
  • 架構描述語言
  • 專門用途語言英语Language for specific purposes
  • 行話
  • 元語言抽象英语Metalinguistic abstraction
  • 程式設計領域英语Programming domain

參考資料

  1. ^ Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys, 37(4):316–344, 2005.doi:10.1145/1118890.1118892
  2. ^ Diomidis Spinellis. Notable design patterns for domain specific languages (页面存档备份,存于互联网档案馆). Journal of Systems and Software, 56(1):91–99, February 2001. doi:10.1016/S0164-1212(00)00089-3
  3. ^ 3.0 3.1 Freudenthal, Margus. Domain Specific Languages in a Customs Information System. IEEE Software. 1 January 2009: 1. doi:10.1109/MS.2009.152. 
  4. ^ Aram, Michael; Neumann, Gustaf. Multilayered analysis of co-development of business information systems (PDF). Journal of Internet Services and Applications. 2015-07-01, 6 (1) [2022-10-08]. S2CID 16502371. doi:10.1186/s13174-015-0030-8 . (原始内容 (PDF)于2015-09-07). 
  5. ^ Miotto, Eric. (PDF). [2010-11-22]. (原始内容 (PDF)存档于2011-07-24). 

领域特定语言, 此條目可参照英語維基百科相應條目来扩充, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签, 領域特定語言, 英語, domain, specific, language, 也稱為. 此條目可参照英語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 領域特定語言 英語 domain specific language 也稱為特定域語言 簡稱DSL 是專門針對特定應用領域 英语 Domain software engineering 註解 1 的计算机语言 和可以用在多種領域的通用語言 英语 general purpose language GPL 恰好相反 像HTML專門用在網頁設計上 就屬於領域特定語言 也有些領域特定語言只用在一個或幾個軟體上 例如MUSH 英语 MESH 軟體碼 領域特定語言還可以依使用的語言分類 像是領域特定的標記語言 領域特定的建模語言 或更廣義的規格語言 以及領域特定的程式語言 從電腦發明開始 就已出現特定用途的電腦語言 而 領域特定語言 一詞是隨著特定域建模 domain specific modeling 的興起 才開始廣為使用 簡單的領域特定語言 特別是只有單一應用程式使用的領域特定語言 有時也會稱為迷你語言 領域特定語言和通用語言之間沒有明確的界線 因為可能某计算机语言原來有一些適用於特定領域的特徵 但也可以應用在更通用的範圍 相反的 也有可能某计算机语言理論上可以用在多種領域 但實務上只用在特定領域中 像Perl一開始是設計為文字處理語言以及膠水語言 和AWK shell script的領域相同 但後來成為通用的程式語言 相反的 PostScript是圖靈完備的語言 但實際上只用作頁面描述語言 領域特定語言 目录 1 用途 1 1 用在設計和實現上 1 2 程式開發工具 2 優點和缺點 3 註解 4 相關條目 5 參考資料用途 编辑設計及使用適合的語言 是領域工程 英语 domain engineering 中重要的一環 作法可能是選擇適合此領域的現有語言 可能是某個領域特定語言或通用電腦語言 也可能是開發一種新的領域特定語言 面向语言的程序设计會把為了描述問題而創建特定語言一事 視為問題解決流程的標準步驟之一 假如用一種新的領域特定語言描述某種問題 會比用現有語言描述更加清楚 而且這種問題又常常出現 那麼創建此一領域特定語言 以及配合的軟體 就是值得的 領域特定語言可以針對特定的問題領域 特定的問題表示方式 特定的解決方案技術 或是某一領域的其他層面 用在設計和實現上 编辑 领域特定语言是在設計和實現上有特定目的的語言 或是宣告的語法或是文件 领域特定语言可以是視覺對話語言 visual diagramming language 例如Generic Eclipse Modeling System 英语 Generic Eclipse Modeling System 中建立的語言 可以是程式化抽象 例如Eclipse Modeling Framework 也可以是文字語言 例如 命名列工具grep中正则表达式語法 可以在文字中尋找特殊排列規則的文字 sed工具定義了匹配和取代正则表达式的語法 一般來說 這些小工具可以在殼層內整合使用 以達到複雜的系統工作 有時领域特定语言和腳本語言之間沒有清楚的分界 不過领域特定语言多半沒有處理檔案系統的低階功能 跨行程控制 以及一些全功能程式語言或腳本語言必須有的功能 許多领域特定语言不會編譯成字节码或是可執行檔 而會轉換為許多不同的媒體格式 像GraphViz可以輸出PostScript GIF檔 JPEG檔等 Csound則會編譯成聲音檔 像是POV Ray之類的光線追蹤 ray tracing 领域特定语言會轉換為圖形檔 像是SQL之類的電腦語言會有種特殊的情形 SQL是針對特定領域 存取和維護關聯資料庫 的 所以的確是领域特定语言 也常會其他應用程式呼叫 但SQL的關鍵字及函數比許多腳本語言都多 一般也會視為是獨立的語言 有可能是因為在程式中資料庫使用的普及性 以及要成為此語言專家需要有的掌握程度 許多领域特定语言也有提供API 因此可以在其他程式執行時呼叫此API 不影響原程式的流程 此運作方式類似程式的函式庫 和腳本語言之間的差異就更小了 程式開發工具 编辑 有些领域特定语言會隨著時間擴展 加入全功能的程式開發工具 因此更增加了該語言是否是领域特定语言的問題難度 在模型驱动工程中 有許多领域特定语言的例子 像是用斷言說明模型的OCL 英语 Object Constraint Language 或是领域特定的轉換语言QVT 英语 QVT 不過统一建模语言 UML 反而是通用的建模語言 有一個類推可以說明超小型語言及领域特定语言 超小型語言像是刀 有許多不同的使用方式 從切食物到鋸樹都可以 领域特定语言像是電鑽 也有很多不同的使用方式 不過都是用來在東西上鑽洞上 通用特定语言是完整的完整的工作台 有許多特別用來進行特定工作的工具 程式設計師使用领域特定语言的方式類似他們看工具台 知道他們需要一個較好的電鑽 而且找到一個剛好適用的领域特定语言 優點和缺點 编辑領域特定語言的一些優點如下 1 2 領域特定語言可以使解決方案以較簡潔的方式呈現 而且達到問題域上的抽象層次 意思就是領域專家自身可以理解 驗證 修改 甚至開發領域特定語言的程式 不過 可以達到此程度的例子不多 3 領域特定語言可以達到領域層次的计算机安全 只要其語言構造 language construct 是安全的 以此寫的所有程式碼可以視為是安全的 來源請求 領域特定語言有助於將商業資訊系統的開發 從傳統的軟體開發者轉到領域專家身上 此一群體人數較多 對此一領域有較深入知識 但程式技術較為不足 4 若領域特定語言的scope較小 會比較容易學習 領域特定語言的一些缺點如下 學習新語言的成本 應用範圍受限 設計 實現及維護領域特定語言以及開發工具 集成开发环境 的成本 尋找 設定及維護適當的語言scope 設計領域特定語言時 需在領域專門的語言構造 以及通用的語言構造之間取捨平衡 相較於程式設計師撰寫的程式碼 領域特定語言的效率可能會比較低 同一領域可能有計多種非標準語言 例如不同保險公司開發 使用的領域特定語言 5 非技術背景的領域專家不容易自行撰寫或修改領域特定語言的程式 3 領域特定語言和 用通用語言撰寫的 IT系統其他模組不易整合 特定領域特定語言的專家人數較少 會帶來人力成本的增加 不容易找到相同領域特定語言的程式碼範例 註解 编辑 此處的領域也可能是指业务领域 business area 例如壽險政策 戰鬥模擬 薪資計算 帳單管理等相關條目 编辑語言工作檯 英语 Language workbench 架構描述語言 專門用途語言 英语 Language for specific purposes 行話 元語言抽象 英语 Metalinguistic abstraction 程式設計領域 英语 Programming domain 參考資料 编辑 Marjan Mernik Jan Heering and Anthony M Sloane When and how to develop domain specific languages ACM Computing Surveys 37 4 316 344 2005 doi 10 1145 1118890 1118892 Diomidis Spinellis Notable design patterns for domain specific languages 页面存档备份 存于互联网档案馆 Journal of Systems and Software 56 1 91 99 February 2001 doi 10 1016 S0164 1212 00 00089 3 3 0 3 1 Freudenthal Margus Domain Specific Languages in a Customs Information System IEEE Software 1 January 2009 1 doi 10 1109 MS 2009 152 Aram Michael Neumann Gustaf Multilayered analysis of co development of business information systems PDF Journal of Internet Services and Applications 2015 07 01 6 1 2022 10 08 S2CID 16502371 doi 10 1186 s13174 015 0030 8 原始内容存档 PDF 于2015 09 07 Miotto Eric On the integration of domain specific and scientific bodies of knowledge in Model Driven Engineering PDF 2010 11 22 原始内容 PDF 存档于2011 07 24 取自 https zh wikipedia org w index php title 领域特定语言 amp oldid 75340742, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。