首頁 > 科技

這裡有個16歲高中生開發的粵語程式設計項目,GitHub star量600+

2021-06-10 23:33:14

機器之心報道

編輯:力元

粵語程式語言——The Cantonese Programming Language。看來大家都是 C 語言啊。

最近十分搞笑的飲茶梗,重新整理了大家對粵語的認知。

其實粵語一直都是一個隱含著幽默感的方言,想想「旺角卡門」中的烏蠅哥,是不是腦海中已經迴盪起了學友哥的四字語音?而且毋庸置疑,粵語還是需要保護的文化遺產。

那麼,今天我們就給大家介紹一個有趣的粵語程式語言 GitHub 項目,其開發者 Stepfen Shawn 似乎(自稱)是來自廣州的十六歲高中生。目前,該項目的 star 量已經達到了 600+。雖然工作中不會用粵語寫程式碼,但是空閒時玩一下粵語程式設計,難道不是件樂事嗎?

項目地址:https://github.com/StepfenShawn/Cantonese

粵語程式設計啟蒙

下面列舉了粵語版「Hello World」以及一些基本的功能(迴圈、函數等),還涵蓋了面向物件程式設計和堆棧使用的示例。當然,還有各種有趣的程式設計語法細節,比如用「搞掂」來結束函數,用「使下」來呼叫庫。

項目作者在《5 分鐘學會粵語程式設計》教程中解釋說,這裡的「畀 (bei)」在粵語中是「給」的意思,「睇」是「看」的意思,所以整條語句的意思是「讓我看看」的意思,而後面的「點樣先?」則表示委婉的語氣,意為「怎麼樣?」。對於這種有意思的互動,作者解釋說,「需要用委婉語氣來給計算機留下第一個好的印象,否則計算機可能會離家出走呢,對吧?」

而賦值語句「講嘢 |A| 系 1」的「講嘢」是「說話」的意思,「係」就是「是」的意思。作者表示,程式設計時寫「系」也是能運行的。同樣的,「唔係」就是「不是」的意思,「定係」就是「還是」的意思。

「落操場玩跑步...... 玩到 | 結束 | 為止」這個語句相當於一個 loop,「結束」就是 loop 的條件。

而類似 break 的用法有三種:「收工」、「辛苦曬啦」、「同我躝」。前兩個很好理解,而第三個中的「躝」是「滾」的意思,所以使用哪個完全取決於你的心情。

「嘅」的意思是「的」,有沒有感覺瞬間能讀懂了。

「要做咩」直觀地告訴計算機該函數接下來要做什麼,「搞掂」是「搞定」的意思,起到 end 的作用。

「掟個...... 來睇下」的作用是拋出一個異常,其中「掟」有仍或丟的意思。而「諗」的意思是「想」,讓計算機作判斷。

「執嘢...... 搵到...... 執手尾」對應著 try、except、finally。「執嘢」是收拾房間的意思,「搵到」是指收拾中找到破爛了,至於「執手尾」,就是選擇丟不丟這個破爛了。

講真,這個「使下」,比 import 更形象。

沒想到吧,居然還能進行面向物件程式設計。「佢」的意思是「它」,代指一個物件;「佢嘅」意思是「它的」,能夠用來構造屬性;「佢識得」意思是「它會」,用來構造類的方法;「老豆」就是「爹」的意思,用於描述繼承關係。最後用「明白未啊」做結束語問計算機你明白了嗎,會讓計算機倍感親切,接受介紹給它的物件。

這裡的「Deo 哥」很明顯是個棧,「頂你」就是放入棧,「丟你」就是從棧取出。

粵語程式設計進階

下面列舉了一些粵語程式設計的進階玩法,比如二分查詢、線性查詢、氣泡跑需、插入排序、KNN 等演算法的實現。能看到這裡,說明你很感興趣啊,那就繼續學吧。

對你沒有看錯,由於此語言由 Python 開發,還可以非常方便地編寫機器學習演算法。

此處為作者的靈魂畫作(號稱是海龜)。

上圖是使用此語言開發的迷宮小遊戲介面。

程式碼連結:https://github.com/StepfenShawn/Cantonese/blob/main/examples/games/game.cantonese

下面是作者實現的網頁和 App 示例:

加入語言的方式

粵語程式語言運行在 Python 虛擬機器上,支援 Python 3,使用方式如下:

還可以轉化為 Python 運行:

以及生


IT145.com E-mail:sddin#qq.com