Atomist為想要嘗試Rug語言的人們發布了一個Alpha測試版程序,Rug是Atomist公司的元-元編程語言(meta-meta-programming language)。
Atomist將Rug描述為一種自動化開發工作流的編程語言。Rug是由Atomist精心設計的,它通過產生重復代碼、樣板代碼來自動化開發工作流。
Rug的目標是提高像微服務這樣的分布式系統的工作效率。它關注于下列類型的結構中的一些問題,例如,跨服務的重復性編碼任務:類庫的升級、項目構建的配置、框架項目的生成等等。
Atomist的首席工程師Russ Miles在Jax London 2016上首次披露了Rug,他展示了Rug如何被用于項目的創建中。在Rug中有些類型被稱作"發生器(generators)",它們能夠被用于在項目開始時創建微服務。例如,你能夠通過執行一條命令來得到一個類似Spring Boot的微服務框架。它包括了許多組件,例如Gradle的構建配置,包結構甚至還有Dockerfiles。
Miles還展示了Rug和Git以及GitHub的結合。Atomist GitHub有著創建commit和提出pull requests的能力,它就像一個真實存在的人在進行操作。Miles解釋道,由于很難將它和一個普通的開發者區分開來,所以它能使得融入一個團隊更加容易。這是因為產生的Git歷史記錄和GitHub使用記錄就像是一個真實存在的人在整個過程中手動完成的。
Miles提到的另一個結合是與Slack的結合。Atomist Slack機器人使得你能夠通過提交命令來創建GitHub項目,設置權限然后生成項目框架。這就意味著你只需要在Slack的channel中敲上一個簡單的短語就能立刻克隆出一個新的、完整配置的服務。
除了創建項目,Miles還展示了Rug是如何在已經存在的代碼庫中做修改的。這被稱為"編輯器"。展示的例子是Rug能夠在多個項目之間升級類庫。展示的使用案例是,在多個不同微服務的常用類庫中應用一個安全補丁。
Rug提供了它自己的測試框架。它采用的是BDD方法,它使得用戶能夠由外而內地描述應用的行為。它的目標是使得用戶創建的Rug盡可能的健壯和可靠。
Miles強調,Rug不是限制你為某種特定編程語言編輯和創建代碼。Rug是語言無關的,它的目標是將你所使用的微服務中的不同架構更加容易地融合到一起。事實上,Rug更加適用于那些復雜的系統和分布式系統,而這個是與傳統的獨立應用恰恰相反的。
查看英文原文:http://www.infoq.com/news/2017/02/atomist-rug-metaprogramming