CUE是受Google的通用配置語言(General Configuration Language,GCL)的啟發,另外由Google內部員工所發展的開源資料限制語言,目的是要簡化定義和使用資料的任務。CUE包含了豐富的API以及工具,可用來定義、產生和驗證各種類型的資料,包括配置、API、資料庫結構和程式碼等。

而CUE與其他程式語言和配置語言不同之處在於,CUE將類型當作值,而且這些值被依照順序排列成格(Lattice),成為有順序的集合。開發人員提到,CUE融合了結構(Schema)與資料的概念,CUE的定義可以同時用於驗證資料,和作為模板以減少樣板程式碼。

結構定義具高精細度定義與預設值的特性,資料還能透過刪除詳細定義的值以簡化資料,而這兩個概念合併,CUE可以讓許多任務以原則的方式處理。CUE的優點之一是強化打字輸入的能力,官方提到,大多數配置語言主要關注減少樣板程式碼,只提供最少的打字輸入支援,而CUE透過統一類型和數值,提供直觀且緊湊的輸入能力。

另外,CUE也強化檔案的可讀性,使用者可將單個檔案中的單一定義,應用到其他檔案中的數值,不需要繁瑣地一一打開不同的檔案,就能直接驗證文件的有效性。使用者可以直接使用CUE命令列工具,定義並驗證結構,驗證像是MongoDB這類文件導向的資料庫。

CUE也具有極佳的靈活性,可以組合來自不同來源的限制(Constraint),包括基礎模板、程式碼或是客戶端政策,由於組合許多來源的限制,可能出現大量的重複,因此CUE的邏輯推理引擎可以自動減少限制來解決這個問題,其API允許用戶對不同的一般格式,最佳化特定的資料表示。

CUE與不少語言和工具整合,目前可以從Go程式碼和Protobuf定義中擷取定義,且CUE的限制可被用於在資料中尋找模式,使用者可以使用查詢子命令進行更詳細的查詢,還能用CUE API,以程式化的方法查詢資料。

CUE在網路論壇Hacker News受到廣泛的討論,有部分網友把CUE拿來跟Google的資料模板語言Jsonnet相比,提到CUE改進了Jsonnet的缺點,並提供更好的組合方式,還增加了結構,雖然Jsonnet和CUE都源自於GCL,但是CUE更像是一個全新的語言。另一位使用者則提到,CUE像是另一個Jsonnet的替代品,但Jsonnet已經與VSCode和Intellij等IDE工具整合,提供了良好的編輯體驗,而CUE是一個很新的專案,還需要時間成熟。

熱門新聞

Advertisement