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

39 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Erg常見問題
[![badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3Derg-lang%26repos%3Derg%26ref%3Dmain%26path%3Ddoc/EN/faq_general.md%26commit_hash%3D1b3d7827bb770459475e4102c6f5c43d8ad79ae4)](https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=erg-lang&repos=erg&ref=main&path=doc/EN/faq_general.md&commit_hash=1b3d7827bb770459475e4102c6f5c43d8ad79ae4)
此常見問題解答適用于一般 Erg 初學者
對于個別(常見)技術問題,請參閱 [此處](./faq_technical.md) 了解個別(常見)技術問題,以及
[這里](./faq_syntax.md) 了解更多信息
## 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 的說法,語言名稱越短越好)并且具有相當高的可搜索性