6月1日,在這個充滿歡聲笑語的日子裡,數心開物工作室開源釋出了一門面向青少年、兒童和非專業人士的中文程式語言——青語言。
長久以來,中文程式設計一直是開發者社群中爭議不斷的熱點問題。一部分人認為,程式語言是符號化的語言,沒有中英文之分,所以中文程式設計沒有意義。而另一部分人則認為跨語種學習程式設計,存在事實上的困難,提高了學習門檻。這樣的討論在社群中一直熱度不減,成為經久不衰的話題。
事實上,我國在中文程式設計領域並非一片空白,目前已存在多款中文程式語言,包括商用的易語言、習語言、TC簡單開發工具等,以及開源的文言文程式設計、凹語言等等。總的來說,這些中文程式語言都取得了一定的成功,但也都存在一些問題。以易語言為例,雖然和主流程式語言存在差距,但無論從使用人數還是商業角度上,都可以稱得上是一門成功的程式語言。然而,易語言脫胎於VB,在享受VB生態便利的同時,也受到了相應的限制,其開發的軟體主要侷限於Windows平臺的桌面應用。在行動網際網路迅猛發展的當下,桌面開發市場萎靡不振,VB早已風光不在,而易語言也同樣面臨困局。另一方面,目前開源社群釋出的中文程式語言,大多缺乏程式設計開發相關的支援工具,同時缺乏推廣的動力,因此遲遲未能出現被大眾廣泛接受的作品。
針對這一現狀,我們深入分析了中文程式設計的特點,面臨的問題以及潛在的使用者,最終決定開發一門面向青少年、兒童和非專業人士的中文程式語言。
當下,我國在資訊科技領域取得了長足進步,在各個前沿技術領域均不乏專業的技術人才。但與其他技術領域面臨的問題類似,資訊科技的開拓創新能力一直飽受詬病。造成這一問題的原因是多方面的,我們認為其中一個十分重要的原因是:我國缺少廣闊而深厚的「程式設計土壤」。
在國外,尤其是英文國家,由於不存在語言障礙,青少年、兒童早早地就接觸到程式設計相關的知識,很多科技領域龍頭企業的創始人,在兒童時期就開始學習程式設計,鍛鍊了邏輯思維和創新能力。例如,比爾蓋茲13歲開始學習程式設計,扎克伯格12歲時就開發了即時通訊軟體,馬斯克12歲時開發了一款遊戲並賺到了500美金。類似的例子還有很多,不難看出,青少年時期的程式設計教育能夠促進創新意識和創新能力的養成。
反觀國內,我們的教學仍然以傳統課程為主,不重視創新,普遍缺少程式設計方面的課程,很多計算機專業的同學直到進入大學階段,才開始接觸程式設計。近年來,我國也在推廣程式設計教育,例如一些地區在推行Python進入中學課程,但目前普及率較低。另一方面,市場上也出現了一些面向兒童的程式設計教育產品,例如來自國外的Scratch和國產的程式設計貓等。這類程式設計教育產品主要以拼圖的方式進行教學,簡單易學,但與主流的程式語言差異較大,對後續的程式設計教學幫助有限。總體而言,我國在青少年、兒童的程式設計教育方面與國外差距較大。
綜合以上原因,我們開發並開源釋出了青語言,其設計目標如下:
1、語法簡單易學。
2、以中文為載體,主要使用中文進行程式設計。
3、提供中文幫助資訊、提示資訊和檔案。
4、整體設計符合中文語法習慣和輸入習慣,提供便捷的開發工具。
5、適合不同種類軟體開發的通用程式語言。
6、提供簡單便捷的功能擴充套件介面。
7、多平臺相容。
目前我們釋出了青語言V0.9版本,已經基本實現了以上設計目標。
首先,青語言的語言核心來源於一門古老而充滿哲學的程式語言——LISP,其被稱為是「創造程式語言的語言」。基於這一點,青語言的語言核心精巧,語法的實現的程式碼僅涉及到少數幾個核心檔案,完成了從程式碼文字拆分到語法樹構建,再到程式碼求解的全過程。作為一個開源專案,我們希望得到開源社群的助力,這時候保持一個簡單小巧的核心,有助於開源開發者瞭解語言的實現,並參與到語言的開發中來。為此,我們對青語言的核心程式碼提供了儘可能詳盡的註釋,同時提供青語言開發檔案,希望幫助開發者快速掌握青語言的開發。
在語法設計方面,青語言主要參考了JavaScript。基於LISP核心,我們有能力實現各種不同的語法,但在語法設計上目前沒有做過多的創新,主要考慮有兩點。其一是JavaScript的語法十分成熟,可以保證語法在邏輯上不存在大的問題。其二是我們希望青語言的使用者能夠快速過渡到主流的程式語言開發中。當然,青語言也並非完全照抄JavaScript,我們還考慮到中文的特點,在語法設計上儘可能地符合中文的語言習慣和輸入習慣,便於學習和使用。
良好的檔案對於構建語言生態有著十分重要的作用,尤其是對於青語言的初學者來說,詳盡的檔案和教學資源能夠幫助他們快速瞭解和掌握程式設計知識。考慮到這一點,我們為青語言內建的函數都提供了函數的使用說明,使用者在直譯器互動介面即可檢視函數的使用方式。同時,我們提供了詳盡的線上檔案,包含完整的語言概念和語法介紹,以及一些範例的程式碼。
除檔案外,開發工具同樣十分重要,好的開發工具能夠起到事半功倍的效果。為此,我們為青語言配套開發了一個青語言編輯器,提供了程式碼編輯、執行等功能,實現了簡單的程式碼提示和補全,能夠有效提升青語言程式碼的開發效率。此外,青語言編輯器中還內建了簡單的教學,可以跟隨教學學習青語言。
基於LISP核心,青語言可以根據不同的應用需求,設計相應的語法。例如,在圖形介面程式設計方面,目前比較主流的方式是使用標示語言進行介面的設計,相對完全物件導向的方式效率更高。因此目前比較常見的圖形介面開發方式是程式語言+標示語言。在青語言中,我們提供了標籤資料型別,因此可以直接使用青語言完成程式介面和程式邏輯的開發。目前這個功能為青語言編輯器獨有,通過簡單的青語言程式碼即可實現圖形介面程式。
程式語言的功能擴充套件方式,對語言生態起到十分重要的作用。青語言專案目前主要的工作體現在語言前端的實現,我們從零開始完成了從程式碼到語法樹的構建,沒有使用任何現有的元件,完全掌握語法實現的每一個細節。而青語言的後端則交由.Net平臺來實現。基於這樣的設計,我們可以藉助.Net平臺的生態,並且可以將擴充套件的功能打包為單個dll檔案,能夠很方便地在青語言程式碼中參照其功能。動態庫的開發是我們目前最希望能夠得到開源社群支援的方向,我們提供了開發動態庫的範例程式和教學檔案,希望更多專業方向的開發者加入專案的開發。基於.Net生態,我們可以實現十分豐富的功能,例如我們封裝了簡單的AI功能。
青語言後端使用.Net的另一好處是可以實現跨平臺相容,本次釋出即提供了各個主流平臺的可執行程式,下載後可以直接執行使用。除了桌面程式外,我們還提供了一個安卓端的APP,能夠實現手機上程式設計,進一步降低了語言的學習成本。不過需要注意的是,這是一個實驗性的專案,由於系統差異,有部分內建函數無法正常使用。
開源專案的發展,尤其是程式語言這類基礎專案的發展,需要持續的投入。為此我們與高校合作建立了青語言聯合實驗室,依託高校教研資源,保障青語言生態的持續穩健發展。目前我們還在積極尋求更多的合作伙伴,可以通過郵箱[email protected]聯絡我們。
以上就是本次釋出的青語言的一些基本介紹,作為一個開源專案,我們希望更多熱愛程式設計的開發者加入到專案中。中文程式設計這一話題雖然爭議不斷,但我們確實希望能夠消除語言障礙,讓更多人瞭解程式設計,愛上程式設計。我們將與社群共同進步,持續推進青語言生態的發展。