出品 | OSC社區(qū)(ID:OSCHINA_2013)
本期 Awesome 系列給大家介紹下中國人主導的編程語言。
1、洛書 —— 國產(chǎn)中文編程語言
洛書編程語言旨在打造開源、高效、強大的國產(chǎn)中文編程語言。
項目地址:https://www.oschina.net/p/losu
2、ReScript —— 類型化 JavaScript
ReScript 是一種強大的類型化語言,可以編譯成高效且可讀性高的 JavaScript。ReScript 包含了一個快速的編譯器工具鏈,可以擴展到任何代碼庫的大小。
示例代碼
ReScript 編寫:
module Button = { @react.component let make = (~count: int) => { let times = switch count { | 1 => “once” | 2 => “twice” | n => Belt.Int.toString(n) ++ ” times” } let msg = “Click me ” ++ times {msg->React.string} }}
編譯為 JavaScript:
var React = require(“react”);function Playground$Button(Props) { var count = Props.count; var times = count !== 1 ? ( count !== 2 ? String(count) + ” times” : “twice” ) : “once”; var msg = “Click me ” + times; return React.createElement(“button”, undefined, msg);}var Button = { make: Playground$Button};exports.Button = Button;
項目地址:https://www.oschina.net/p/rescript
3、文言 —— 文言文編程語言
文言(wenyan-lang)是一門采用文言文輸入的編程語言,該語言不使用英文字符,僅包含繁體中文字符,并保留繁體引號「」。
項目地址:https://www.oschina.net/p/wenyan-lang
4、Go+ —— 為數(shù)據(jù)科學而生的編程語言
Go+ 是一門適用于工程、STEM 教育和數(shù)據(jù)科學的編程語言。主要特性包括:靜態(tài)類型語言、與 Go 完全兼容、腳本化的風格,以及比 Go 更易于閱讀的數(shù)據(jù)科學代碼。
簡單對比:
GoPlus 代碼
println [1, 2, 3.4]
Go 代碼
package mainimport “fmt”func main() { fmt.Println([]float64{1, 2, 3.4})}
項目地址:https://www.oschina.net/p/goplus
5、凹語言 —— 國內(nèi) Go 開發(fā)者設(shè)計的實驗性編程語言
凹語言 (凹讀音 “Wa”)是國內(nèi) Go 開發(fā)者設(shè)計的實驗性編程語言。發(fā)起者稱其為“披著 Go 和 Rust 語法外衣的 C++ 語言”。
例子
項目地址:https://www.oschina.net/p/wa-lang
6、HVML —— 可編程標記語言
HVML 即 Hybrid Virtual Markup Language,能夠讓熟悉 C/C++ 或其他編程語言的開發(fā)者可以通過 HVML 使用 Web 前端技術(shù)(如 HTML/SVG/MathML 和 CSS)輕松開發(fā) GUI 應(yīng)用程序。
項目地址:https://www.oschina.net/p/hvml
7、CovScript —— 跨平臺腳本編程語言
CovScript 是一門跨平臺、開放源代碼的動態(tài)類型腳本編程語言,具有高效、易懂、可靠的特點,充分吸收了現(xiàn)代編程語言研究的成果,與 C、C++ 等現(xiàn)代語言有良好的可交互性。
項目地址:https://www.oschina.net/p/covscript
8、Calcit —— 縮進語法的 Clojure 方言
Calcit 是縮進語法的 Clojure 方言,基于 Rust 解釋執(zhí)行,支持編譯為 *.mjs 使用。
用法示例
Snippets evaling:
cr -e ‘range 100’
multi-lines snippet:
cr -e ‘println “|a demo”-> range 100 map $ fn (x) * x x’
Run with a compact.cirru:
cr compact.cirru -1 # run only oncecr compact.cirru # watch mode enabled by defaultcr compact.cirru –init-fn=’app.main/main!’ # specifying init-fn
項目地址:https://www.oschina.net/p/calcit-lang
9、Cicada(蟬語)—— 依賴類型編程語言
Cicada(蟬語)是一門依賴類型編程語言,一個交互式定理證明器。蟬語項目主要是為了幫助大眾理解開發(fā)軟件和研究數(shù)學事實上是同一類活動,實踐這兩項活動的人可以相互學習,并以非常好的方式相互幫助。
示例代碼
將自然數(shù)定義為歸納數(shù)據(jù)類型 (inductive datatype)。
datatype Nat { zero: Nat add1(prev: Nat): Nat}function add(x: Nat, y: Nat): Nat { return recursion (x) { case zero => y case add1(prev, almost) => add1(almost.prev) }}
項目地址:https://www.oschina.net/p/cicada-lang
10、Aya —— 形式化數(shù)學編程語言
Aya 是一種編程語言和證明助手,專為形式化數(shù)學和類型導向編程而設(shè)計。Aya 的類型系統(tǒng)具有類似于 Arend 的同源性 (homotopical) 特征、重疊但匯合的模式匹配以及對定義等式 (definitional equalities) 的抽象。
項目地址:https://www.oschina.net/p/aya
11、OpenBlock —— 可視化塊編程語言
OpenBlock 是可視化塊編程語言,是一門希望通過將編程簡化、將業(yè)務(wù)邏輯可視化的圖形化編程語言,語言特性上有 Erlang 和 Smalltalk 的影子,語法層面借鑒了 Scratch,使用 Blockly 作為語言前端。
項目地址:https://www.oschina.net/p/openblock
12、草蟒 —— 基于 Python 的全中文編程語言
草蟒是 Python 漢化版,開發(fā)草蟒的目的是消除英語門檻,提供一種簡單自然、易學易用、功能強大、應(yīng)用廣泛的中文編程語言,讓普通國人能自由地使用母語進行編程。
示例 :
# ‘列表型’ 和 ‘枚舉’ 函數(shù)>>> 水果 = [‘香蕉’, ‘蘋果’]>>> 水果.追加(‘梨’)>>> 列表型(枚舉(水果))[(0, ‘香蕉’), (1, ‘蘋果’), (2, ‘梨’)]
項目地址:https://www.oschina.net/p/grasspy
13、木蘭編程語言 —— 基于 Python 實現(xiàn)的編程語言
木蘭編程語言是基于 Python 實現(xiàn)的編程語言,木蘭源代碼轉(zhuǎn)換為 Python 的中間表示(AST)后執(zhí)行,可實現(xiàn)各種語法設(shè)計與周邊功能,并可方便地利用 Python 現(xiàn)有生態(tài)。
代碼中可以直接調(diào)用現(xiàn)有 Python 庫,如下調(diào)用了草蟒的中文 API:
項目地址:https://www.oschina.net/p/mulan-rework
14、KCL —— 開源配置策略語言
Kusion 配置語言 (KCL, Kusion Configuration Language) 是一種開源配置語言,主要用于 Kusion Stack 開放協(xié)同技術(shù)棧。并且 KCL 是一種基于聲明性和面向?qū)ο缶幊?(OOP) 范式等概念,用于配置和策略場景的靜態(tài)類型語言。
項目地址:https://www.oschina.net/p/kcl
15、氣 (Qi) —— 輕量級中文編程語言
氣 (Qi) 是一種輕量級、快速、開源的中文編程語言。作者表示,他希望這種語言能夠快速、輕巧,并且完全透明,就像空氣一樣。
示例
Hello World:使用 Qi 編寫的 “Hello, World!” 程序:
系統(tǒng)。打印行(”你好,世界”)
保留關(guān)鍵字
打斷 繼續(xù) 類 切換 案例 預(yù)設(shè) 否則 功能 而 對于 如果 空 返回 超 真 假 這 變量 和 或 等 不等 打等 小等
項目地址:https://www.oschina.net/p/qi-lang