無論是Java、Python還是C++,不同的程序語言即使形式和規則各異,但幾乎都使用英文作為關鍵詞(如if、else、return、for)編寫。然而,根據IDC估計,在全球約2,230萬名軟體開發人員中,有將近一半來自亞太地區,僅中國和印度就佔全球開發人員總數的三分之一。w2qEETC-電子工程專輯
那麼,你是否想過用中文來編寫程序?w2qEETC-電子工程專輯
去年剛從美國卡內基梅隆大學(Carnegie Mellon University)計算機科學系畢業的Lingdong Huang最近開發出稱為「文言」(Wenyan-Lang) 的程序語言,相較於主要以英文編寫的方式,新的「文言文程序語言」完全採用繁體中文文字以及古典中文語法系統編寫。w2qEETC-電子工程專輯
據《IEEE Spectrum》報導,這是全世界第一個用文言文編寫的程序語言,自去年12月發表至今還不到2個月的時間,全球開發人員已經用它編寫了數十種程序,其中甚至包括以《易經》中的算命算法編寫的程序。w2qEETC-電子工程專輯
開發這套「文言文程序語言」的Lingdong Huang之前設計過由計算機產生的中國山水畫,也曾經協助創作至今唯一以人工智慧(AI)生成的中國戲曲。去年12月,他從Carnegie Mellon University畢業,取得了計算機科學和藝術學位。w2qEETC-電子工程專輯
w2qEETC-電子工程專輯
Lingdong Huangw2qEETC-電子工程專輯
Huang大約從一年前開始有了編寫文言文程序語言的想法,終於在畢業前夕完成了這套新語言的核心部份,包括一款影像渲染器(renderer),能以像古代文言文書頁的方式顯示程序,讓編程充滿古典文學氣息。w2qEETC-電子工程專輯
Huang說自己也曾經用閱讀更多古典文學書籍當作藉口而暫緩這個想法,最後決定必須付諸實踐。「那是學期末的最後一周,課程都結束了。所以我可以利用許多空閒時間來開發『文言』(Wenyan-Lang),後來終於在3~4天內完成了核心功能。」w2qEETC-電子工程專輯
出生於中國上海的Lingdong Huang自幼學習中國古典文學,因而「迷上了文言文,青少年時期還閱讀了大量的古文書籍。」他說自己最近在看的古籍是《淮南子》。w2qEETC-電子工程專輯
Huang並非簡單地用中文漢字直接取代英文字符,而是使用自然語言處理(NLP)方式,將文言文語法轉換為JavaScript、Python和Ruby。他並在GitHub上開放其Wenyan-Lang語言,短時間內就獲得了驚人的好評,目前並累積數十種以Wenyan-Lang編寫的程序了,一半以上來自全球各地開發人員的貢獻。w2qEETC-電子工程專輯
其中,有許多還採用了古代中國數學典籍中的數學算法。例如,pi_liuhui.wy重現三國時代數學家劉徽如何利用割圓術計算圓周率;pi. Crt.wy是古中國的餘數定理;Pascal_triangle.wy計算帕斯卡三角形(Pascal’s Triangle;據稱中國典籍在Pascal發明之前記載);divination.wy甚至以程序重現《易經》中描述的佔卜方式。w2qEETC-電子工程專輯
w2qEETC-電子工程專輯
以「文言」(Wenyan-Lang)為《易經》中算命算法編寫的程序。(來源:IEEE Spectrum)w2qEETC-電子工程專輯
Huang說自己最喜歡的文言文編寫程序之一是『divination.wy』。它是《易經》中介紹的算命算法。他說自己本來就想開發,但有更熱情的其他開發人員搶先了一步。w2qEETC-電子工程專輯
開發中文程序語言的挑戰之一在於如何不使用空格而將句子分解成單詞。但如何「斷句」就是讀者的工作了。以英文程序代碼為例,他說,如果讀者看到『pancakebatter』,通常會依據個人先前經驗,理解為『pancake batter』而非『pan cake batter』。w2qEETC-電子工程專輯
但要斷句文言文有一定的難度。為了克服這一挑戰,Huang透過定義文言文程序代碼的關鍵詞長度,為程序人員解密所需要的內容。w2qEETC-電子工程專輯
w2qEETC-電子工程專輯
隨著「文言」程序語言的成功開發,許多華人開始注意到文言文也能編寫程序語言,Huang的生活也因此有了轉變,他說:「在此之前,我主要按照自己的步調做事,而今合作變得更重要了。」除了與開發者社群共同編寫程序代碼,現在他還必須檢查並評估其他人的程序代碼,並作出反饋和解釋。但Huang認為自己不僅享受這樣的體驗,還慶幸加入了一支很贊的編程團隊。w2qEETC-電子工程專輯
w2qEETC-電子工程專輯
Wenyan-lang vs. JavaScript編程窗口(來源:IEEE Spectrum)w2qEETC-電子工程專輯
目前,Wenyan-Lang開發人員正致力於研究Python、Ruby、JavaScript及C++的編譯程序、工具庫和GUI,以及可供編寫和共享程序代碼的站點,目的在於為文言文程序代碼建立開發社群,延續文言文的生命力。Huang並專注於為缺乏編程經驗的新手撰寫文言文編程入門指南,如今也有40%的完成度了。w2qEETC-電子工程專輯
責編:Yvonne Gengw2qEETC-電子工程專輯