V程式語言開源

已翻譯 進入開放編譯器的類別 語言五。 V 是一種靜態類型的機器編譯語言,專注於使開發更易於維護並且編譯速度非常快。 編譯器程式碼、函式庫和相關工具 是開放的 在麻省理工學院的許可下。

V 的語法與 Go 非常相似,借用了 Oberon、Rust 和 Swift 的一些結構。 語言盡可能簡化,據開發者介紹,30 分鐘的學習就足以學習基礎知識 文件。 同時,該語言仍然非常強大,可以用來執行與使用其他程式語言相同的任務(例如,程式庫可用於 2D/3D 圖形、建立 GUI 和 Web 應用程式)。

創建新語言的原因是希望將 Go 語言的語法簡單性、編譯速度、易於並行化操作、程式碼的可移植性和可維護性與 C/C++ 的效能、Rust 的安全性和Zig 編譯階段機器程式碼的生成。 我還希望獲得一個緊湊而快速的編譯器,它可以在沒有外部依賴的情況下工作,擺脫全局範圍(全局變數)並提供“熱”重新加載程式碼的能力。

與 C++ 相比,新語言明顯更簡單,提供更快的編譯速度(高達 400 倍),實踐安全的程式設計技術,不存在未定義行為的問題,並提供用於並行操作的內建工具。 與Python相比,V更快、更簡單、更安全、更易於維護。 與 Go 相比,V 沒有全域變量,沒有 null,所有變數值都必須始終定義,所有物件預設都是不可變的,僅支援一種類型的賦值(“a := 0”),顯著更緊湊運行時和產生的可執行檔的大小、從C 直接移植的存在、沒有垃圾收集器、更快的序列化、插入字串的能力(“println('$foo: $bar.baz')”) 。

fn 主() {
領域 := ['遊戲', '網絡', '工具', '科學', '系統', 'GUI', '移動'] a := 10
如果屬實 {
到 := 20
}
對於區域中的區域{
println('你好,$area 開發者!')
}
}

項目特色:

  • 緊湊而快速的編譯器,與標準庫一起佔用約 400 KB。 透過直接產生機器碼和模組化來實現高編譯速度。 編譯速度在一個CPU核心上約為每秒1.2萬行程式碼(注意,在運行V過程中可以使用C,然後速度下降到每秒100萬行程式碼)。 編譯器的自組裝也是用V語言寫的(Go中也有參考版本),大約需要0.4秒。 到今年年底,額外的最佳化工作預計將完成,這將使編譯器建置時間縮短至 0.15 秒。 從開發者的測試來看,Go的自組裝需要512MB的磁碟空間,運行時間為一分半鐘,Rust需要30GB,需要45分鐘,GCC需要8GB,需要50分鐘,Clang需要90GB, 25分鐘,
    Swift - 70 GB 和 90 分鐘;

  • 程式被編譯成可執行文件,無需外部依賴。 一個簡單的http伺服器組裝後的可執行檔大小只有65 KB;
  • 編譯後的應用程式的效能達到C程式彙編的水平;
  • 能夠與 C 程式碼無縫交互,無需額外開銷。 C語言的函數可以從V語言的程式碼中調用,反之亦然,V語言的程式碼可以用任何與C相容的語言調用;
  • 支援將 C/C++ 專案翻譯成 V 語言的表示形式。使用 Clang 的解析器進行翻譯。 尚未支援 C 標準的所有功能,但轉換器的當前功能已經足夠 翻譯 用 V 遊戲 DOOM 的語言來說。 C++ 翻譯器仍處於開發的早期階段;
  • 內建序列化支持,不受運行時束縛;
  • 最小化記憶體分配操作;
  • 確保安全性:沒有NULL、全域變數、未定義值和變數重定義。 內建緩衝區溢出檢查。 支援通用函數(Generic)。 預設無法更改的物件和結構;
  • 「熱」程式碼重新載入的可能性(即時反映程式碼的變更而無需重新編譯);
  • 確保多執行緒的工具。 就像在 Go 語言中一樣,「run foo()」這樣的結構用於啟動一個新的執行緒(類似於「go foo()」)。 未來,計劃支援 goroutine 和線程調度程序;
  • 支援 Windows、macOS、Linux、*BSD 作業系統。 計劃年底前增加對Android和iOS的支援;
  • 編譯時的記憶體管理(如 Rust),無需使用垃圾收集器;
  • 提供用於圖形輸出的多平台工具包,使用 GDI+/Cocoa 和 OpenGL 進行渲染(計劃支援 DirectX、Vulkan 和 Metal API)。 有用於處理 3D 物件、骨骼動畫和相機控制的工具;
  • 提供一個庫,用於產生帶有每個作業系統本機設計元素的圖形介面。 Windows 使用 WinAPI/GDI+,macOS 使用 Cocoa,Linux 使用自己的一組小工具。 該庫已經在開發中使用 伏特 — Slack、Skype、Gmail、Twitter 和 Facebook 用戶端;

    計劃是創建一個類似Delphi的介面設計應用程序,提供類似於SwiftUI和React Native的聲明式API,並為創建iOS和Android行動應用程式提供支援;

    V程式語言開源

  • 提供內建 Web 框架,用於為專案開發人員建立網站、論壇和部落格。 支援HTML模板的預編譯,無需對每個請求進行處理;
  • 交叉編譯支援。 要為 Windows 建立可執行文件,只需執行“v -os windows”,對於 Linux,只需執行“v -os linux”(預計稍後將支援 macOS 的交叉編譯)。 交叉編譯也適用於圖形應用程式;
  • 內建依賴管理器、套件管理器和建置工具。 要建立程序,只需執行“v.”,無需使用 make 或外部實用程式。 要安裝其他庫,只需執行“v get sqlite”;
  • 編輯器中用於 V 語言開發的插件的可用性 VS代碼 и VIM.

設計 感知到的 社區與 懷疑論,因為已發布的程式碼顯示,並非所有聲明的功能都已實現,並且需要非常大量的工作來實現所有計劃。
此外,最初儲存庫有 發布 存在彙編和執行問題的損壞代碼。 假設作者還沒有達到他們開始注意到的階段 帕累託法則,根據該理論,20%的努力產生80%的結果,而剩下的80%的努力只產生20%的結果。

同時,Project V 的 bug 追蹤器已刪除了大約 10 個帖子 示範 例如,低品質程式碼表示使用 C 插入以及在函數庫中使用透過呼叫 os.system("rm -rf $path") 刪除 rm 指令的目錄。 專案作者 P·P°SЏRІReR“的他只刪除了訊息, 發表 巨魔 (修改確認了批評的有效性, 留下來 в 編輯歷史記錄).

來源: opennet.ru

添加評論