erg/doc/zh_TW/faq_general.md
Cai Bingjun 557f03ffc9 WIP
2022-10-15 12:18:04 +08:00

3.3 KiB
Raw Blame History

Erg常見問題

badge

此常見問題解答適用于一般 Erg 初學者 對于個別(常見)技術問題,請參閱 此處 了解個別(常見)技術問題,以及 這里 了解更多信息

Erg 是 Python 兼容語言是什么意思?

A: Erg的可執行系統EVM(Erg VirtualMachine)執行Erg字節碼是Python字節碼的擴展。它在 Python 字節碼中引入了靜態類型系統和其他特性(例如向不帶參數的指令引入參數,以及在自由編號中實現唯一指令)。這讓 Erg 可以無縫調用 Python 代碼并快速執行。

A: Erg 代碼被轉譯成 Python 字節碼。也就是說,它運行在與 Python 相同的解釋器上。最初,我們計劃開發一個兼容 Cpython 的解釋器,并將其與編譯器結合起來形成"Erg"。但是,由于處理系統的發展遠遠落后于編譯器,我們決定提前只發布編譯器(但解釋器仍在開發中)

哪些語言影響了Erg?

我們受到的語言多于我們雙手所能指望的數量,但 Python、Rust、Nim 和 Haskell 的影響最大 我們從 Python 繼承了許多語義,從 Rust 繼承了面向表達式和 trait從 Nim 繼承了過程,從 Haskell 繼承了函數式編程相關的特性

已經有一些語言可以調用Python比如Julia。為什么要創建Erg?

答: Erg 設計的動機之一是擁有一種易于使用且具有強大類型系統的語言。即具有類型推斷、Kind、依賴類型等的語言 Julia 是可以有類型的,但它確實是一種動態類型語言,不具備靜態類型語言的編譯時錯誤檢測優勢

Erg 支持多種編程風格,包括函數式和面向對象的編程。這不是與 Python 的"應該有一種——最好只有一種——明顯的方法"相反嗎?

答: 在 Erg 中該術語是在更狹窄的上下文中使用的。例如Erg API 中一般沒有別名在這種情況下Erg是"唯一一種方式" 在更大的上下文中,例如 FP 或 OOP只有一種做事方式并不一定很方便 例如JavaScript 有幾個庫可以幫助創建不可變的程序,而 C 有幾個用于垃圾收集的庫 然而,即使是這樣的基本功能也有多個庫不僅需要時間來選擇,而且在集成使用不同庫的代碼時也會產生很大的困難 即使在純函數式語言 Haskell 中,也有支持 OOP 的庫 如果程序員沒有一些東西,他們會自己創造它們。因此,我們認為將它們作為標準提供會更好 這也符合 Python 的"含電池"概念

Erg 這個名字的由來是什么?

它以cgs單位系統中的能量單位erg命名。它具有雙重含義: 一種為程序員提供能量的符合人體工程學的語言

還有其他幾個候選者,但之所以選擇它是因為它最短(根據 Ruby 的開發者 Matz 的說法,語言名稱越短越好)并且具有相當高的可搜索性