Base Language之所以如此命名,是因為它是很多需要基本編程支持如變量、語句、循環等的語言很好的基礎;它能夠以三種方式使用:你可以擴展它以創建出你自己的基于它的語言,你可以在你的程序中引用它的概念,你還可以以Base Language生成你的代碼;將會有幾種可用的生成器來將Base Language轉換成其它語言如Java,C++等;當然,不是每種語言都需要使用Base Language,但是在很多情況下,它是一個很好的起點
Collection Language
下一種我們需要的最重要的語言是和集合一起工作的語言;對集合支持的需求是普遍存在的;每種主要的主流語言都提供了對集合某種類型的支持,例如,在Java 中你有java.util,在C++中你有STL;每個人都需要集合;如果每種DSL都提供自己的對集合的支持,那么將會有a Babylon of不同的集合語言,它們互不兼容;這就是為什么MPS必須提供一種每個人都使用的單一的Collection Language的原因
在很多主流語言中,集合并非語言特性而是類庫,一個例子是Java的java.util包;這種支持技術上來說是存在的,但它是不方便的,雜亂的,并且易于出錯的
Yuck!今天大部分的Java代碼被一行接一行多余的、重復的處理集合的代碼弄的雜亂無章;圖6顯示了一個例子,Collection Language是如何beats the tar out of a 類庫的;例子是一個計算一組給定的點的convex hull的算法;更多關于Collection Language的細節會在以后的文章中提及
User Interface Language
User Interface Language是我們的平臺中下一種最重要的DSL;有趣的是,我前面提到的Editor Language能夠另人信服的用來提供用戶界面,但是一種專為圖形用戶界面設計的語言將會更靈活;這種語言帶來的益處是巨大的;Java Swing代碼就是一個想成為DSL的類庫的極好的例子:功能有了,但很容易被誤用,并且Swing的代碼是徹底雜亂的;很多如今的開發環境都包含GUI builder來簡化用戶界面的創建;User Interface Language將把這項任務帶到一個更高的層次;我將在以后的文章中討論更多細節
Getting Started with MPS
我已經能夠聽到一些對LOP懷疑的反應:“聽起來不錯,但是我們的項目已經步入正軌,現在切換到LOP是不可行的”,或者“聽起來不錯,但用一個像LOP這樣的未經檢驗的方法來啟動一個現實生活中的項目風險太大了”,或者“聽起來不錯,但是它什么時候才能為它的黃金時期做好準備呢?別忘了OOP用了20年才成為主流”
好消息是我們不需要一頭扎進未知里,你可以先用腳趾頭試一下水;你可以在你的項目中只是應用LOP的一小塊來看一下它有沒有提供一些實際的好處,然后如果你喜歡你可以用多一點;在不遠的未來,你可以在MPS里試驗兩個可能的LOP應用:
Using MPS on Java Applications
已經有一個IntelliJ IDEA的原型插件允許你在你的項目中包含MPS的概念模型;當你編輯模型時,模型會自動在后臺被轉換成Java源代碼;因此,你可以使用MPS來編寫 Java應用的部分模塊,喜歡用多點就用多點,喜歡用少點就用少點;這意味著你得到了MPS全部的力量,比如創建和使用特定DSLs的能力,做任何你想要的語言擴展,同時使用定制的帶有自動完成、錯誤加亮、重構功能的編輯器,等等;插件將和IDEA緊密集成,允許你在你的MPS模型中嵌入Java代碼,導航到嵌入或生成的Java代碼,甚至進行概念層次的調試,就像IDEA中已經可用的JSP調試支持一樣;更多集成特性正在計劃中;這將是使用IDEA的 Java開發者可用的一個重要的新工具
文章來源于領測軟件測試網 http://www.kjueaiud.com/