专业评测:2024年迄今最简单编程语言Nolang零基础易学性详细分析及推荐
Nolang:迄今最簡潔的系統級編程語言
Nolang 的設計哲學只有一個核心:極簡。
Nolang 是一種無垃圾回收、內存安全、語法極簡的系統級語言,專為高效開發而生。
直接看程式碼實例:
Hello World 實例
print('hello word')
無需 main 函數,print 自動換行;字串使用單引號,減少按鍵次數,專為效率設計。
變數宣告與類型推斷
// 定義一個名為a,類型為str的變量a = 'abc'// 定義一個名為i64,類型為i64的變量i64a u32
變數名與型別名相同時可省略型別宣告;初始值為零時可省略賦值。雖然初看反直覺,但熟練後效率極高。
字串串接與命名規則
// 定義一個名為a-b-c,類型為str的變量a-b-c = 'abc'// 字符串拼接a-b-c-d = 'abc' - 'c'
變數名以-連接,系統視為單詞,利於 TAB 自動補全;字串拼接同樣使用-,回歸連字號本意,思路清晰。
模組引入與別名
// 標準庫不用顯式引用// # std/math// 本地模塊# /src/utils.greet// 網絡模塊# github.com/lizongying/nolang/test2/utils.greet greet2greet('World')greet2('World')// 標準庫的函數可以直接使用b = sin(1.0)
# 符號不佔用關鍵字,極簡;別名只需一個空格。相較於傳統 import 語句,簡潔度大幅提升。
套件配置檔
nolang.jsonc
{"name": "test1","version": "0.1.0","description": "A new Nolang project","keywords": ["nolang"],"author": "lizongying","email": "lizongying@msn.com","organization": "lizongying","repository": "https://github.com/lizongying/nolang","homepage": "https://lizongying.github.io/nolang","license": "MIT","workspace": "../../","dependencies": {"github.com/lizongying/nolang/test1": "v0.1.0","github.com/lizongying/nolang/test2": "v0.1.0",},"compiler": {"version": "0.1.0",},"output": "./dist","ignore": [],}
配置極少,約定優於配置;開箱即用,學習成本極低。
工作區管理
workspace.jsonc
{"test1": "./example/test1","test2": "./example/test2",}
輕鬆實現多套件管理;本地套件開發與測試極為便利, workspace.jsonc 可納入版本控制。
流程控制語法
// 一直循環執行! {}// 限定執行次數10 * {}// 遍歷i <- (a..b] { }// 內部無條件執行x == 1 {b = 2}i <- (a..b] { // continue *}i <- (a..b] { // break**}i <- (a..b] { // return...}
for/while 等循環語法統一,不佔用關鍵字;迴圈與條件判斷的語法格外清爽。
區間表示法
以vec為例
[]t[..][]t[..)[]t(..][]t(..)[]t[n0..][]t[n0..)[]t(n0..][]t(n0..)[]t[..n1][]t[..n1)[]t(..n1][]t(..n1)[]t[n0..n1][]t[n0..n1)[]t(n0..n1][]t(n0..n1)
支援 arr、vec、str、num 等型別,亦可用於 for 與 match。例如 i <- [a..b) 明確表示包含 a 不含 b,可視化區間直觀易懂。
列舉類型
// red=0, green=1, blue=2color {red,green,blue,}// 在普通方法中,a,b,c 實際是定義的a=0,b=1, c=2... 這是和其他語言不一致的地方。// 所以正常不能用逗號的方式定義多個變量// 這是一個特殊枚舉, 可以有類型,有逗號, 有別名enum-name {a t,b u,c v,}// 注意這是一個普通的struct,多個字段沒有逗號struct-name {a tb uc v}
注意:普通列舉中的逗號具有特殊含義,並非用於定義多個變數。這是極小的學習曲線,熟悉後邏輯清晰;列舉與結構體的區別一目了然——列舉使用逗號,結構體不用。
介面定義與實作
```nolang
// 定義接口
json {
to-json()
}
// 接口默認實現
json.to-json() {
}
// 接口實現
user json {
name str
age i64
}
// 重寫 調用父實現
user.to-json() {
// 父實現
..to-json()
}
user.other() {
// 當前實現
.to-json()
// 父實現..to-json()
}
介面設計精妙:定義、預設實作、派生實作、重寫父實作一氣呵成。此多型實現方式兼顧簡潔與高度擴展性。
