長(zhǎng)久以來(lái),中文編程一直是開(kāi)發(fā)者社區(qū)中爭(zhēng)議不斷的熱點(diǎn)問(wèn)題。一部分人認(rèn)為,編程語(yǔ)言是符號(hào)化的語(yǔ)言,沒(méi)有中英文之分,所以中文編程沒(méi)有意義。
而另一部分人則認(rèn)為跨語(yǔ)種學(xué)習(xí)編程,存在事實(shí)上的困難,提高了學(xué)習(xí)門(mén)檻。這樣的討論在社區(qū)中一直熱度不減,成為經(jīng)久不衰的話題。
雖然關(guān)于中文編程有諸多爭(zhēng)議,但這并沒(méi)影響大家對(duì)其投入熱情。最近又出現(xiàn)了一款新的開(kāi)源中文編程語(yǔ)言——青語(yǔ)言。
據(jù)介紹,青語(yǔ)言是一門(mén)面向青少年、兒童和非專(zhuān)業(yè)人士的中文編程語(yǔ)言。它完全從零開(kāi)始實(shí)現(xiàn)了代碼文本到語(yǔ)法樹(shù)的構(gòu)建,語(yǔ)言內(nèi)核參考了 Lisp,語(yǔ)法上主要參考了 JavaScript,以 C# 實(shí)現(xiàn),運(yùn)行在.NET 平臺(tái)上,并使用動(dòng)態(tài)鏈接庫(kù) DLL 的方式擴(kuò)展功能。
青語(yǔ)言基礎(chǔ)語(yǔ)法概覽
第一個(gè)程序
@顯示、“你好,編程世界”
注釋
從分號(hào)到行末的都是注釋?zhuān)⑨尩膬?nèi)容不會(huì)作為代碼執(zhí)行,以兩個(gè);;開(kāi)頭是多行注釋?zhuān)钡搅硪粋€(gè);;
;這是一行注釋?zhuān)@里的內(nèi)容作為對(duì)代碼的說(shuō)明,不會(huì)被執(zhí)行 ;; 這是一段注釋 支持多行注釋 這部分內(nèi)容都不會(huì)執(zhí)行 ;;數(shù)據(jù)類(lèi)型
空 ;空類(lèi)型,表示不存在或者值為空 真 ;邏輯類(lèi)型,表示邏輯真 假 ;邏輯類(lèi)型,表示邏輯假 0xFF ;二進(jìn)制類(lèi)型,表示二進(jìn)制數(shù)據(jù) 123 ;這是整數(shù) 4.56 ;這是小數(shù) “這是一段字符串” ;用中文雙引號(hào)括起來(lái)的部分是字符串賦值
#甲 :123 ;用冒號(hào)表示在當(dāng)前語(yǔ)境給變量#甲綁定值123 #乙 = 4.56 ;用等于號(hào)表示順著語(yǔ)境鏈向上查找變量#乙并綁定值4.56取值
直接調(diào)用變量名,解釋器會(huì)根據(jù)當(dāng)前語(yǔ)境向上查找變量對(duì)應(yīng)的值,并將值返回,例如經(jīng)過(guò)上面的賦值之后,我們輸入
#甲
將會(huì)看到這樣的輸出
>> 123
這里,前面的 >> 是輸出提示符,后面的 123 是變量對(duì)應(yīng)的值。
示例代碼
貪吃蛇。該示例是一個(gè)圖形界面程序,只能在青編輯器中運(yùn)行。
@是墻 = @【#序】{
#序 小于 20
或
#序 大于等于 380
或
#序 模 20 等于 0
或
#序 模 20 等于 19
}
@隨機(jī)食物 = @【】{
#序:0
執(zhí)行 {
#序 = #數(shù)學(xué)庫(kù)@隨機(jī)數(shù)【400】
}直到
(取反 @是墻【#序】) 且 (@查找【#蛇集合,#序】 小于 0)
返回 #序
}
#運(yùn)行狀態(tài) = 真
#蛇集合 = 【110,109,108】
#食物 = 275
#方向 = 2
#下一方向 = 2
#窗 = @生成圖形、《窗口 #寬=410,#高=440,#標(biāo)題=“貪吃蛇”》
#單元集合=【】
當(dāng) #行=0,#行 小于 20,#行 加等 1 {
當(dāng) #列=0,#列 小于 20,#列 加等 1 {
#單元:@生成圖形、《面板 #寬=20,#高=20,#X=#列*20,#Y=#行*20》
@追加【#單元集合,#單元】
}
}
@初始化 = @【】{
當(dāng) #序:0,#序 小于 400,#序 加等 1 {
如果 @是墻【#序】{
#單元集合#序#邊框色 = “#009933”
#單元集合#序#邊框?qū)?= 2
} 否則 {
#單元集合#序#背景色 = “white”
}
}
遍歷 #蛇集合 為 #序 {
#單元集合#序#背景色 = “#333333”
}
#單元集合#食物#背景色 = “Red”
}
@初始化【】
#窗@加子集、#單元集合
#窗@鍵盤(pán)按下命令 = @【#按鍵】{
如果 #按鍵 等于 “Up”{
如果 #方向 不等于 3 {
#下一方向 = 1
}
}再則 #按鍵 等于 “Right”{
如果 #方向 不等于 4 {
#下一方向 = 2
}
}再則 #按鍵 等于 “Down”{
如果 #方向 不等于 1 {
#下一方向 = 3
}
}再則 #按鍵 等于 “Left” {
如果 #方向 不等于 2 {
#下一方向 = 4
}
}
如果 #運(yùn)行狀態(tài) 等于 假 且 #按鍵 等于 “Space” {
#蛇集合 = 【110,109,108】
#方向 = 2
#下一方向 = 2
#食物 = @隨機(jī)食物【】
@初始化【】
#運(yùn)行狀態(tài) = 真
}
}
@顯示窗口、#窗
#定時(shí)器 = @定時(shí)任務(wù)【300,元{
如果 取反 #運(yùn)行狀態(tài) {返回 空}
#頭:#蛇集合#0
#方向 = #下一方向
如果 #方向 等于 1 {
#頭 = #頭 - 20
}再則 #方向 等于 2 {
#頭 = #頭 + 1
}再則 #方向 等于 3 {
#頭 = #頭 + 20
}再則 #方向 等于 4 {
#頭 = #頭 -1
}
如果 @是墻【#頭】 或 (@查找【#蛇集合,#頭】 大于等于 0){
#運(yùn)行狀態(tài) = 假
返回 空
}
#單元集合#頭#背景色 = “#333333”
@插入【#蛇集合,0,#頭】
如果 #頭 等于 #食物 {
#食物 = @隨機(jī)食物【】
#單元集合#食物#背景色 = “Red”
}否則{
#尾 = @取出【#蛇集合,@取長(zhǎng)度【#蛇集合】-1】
#單元集合#尾#背景色 = “white”
}
}】
@啟動(dòng)定時(shí)任務(wù)、#定時(shí)器
運(yùn)行效果:
九九乘法表:
當(dāng) #甲:1,#甲 小于等于 9,#甲 加等 1 {
#文本:“”
#乙:1
當(dāng) #乙 小于等于 #甲 {
#文本 = #文本 + #甲 + “x” + #乙 + “=” + (#甲 * #乙) + “ ”
#乙 加等 1
}
@顯示、#文本
}
上文提到青語(yǔ)言后端使用 .NET,因此它實(shí)現(xiàn)了跨平臺(tái)兼容,支持主流操作系統(tǒng)。本次開(kāi)源發(fā)布即提供了各個(gè)主流平臺(tái)的可執(zhí)行程序,下載后可以直接運(yùn)行使用。
除了桌面程序外,還提供了一個(gè)安卓端的 APP,能夠?qū)崿F(xiàn)手機(jī)上編程。
青語(yǔ)言項(xiàng)目地址:
https://www.oschina.net/p/qingyuyan https://gitee.com/NjinN/Qing https://qingyuyan.cn/
最后,如果你想了解更多中國(guó)人主導(dǎo)的編程語(yǔ)言,請(qǐng)查看: 《中國(guó)人主導(dǎo)編程語(yǔ)言列表》
原文標(biāo)題:中文編程語(yǔ)言——青語(yǔ)言開(kāi)源發(fā)布
文章出處:【微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
編程語(yǔ)言
+關(guān)注
關(guān)注
10文章
1956瀏覽量
36630 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
3678瀏覽量
43814 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70697
原文標(biāo)題:中文編程語(yǔ)言——青語(yǔ)言開(kāi)源發(fā)布
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論