
Vine 程式語言是一種基於互動網路構建的新型實驗性語言。它具有函式式和指令式程式設計模式之間的互操作性。
Vine 是一種靜態型別的編譯語言,有著簡潔直觀的語法。其底層基礎是互動網路的計算模型。Vine 編譯為 Ivy,這是一種在互動虛擬機器(IVM)上執行的底層互動組合器語言。
在一個 Hacker News 帖子中,tijvi 評論道:
互動網路是一種替代計算模型(類似於 lambda 演算或圖靈機)。它們有幾個有趣的特性,其中最值得注意的是它們基本上是並行的。互動網路在並行和分散式計算等領域有許多潛在的應用。這樣的應用需要一種語言——因此有了 Vine。
Vine 程式語言包括一些標準特性,如整數和浮點運算、布林邏輯、字串操作、元組以及基本控制流構造,如 if-else 語句和迴圈。它的語法和型別系統受到 Rust 的影響,強調面向表示式的方法和模組化結構。
此外,該語言與 Rust 之外的函式式語言(如 Haskell、Erlang、Elixir 和 OCaml)有相似之處。這些語言強調不變性、安全性、效能和併發性,與 Vine 的設計理念一致。
在 Bluesky 上,軟體工程師 Devon 發帖稱:
閱讀 vine.dev 文件讓我想起了我第一次接觸 Haskell 時的情形——彷彿大腦要融化了,但其中的一些非常有趣的想法來自該語言底層的新計算模型(Vine:互動網路 :: Haskell:lambda 演算,有點像)。
該語言的 Vine 編譯器採用多階段架構將原始碼轉換為互動網路:
-
它從 CLI 入口點開始,收集編譯選項和入口點,然後是將檔案解析為抽象語法樹(AST)的載入器。
-
然後,解析器構建模組圖並消除特定 AST 節點的歧義。檢查器驗證表示式型別和形式。
-
同時,提取器將 AST 轉換為 Vine 中間表示(VIR),簡化複雜表示式並將控制流轉換為一個堆疊流圖。
-
規範器消除 VIR 中的分歧,分析器進行可達性和資料流分析。
-
最後,發射器將處理後的 VIR 轉換為 Ivy 網路,完成 Vine 平行計算的編譯過程。
有一個 GitHub 專案,其中包含了各種用於嘗試 Vine 編譯器的示例。
有興趣探索 Vine 的開發人員可以訪問官方文件。該文件提供了從安裝到高階主題(如併發程式設計模式和與現有系統的整合)的全面指導。
最後,Vine 專案是開源的,並在 GitHub 上積極維護。開發團隊鼓勵社群參與,邀請開發人員貢獻程式碼、報告問題並提供反饋。
原文連結:
New Programming Language Vine Based on Interaction Nets (https://www.infoq.com/news/2025/03/new-programming-language-vine/)
宣告:本文由 InfoQ 翻譯,未經許可禁止轉載。
