代碼世界即將加入一門新成員:Lux。你沒看錯,它不是洗發水,而是古老的 Lisp 家族中新誕生的函數式語言。
目前 Lux 還在研發之中,最新版本是 0.5.0。它可被用來編寫一系列在 JVM (Java 虛擬機)上運行的程序。但它的語義并不是與 JVM 綁定的,因此,Lux 應該被理解為是一門通用語言,被設計用來盡可能多平臺地進行程序表示。但同時,它要能夠深入每一個特定平臺,實現后者的豐富功能。
作為新語言,它有何特別之處?
Lux 是純粹的函數式編程語言,它采用了嚴格計算(eager-evaluation)而非惰性計算,來提高邏輯簡潔性,而適當犧牲性能和程序行為。這門語言受到 Haskell、Clojure 和 ML 的啟發。其中,Clojure,這門同樣基于 Lisp、面向 JVM 的主流語言,是 Lux 的首要啟發來源。但和 Clojure 不同的是,Lux 采用了靜態類型(statically typed)以提高性能并減少漏洞。
Lux 允許開發者通過編程創造新類型,這會提供動態類型語言(dynamically typed )所具有的靈活性。函數式語言 Haskell 有類型類(type classes),而雷鋒網(公眾號:雷鋒網)獲知, Lux 的約束性不會這么強——想要繞過任何約束可在語言中原生實現,而不需要黑入類型系統。
Lisp 開發于 1958 年,是最早的用于人工智能的編程語言。現在用的人雖然少了,但多門基于 Lisp 的變種、或者說子孫語言,仍然占有重要地位。這些基于 Lisp 的語言,使得開發者進行元編程(metaprogramming)成為了可能——改變語言本身的行為,或者編寫能寫代碼的代碼。Lux 通過與 Lisp 類似的宏(macros)來實現這一點,但這同時把 Lux 的編譯器暴露為語言中的一件物體。通過這種方式,Lux 可以定制能被用戶重寫的模型匹配系統( pattern-matching systems )。
雷鋒網獲知,盡管提供了與 Java 的交互操作,Lux 會專注于函數式編程。
Lux 的開發者團隊表示:
Lux 既簡潔又復雜。它的設計允許你只用一個小的子集,就能創建出高效的程序。但 Lux 的目標是為我們提供有一系列強大工具的武器庫,來滿足開發者在各類項目中的不同需求。
他們還表示,雖然函數式語言是學界人士做研究的最愛,但 Lux 為軟件開發人員的日常工作而設計。
對 Lux 感興趣的程序猿們,可通過 GitBooks 獲得它的詳細介紹。順便提醒一下,這有一本書那么厚。