點(diǎn)擊上方“碼農(nóng)突圍”,馬上關(guān)注
這里是碼農(nóng)充電第一站,回復(fù)“666”,獲取一份專屬大禮包真愛(ài),請(qǐng)?jiān)O(shè)置“星標(biāo)”或點(diǎn)個(gè)“在看粵語(yǔ)編程語(yǔ)言 ——The Cantonese Programming Language??磥?lái)大家都是 C 語(yǔ)言啊。
最近十分搞笑的飲茶梗,刷新了大家對(duì)粵語(yǔ)的認(rèn)知。其實(shí)粵語(yǔ)一直都是一個(gè)隱含著幽默感的方言,想想「旺角卡門」中的烏蠅哥,是不是腦海中已經(jīng)回蕩起了學(xué)友哥的四字語(yǔ)音?而且毋庸置疑,粵語(yǔ)還是需要保護(hù)的文化遺產(chǎn)。那么,今天我們就給大家介紹一個(gè)有趣的粵語(yǔ)編程語(yǔ)言 GitHub 項(xiàng)目,其開(kāi)發(fā)者 Stepfen Shawn 似乎(自稱)是來(lái)自廣州的十六歲高中生。目前,該項(xiàng)目的 star 量已經(jīng)達(dá)到了 600+。雖然工作中不會(huì)用粵語(yǔ)寫(xiě)代碼,但是空閑時(shí)玩一下粵語(yǔ)編程,難道不是件樂(lè)事嗎?項(xiàng)目地址:https://github.com/StepfenShawn/Cantonese下面列舉了粵語(yǔ)版「Hello World」以及一些基本的功能(循環(huán)、函數(shù)等),還涵蓋了面向?qū)ο缶幊毯投褩J褂玫氖纠?。?dāng)然,還有各種有趣的編程語(yǔ)法細(xì)節(jié),比如用「搞掂」來(lái)結(jié)束函數(shù),用「使下」來(lái)調(diào)用庫(kù)。項(xiàng)目作者在《5 分鐘學(xué)會(huì)粵語(yǔ)編程》教程中解釋說(shuō),這里的「畀 (bei)」在粵語(yǔ)中是「給」的意思,「睇」是「看」的意思,所以整條語(yǔ)句的意思是「讓我看看」的意思,而后面的「點(diǎn)樣先?」則表示委婉的語(yǔ)氣,意為「怎么樣?」。對(duì)于這種有意思的互動(dòng),作者解釋說(shuō),「需要用委婉語(yǔ)氣來(lái)給計(jì)算機(jī)留下第一個(gè)好的印象,否則計(jì)算機(jī)可能會(huì)離家出走呢,對(duì)吧?」而賦值語(yǔ)句「講嘢 |A| 系 1」的「講嘢」是「說(shuō)話」的意思,「?jìng)S」就是「是」的意思。作者表示,編程時(shí)寫(xiě)「系」也是能運(yùn)行的。同樣的,「唔係」就是「不是」的意思,「定係」就是「還是」的意思。
「落操場(chǎng)玩跑步...... 玩到 | 結(jié)束 | 為止」這個(gè)語(yǔ)句相當(dāng)于一個(gè) loop,「結(jié)束」就是 loop 的條件。而類似 break 的用法有三種:「收工」、「辛苦曬啦」、「同我躝」。前兩個(gè)很好理解,而第三個(gè)中的「躝」是「滾」的意思,所以使用哪個(gè)完全取決于你的心情。「嘅」的意思是「的」,有沒(méi)有感覺(jué)瞬間能讀懂了。「要做咩」直觀地告訴計(jì)算機(jī)該函數(shù)接下來(lái)要做什么,「搞掂」是「搞定」的意思,起到 end 的作用。「掟個(gè)...... 來(lái)睇下」的作用是拋出一個(gè)異常,其中「掟」有仍或丟的意思。而「諗」的意思是「想」,讓計(jì)算機(jī)作判斷。「執(zhí)嘢...... 揾到...... 執(zhí)手尾」對(duì)應(yīng)著 try、except、finally?!笀?zhí)嘢」是收拾房間的意思,「揾到」是指收拾中找到破爛了,至于「執(zhí)手尾」,就是選擇丟不丟這個(gè)破爛了。講真,這個(gè)「使下」,比 import 更形象。沒(méi)想到吧,居然還能進(jìn)行面向?qū)ο缶幊獭!竵凇沟囊馑际恰杆?,代指一個(gè)對(duì)象;「佢嘅」意思是「它的」,能夠用來(lái)構(gòu)造屬性;「佢識(shí)得」意思是「它會(huì)」,用來(lái)構(gòu)造類的方法;「老豆」就是「爹」的意思,用于描述繼承關(guān)系。最后用「明白未啊」做結(jié)束語(yǔ)問(wèn)計(jì)算機(jī)你明白了嗎,會(huì)讓計(jì)算機(jī)倍感親切,接受介紹給它的對(duì)象。這里的「Deo 哥」很明顯是個(gè)棧,「頂你」就是放入棧,「丟你」就是從棧取出。下面列舉了一些粵語(yǔ)編程的進(jìn)階玩法,比如二分查找、線性查找、冒泡排序、插入排序、KNN 等算法的實(shí)現(xiàn)。能看到這里,說(shuō)明你很感興趣啊,那就繼續(xù)學(xué)吧。對(duì)你沒(méi)有看錯(cuò),由于此語(yǔ)言由 Python 開(kāi)發(fā),還可以非常方便地編寫(xiě)機(jī)器學(xué)習(xí)算法。
此處為作者的靈魂畫(huà)作(號(hào)稱是海龜)。上圖是使用此語(yǔ)言開(kāi)發(fā)的迷宮小游戲界面。代碼鏈接:https://github.com/StepfenShawn/Cantonese/blob/main/examples/games/game.cantonese下面是作者實(shí)現(xiàn)的網(wǎng)頁(yè)和 App 示例:粵語(yǔ)編程語(yǔ)言運(yùn)行在 Python 虛擬機(jī)上,支持 Python 3,使用方式如下:還可以轉(zhuǎn)化為 Python 運(yùn)行: