Noop

Noop

Noop是一個看起來很像Java的、運行在JVM上的語言,而目標則是在語言起步的時候就建立起依賴注入(dependency injection)以及可測試性,而無須像其他語言一樣依靠第三方庫。官網上稱Noop的意圖在於鼓勵良好的編碼習慣。

簡介


依賴注入之外,Noop關注可測試性、不變性、可閱讀性、屬性(properties)以及強類型。Noop還注重可執行的、更新及時的文檔。Noop官方網站是這麼敘述的:“依賴注入改變了我們編寫軟體的方法。”

含義


Google近日啟動了一種新型編程語言設計,名字為“Noop”,主要針對Java虛擬機使用。
Noop
Noop

說明


Noop官網是這樣描述的:“Noop是運行在Java虛擬機上的新型編程語言,語言風格上和Java有些類似。”,Google打算在語言初期建立起依賴注入(dependency injection),使得語言具有可測試性,而不用像其他語言一樣依靠第三方庫,Noop官網稱此舉是為了鼓勵開發者良好的編碼習慣。
Noop結合了新老語言的優勢,語法構成上也盡量達到最優化,用Google的話說就是取其精華,棄其糟粕。此外,Google還注重了Noop的可閱讀性、可執行,Google認為依賴注入改變了開發人員編寫軟體的方法。
Noop採用構建系統是Buildr,你可以把它理解成Ant或是Maven。Buildr是Apache的第一個Ruby項目,當然,它主要還是為Java系統服務。對很多項目而言,構建腳本會隨著系統的發展逐漸增大,裡面逐漸也會出現很多邏輯,換句話說,構建腳本也是程序。這個理念的實踐者,對於Ruby項目,自然就是Rake,而C/C++項目,可以選擇SCons,現在Java項目有了Buildr。Buildr內置的許多task,在項目不複雜的情況下,只要遵循約定,簡單幾行代碼就可以把構建過程實現出來,充分體現了“易者易為,難者可為”的理念。它甚至還支持生成EclipseIntelliJ IDEA的工程文件,省去了自己手工配置的煩惱。
Noop的主要開發語言是Scala。Scala近來的名頭越來越響,Java之父James Gosling把它選做Java之外的第一選擇,Twitter用Scala改寫了一些後端服務,Groovy的創造者James Strachan甚至認為如果Scala早點可用,他就不會去寫Groovy。在編譯器方面,Scala支持Parser Combinator,為人們提供了從零開始手工編寫和用工具(像ANTLRyacc)編寫解析器之外的又一種選擇。不過,Noop裡面並沒有運用Scala的這個方面能力,它用了ANTLR,這也讓我們有機會見識Scala的另一優秀之處,在Java類里直接使用Scala類。