東北話做程式語言,好使、招人稀罕

2020-12-16 澎湃新聞

原創 Synced 機器之心

機器之心報導

參與:思源、Jamin

如果東北話是程式語言中使用的主要語言,編程是否更招人稀罕?學習編程是否會更歡樂?

前段時間,機器之心剛介紹過以文言文為程式語言的 CMU 本科生項目。近日,圈內又驚現以東北方言詞彙為基本關鍵字的程式語言(dongbei),此項目一出便有天雷勾地火,寶塔鎮河妖之勢。作者是一位 Google 的高級軟體工程師/技術主管,同時也是 Google C++測試框架 googletest 以及 googlemock 的原作者。

項目地址:https://github.com/zhanyong-wan/dongbei

dongbei 是個啥項目?

簡而言之,它是一門東北方言詞彙為基本關鍵字的程式語言。作者在項目開篇便強調了此編程需要「以人為本」:

這玩意兒可是填補了世界方言編程地圖上的一大片兒空地啊!這麼說吧,誰要是看了 dongbei 程序能忍住了不笑,我敬他是純爺們兒!

那它有啥特點咧?多了去了:

簡單啊!小學文化程度就行。您能看懂春晚不?能?那就沒問題。

好讀啊!看著看著包您不由自主地念出聲兒來。

開心啊!呃,做人嘛,最重要的是要開心。

開源啊!不但不要錢,而且不要臉 -- 隨時隨地歡迎東北話高手打臉指正。

dongbei 程式語言的開發採用了業界領先的 TDD(TreeNewBee-Driven Development)方式。具體地說,就是每個功能都是先把文案寫好,八字沒一撇牛皮就吹起來了,然後根據牛皮寫測試案例,最後再實現功能讓牛皮不被吹破。這樣做有兩大好處:第一每個功能都是有的放矢,不值得 tree new bee 的功能一概沒有。第二確保了每個功能都有文案負責吹噓,開發者的辛勞絕對不會被埋沒。

不扯犢子了。翠花,上酸菜~~~

沒事兒,跑兩圈

項目是用來跑的,是騾子是馬需要拉出來溜溜。用東北話寫代碼,看起來就比較有意思,因此我們也把這個項目拉到電腦上溜一溜。首先,只要你的系統有 Python 3,那就甭麻煩了,直接下載 GitHub 項目,跑 src/dongbei.py 就成。

如下短視頻展示了下載及測試東北方言編程的簡單過程,項目實測很好用:

我們用著非常順滑,只需要保證開發環境有 Python 3 就行了。在上面的短視頻中,我們測試了東北方言中的「Hello World」,即輸出「唉呀,這嘎噠真他媽那啥!」。這裡唯一需要注意的是東北方言代碼文件需要確保字符編碼方式為 UTF-8,即在代碼文件最上一行加上「# -*- coding: utf-8 -*-」。

如果你覺得編譯成功,完美地問候了世界,那我們寫一小段循環語句:

# -*- coding: utf-8 -*-

老王裝仨。

老王從1到10磨嘰:

老王走兩步。

嘮嘮:老王。

磨嘰完了!

直觀理解起來就是:我們先給老王賦值為 3,然後循環十次,每次老王會加二。確實在運行中,我們也能得到期望的結果。不過值得注意的是,每次執行東北方言,它都會給出對應的 Python 代碼,如下所示,「從 1 到 10 磨嘰」展示的卻是 range(1, 11),這也許是使 Python 更貼近方言語法。

東北方言編程還有很多待我們挖掘的地方,也有很多更有意思的擴展。項目作者在項目中詳細介紹了各種詞法與語法,其它開發者同樣還提了很多有意思的建議,例如:

創建個新對象 - > 娶個新媳婦?

break - > 完犢子了

exit() - > 整沒了

Exception - > 整岔劈了

type() - > 你瞅啥

也許等項目完善後,導入第三方庫,用東北話寫個神經網絡也是闊以滴。

東北話「規則」大全

dongbei 固然好玩,但避免有些對我大東北方言整的不太明白的同學,作者也提供了一些詞法,語法,語義的解釋。

東北話詞法

字符串常量:字符串常量的用法變化不大,比如依舊是需配對對應的雙引號,這裡理所應當配對的是中文全形雙引號:

...「我是一個字符串」...

注釋:注釋依舊使用 #,在字符串常量外,從 # 號開始後的都會成為注釋而被忽略掉:

嘮嘮: # 我是一個注釋。

「嘎哈#?」。 # 我還是一個注釋。

嘮嘮:「嘎哈#?」。

兩者是一樣一樣滴。

分詞:而分詞方面,為了適應廣大中文語言使用者,作者將其設定為加不加空格或換行都一樣。要知道在西方各語言中,空格對分詞的意義非常大,往往會導致整個詞組或語句所表達的核心意思完全不同。下面我們來看看示例:

「嘎哈?」

嘮嘮:「嘎哈?」。

兩者也是一樣一樣滴,沒有任何區別。

名字:在 dongbei 的設定裡,除了關鍵詞、標點符號和常數,其餘都是名字。「張三乘李四」會自動判定「乘」是關鍵詞,「張三」「李四」是名字。如要避免這種情況,可以直接添加【】把一串字符標註為名字。

如【張三乘李四】則會完全被判定一個名字,而不是再將「乘」當作關鍵詞。這一點在之前的文言編程中是做不到的,我們在寫文言語句時經常要避開採用關鍵詞做變量名。

常數:除了日常所用的阿拉伯數字所表示的十進位整數外,dongbei 同樣可支持使用中文表達 0 - 10 的常數:

零一二三四五六七八九十

二也可以寫成兩或者倆。三也可以寫成仨。「+」也可用中文「加」表示。

東北話語法

東北話詞法承接厚重的中國文化,我們怎麼用著舒服就怎麼定義。而到了語法,一方面需要有對應的 Python 語句,另一方面也要保留原汁原味的東北話語法。dongbei 程序是通過多個語句組成,每一個語句通過句號「。」分隔。項目作者表示,為了表達開發者熾熱的情感,結尾的句號也可以等價替代為感嘆號「!」。

項目作者在 README 文件中描述的語法非常詳細,但是我們感覺直接看示例更加便捷。要是在寫東北話代碼時遇到了問題,那時再具體看看 README 中的語法也是不錯的選擇。

具體而言,我們可以從如下 8 個方面了解整體語法情況,這也是項目作者準備的「dongbei 語言考試小抄」。

1. 變量

老張是活雷鋒。 # 定義變量。初始值:啥也不是。

老張裝二。 # 老張 = 2

削老張。 # 老張 = 啥也不是

老王是活雷鋒。

老王裝仨。 # 老王 = 3

老張裝老王。 # 引用變量。老張 = 3

2. 運算

老張走走。 # 老張 += 1

老張走兩步。 # 老張 += 2

老張退退。 # 老張 -= 1

老張推三步。 # 老張 -= 3

老張裝老王加二。 # 老張 = 老王 + 2

老張裝(老張減三)除以五乘老王。 # 老張 = (老張 - 3)/5*老王

3. 比較

老王比5大

7加二比老劉小

老張跟老王一樣一樣的

老李跟250不是一樣一樣的

老劉啥也不是

4. 列印

嘮嘮:「唉呀媽呀」。 # 列印字符串常量。

嘮嘮:老王。 # 列印變量的值。

嘮嘮:老王比老張大。 # 列印表達式的值。

嘮嘮:「老王是」、老王。 # 列印兩個表達式的並置。

5. 條件

尋思:老王比老張大?

要行咧就嘮嘮:「老王!」。

要不行咧就嘮嘮:「老張!」。

6. 循環

老王從1到10磨嘰:

嘮嘮:老王。

磨嘰完了!

7. 組合

尋思:老王比老張大?

要行咧就開整:

嘮嘮:「老王!」。

嘮嘮:「你好美!」。

整完了。

8. 套路

【階乘】(那啥)咋整: # 定義套路 階乘,有一個參數 那啥。

尋思:那啥比一小? # 需要自推嗎?

要行咧就 滾犢子吧 一。 # 返回值1。

要不行咧就 滾犢子吧 那啥乘整【階乘】(那啥減一)。 # 需要。返回自推結果。

整完了。 # 定義結束。

嘮嘮:整【階乘】(五)! # 使用套路

原標題:《有內味兒了,東北話做程式語言,好使、招人稀罕》

閱讀原文

相關焦點

  • 有內味兒了,東北話做程式語言,好使、招人稀罕
    機器之心報導 參與:思源、Jamin 如果東北話是程式語言中使用的主要語言,編程是否更招人稀罕?學習編程是否會更歡樂?
  • 都知道東北話,但是如何說一嘴流利的東北話呢
    相信如今很多的朋友,都知道東北話,但是如何說一嘴流利的東北話,想必還有很多人不是很明白,今天小編就帶大家一起看看如何說正宗的「大碴子味兒」東北話!第一個:省醫保暫不好使哈哈!正常讀出這句話,就能感受到東北人的氣息了!看著這句話,似乎就能想到,病人和醫生之間的對話了!學會了嗎?
  • 這味兒上頭,前有文言文,又來東北話,中文編程玩得挺得勁!
    全宇宙都知道,東北話容易上頭,不知道用東北話編程,會不會上頭。Google的一位華人高級軟體工程師/技術主管就開發了一款以東北方言為關鍵字的程式語言,並且在GitHub上進行了開源,並且還寫了一篇詳細教程來介紹這款語言。
  • 東北話情懷,老過癮啦
    秋天來了,天氣可傢伙涼快了,人們可稀罕三一夥,五一堆兒的嘮嗑。掰扯到開心處,都哈哈大笑,可解嘎吱了。農村人實在,給你倒碗水都很滿,浮溜浮溜兒的!冬天農村最清閒!莊稼都收上場了,沒啥事兒了,都在家開始貓冬了。農村的冬季非常冷,嘎巴嘎巴冷,人們出行凍得斯斯哈哈的,冰雪道使人離了歪斜,走二裡地,那是真費勁,吭哧癟肚一樣!
  • vb程式語言是做什麼用的_VB程式語言有哪些
    最早的程式語言是在電腦發明之後產生的,當時是用來控制提花織布機及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的程式語言,而且每年仍有新的程式語言誕生。很多程式語言需要用指令方式說明計算的程序,而有些程式語言則屬於聲明式編程,說明需要的結果,而不說明如何計算。   程式語言的描述一般可以分為語法及語義。
  • 她是乾隆的嫡女,出嫁後生下一個兒子,名字太招人稀罕了!
    她是乾隆的嫡女,出嫁後生下一個兒子,名字太招人稀罕了!她是乾隆的嫡女,出嫁後生下一個兒子,名字太招人稀罕了!乾隆十分看重嫡子,不只一次的表示過想要立富察的兒子當儲君,只可惜她的兩個兒子都十分的短命,雖然受到了皇上無盡的疼愛但是卻都沒有這麼好的運氣,可其實富察還有兩個女兒,雖然其中的一個也年幼便去世了,但是另一個的命運卻十分好,她就是固倫公主。
  • 學習編程和學習程式語言是兩碼事
    因為你會注意到編程與程式語言幾乎沒有關係。思考一下,為什麼偽代碼在這些課程中如此常見。但大多數程式設計師總是會落入陷阱。我們學了十幾年程式語言,才意識到自己真正需要學的是編程,而我本身就是受害者。我花了十多年的時間來學習各種程式語言。我學的程式語言越多,構建簡單的東西就越困難,我感覺找不到正確的工具。
  • 進來瞅瞅,這樣「嬸兒」的東北話你都知道啥意思嗎?
    進來瞅瞅,這樣「嬸兒」的東北話你都知道啥意思嗎? 全球方言哪家強東北話實力佔首榜
  • 《東北話詞典》:十載記錄原汁原味的東北話
    東北人語言的火辣、生動、形象,盡在其中;東北人性情的豪放、樸實、真誠,盡在其中;東北人生活的艱辛、奮鬥、犧牲,盡在其中。有人評價說「這是一部詮釋東北文化的百科全書」似不為過。   近年來,東北話隨著東北特色文藝作品:電影、電視劇、二人轉、小品,如《闖關東》、《聖水湖畔》、《鄉村愛情》、《昨天·今天·明天》、《不差錢》等的熱播、熱演走進千家萬戶。引起觀眾濃濃的興趣。
  • 計算機程式語言的發展簡史,人工智慧與雲計算程式語言!
    學習一兩門計算機程式語言也如當初學習英文一樣的火熱,隨著人工智慧AI和雲計算的不斷發展,Python語言和Scala語言已經成為這兩個領域裡面最為火熱的程式語言了,可以預知未來學習計算機程式語言的人也一樣會如同學習英文一樣的成為一種新常態,並且成為一種穩定的常態。以下筆者將以自己的學習認知,簡單的闡述一下計算機程式語言的發展。
  • 自動化程式語言的未來
    即使是最大、最複雜的自動化系統,也受到繼電器物理特性的限制,因此梯形圖邏輯語言並不需要做太多。如今,PLC 所用的處理器晶片,所佔用的空間、資金和時間成本比繼電器更少,但能實現的功能更多。另外,PLC 中使用的程式語言也在不斷擴展,以實現不斷增加的功能。現在,梯形圖邏輯可以實現的功能比過去更多。
  • 福原愛深夜秀恩愛,展示語言天賦,網友:日語版的東北話很好聽!
    哈哈,這東北話說的萌翻網友,展示了很強的語言天賦,網友:日語版的東北話很好聽!不過眾網友也給出了治療失眠的方法,也紛紛在微博底下留言表示「想江爸爸了」「 想老公了唄」。能夠看到中國粉絲對於福原愛很是寵愛和喜歡。緊接著又發了一條是:旁邊空蕩蕩噠睡不著,並艾特了江宏傑。
  • 福原愛卻東北話臺灣腔自如切換
    中國最容易把人帶跑偏的兩種方言:東北話和臺灣話如果實打實PK起來,誰會更勝一籌?這一點,嫁給臺灣人的福原愛可能比較有發言權。。。。。。據@環球時報 視頻報導,12月8日,在北京舉行的中日青年友好使者沙龍上,福原愛聊到,自己在家裡說東北話,老公和婆婆有時候不太能聽懂。有一次,飯煮好了,她跟老公江宏傑說:你幫我kuǎi一kuǎi,結果,對方一臉問號,「是sěn mó yì sì」(什麼意思)?你在suō sěn mó?」
  • 沒見過歪果仁說東北話?
    沒見過歪果仁說東北話?  關於東北話,江湖上流傳著這樣的「神曲」↓↓↓  東北話 賈乃亮 - 2017湖南衛視元宵喜樂會  沒錯,東北話就是這麼牛!  在中國東北,尤其是哈爾濱,歐式風情的建築隨處可見,滿大街的金髮碧眼的歐洲面孔令人目不暇接。  當你滿臉微笑擠出一句「hello」時,歪果仁回頭一句「咋的了?」
  • plc程式語言有幾種?plc常用的程式語言
    正如新手剛開始接觸PLC,它的軟體程式語言與一般計算機語言相比,具有明顯的特點,它既不同於高級語言,也不同於一般的彙編語言,它既要滿足易於編寫又要滿足易於調試的要求。早期的PLC僅支持梯形圖程式語言和指令表程式語言,現根據國際電工委員會制定PLC編程支持的語言包括以下五種:梯形圖Delete(LD)、指令表Delete(IL)、功能模塊圖Delete(FBD)、順序功能流程圖Delete(SFC)及結構化文本Delete(ST)。
  • matlab是什麼程式語言?matlab是程式語言嗎
    使用 MATLAB,您可以較使用傳統的程式語言(如 C、C++ 和 Fortran)更快地解決技術計算問題。MATLAB 是美國MathWorks公司出品的商業數學軟體,用於算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。
  • 【世界上最全的程式語言大集合】計算機各程式語言介紹
    一種計算機語言讓程式設計師能夠準確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的行動。最早的程式語言是在電腦發明之後產生的,當時是用來控制提花織布機及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的程式語言,而且每年仍有新的程式語言誕生。很多程式語言需要用指令方式說明計算的程序,而有些程式語言則屬於聲明式編程,說明需要的結果,而不說明如何計算。程式語言的描述一般可以分為語法及語義。語
  • 即刻就業:編程學什麼語言好,程式語言有多少種,程式語言怎麼學
    隨著時代的發展計算機進入了每一個家庭,是每個家挺必不可少的工具,這樣各種科技公司也推出了各種程式語言,例如微軟的 C語言 C++ asp.net 甲骨文的 java Android; 蘋果的 OC語言 PHP JS H5 大數據 雲計算等多種語言,供我們學習參考。
  • 最困難的程式語言永遠是你將要學習的第二個程式語言
    在學校裡老師常跟小芯說的一些東西,小芯可以分享給新手開發人員:最困難的程式語言永遠是你將要學習的第二個程式語言。不要因為小芯分享的故事而垂頭喪氣——小芯故事的意思是,當你開始學習如何編程,你會對編程有預先的想法。最後,你會做出比理應更多的句法連接和假設,由此,在開始學習第二種程式語言時,你必須忘記上述假設。
  • 如何學會所有的程式語言?
    不過,比得到答案更重要的是:掌握學習新程式語言的能力。授之以魚不如授之以漁對於一個編程老手來說,學習新的程式語言應該很容易。他們只需要一個周末甚至是幾個小時就可以開始用新學的程式語言寫代碼了。優秀的程式設計師可以為了完成某個任務使用任何一門程式語言。畢竟,程式語言只是工具。