谷歌工程師新作,東北話程式設計

2021-10-02 15:07:07 字數 4497 閱讀 5117

專案介紹

文言文程式設計火了,但使用它需要有一定的古文功底,因此它對大部分開發者來說並不夠友好。近日,一位谷歌的工程師琢磨出來乙個更加接地氣的程式語言專案:dongbei。

dongbei,它的創造者這樣介紹它:

一門以東北方言詞彙為基本關鍵字的以人為本的程式語言。

簡單來說就是:用東北話程式設計。專案的開發者又做了進一步的介紹:

dongbei 語言是基於 python 3 二次開發的,適用於 mac os、windows、linux 等系統,安裝也極其簡單,通過指令:src/dongbei.py 安裝即可。如果還沒有安裝 python 3,可以通過以下鏈結安裝:

按照慣例,安裝完成後要先進行測試,輸入:test/dongbei_test.py 即可。

上述流程都驗證完了,就可以正式開始程式設計了,老規矩,先上一句「hello world」。不過,這東北話的「hello world」可是與眾不同。

嘮嘮:「唉呀,這嘎噠真那啥!」。
# -*- coding: utf-8 -*-

嘮嘮:「唉呀,這嘎噠真那啥!」。

然後在命令列視窗執行:

src/dongbei.py hello-world.dongbei
執行結果如下:

唉呀,這嘎噠真那啥!
語法規則

學習一門語言,要掌握「三要素」—詞法、語法、語義,帶有濃厚東北語言風格的 dongbei 程式語言的語法規則又有什麼不一樣呢?

先來看看 dongbei 語言詞彙的構成。

詞法:

字串變數:

一行**當中,要是出現配對的中文全形雙引號,比如

...「我是乙個字串」...
那麼引號當中的內容(我是乙個字串)會被當成乙個字串常量。

注釋:

一行**當中,如果在字串常量外面出現 # 字元,所有從 # 開始的字元都會被當成注釋被忽略掉。比如

嘮嘮:# 我是乙個注釋。

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

跟:

嘮嘮:「嘎哈 #?」。
是一樣的:

分詞:為了避免歧義,很多西方語言在書寫時要用空白字元或標點把單詞隔開,但同時這也比較麻煩,dongbei 語言適應華人的書寫習慣,加不加空格換行無所謂。所以,下面兩種表達方式的效果是一樣的。

嘮 :

「嘎哈?」

嘮嘮:「嘎哈?」。
常數:除了用阿拉伯數字表示的十進位制整數(比如 2、42、250,等等),0 到 10 的常數也可以用中文表達,二也可以寫成兩或者倆。三也可以寫成仨;

零一二三四五六七**十
例如五加二的意思是 5+2

五加二
語句:乙個 dongbei 程式是由一串語句組成的。每個語句以句號(。)結束。為了表達程式設計師熾熱的感情,也可以用感嘆號(!)結束,意思和句號是一樣一樣的。

變數:ongbei 語言允許使用任何字串做變數名。只要記住兩點:變數名裡所有的空白字元都會被忽略;有歧義的時候要把變數名用【】括起來。

定義變數:dongbei 是一門以人為本的語言。我們知道東北人都是活雷鋒。所以,要定義乙個叫 xx 的變數,寫成 :」xx 是活雷鋒「, 」老王是活雷鋒「 ,」老王是活雷鋒!「 都是可以的。

xx 是活雷鋒。
老王是活雷鋒。
老王是活雷鋒!
給變數賦值:dongbei 語言不整「賦值」這種文縐縐的詞兒。咱們叫「裝」。比如:

老王裝二。
可以理解為 c 語言的

lao_wang = 2;
要把乙個活雷鋒的值清空回到原始狀態,可以用」削「:

削老王。
增減變數:活雷鋒除了會裝,加加減減也是常見的操作。按沒病走兩步的規矩,這些操作的名字叫做:走走、稍稍、走 x 步、稍 x 步。比如:

老張裝二。# 現在老張等於 2

老張走走。# 現在老張等於 3

老張走兩步。# 現在老張等於 5

老張稍稍。# 現在老張等於 4

老張稍五步。# 現在老張等於 -1

引用變數:變數,活雷鋒定義以後就可以引用了。引用的方法很簡單:把活雷鋒的名字寫出來就成。比如:

老張是活雷鋒。

老王是活雷鋒。

老張裝 250。

老王裝老張加 13。

定義了兩個活雷鋒:老張和老王。老張值 250。老王值 263。

輸出:輸出資訊用「嘮嘮」來表示,假定輸出資訊是 yy,可以寫:

嘮嘮:yy。
字串運算: 頓號(、) 操作符可以把兩個值當成字串拼接起來。假定活雷鋒老王的當前值是字串「nb」,那麼表示式

老王、「a」
上述**的值就是字串 nba。

算術運算:基本的四則運算還是支援的,不過把符號換成了文字,+ 號用「加」來表示,- 號用「減」來表示,號用「乘」來表示,/ 號用「除以」來表示。作者特別強調,除法運算叫「除以」,不叫「除」。

乘除的優先順序比加減高,相同優先順序下,運算從左到右。比如:

3 加 2 乘 5
最終結果是 13,不是 25

迴圈:我們一般程式設計使用的迴圈是 for、while 等,在 dongbei 專案中,迴圈語言非常方便、易懂:

變數名 從 x 到 y 磨嘰:

... # 需要重複做的事

磨嘰完了。

判斷(講條件):當做某件事情,必須在某個條件成立下才可做時,在該專案中的表述為:

尋思:ccc ?

要行咧就 ***

如果該條件不成立時需要執行其他操作,可以寫:

尋思:ccc ?

要行咧就 ***

要不行咧就 yyy

簡單演示

在熟悉了一些基本的語法規則後,作者也給出了一些簡單的演示,比如,當我們需要定義乙個方法(作者在專案中用「套路」來表達),可以這樣表述(以「寫九九表」為例):

寫九九表咋整:# 定義套路 寫九九表。

老王從 1 到 9 磨嘰:

老張從老王到 9 磨嘰:

嘮嘮:老王、「*」、老張、「=」、老王乘老張。# 列印 x*y=z

磨嘰完了。

嘮嘮:「」。# 空一行。

磨嘰完了。

整完了。# 結束套路定義。

如果需要執行該方法,可以使用整 + 套路名的方式,比如:

整寫九九表
這樣就可以列印出結果了:

1*1=1

1*2=2

1*3=3

...8*8=64

8*9=72

9*9=81

求 n 的階乘 f(n) :如果 n 是 0,結果為 1。如果 n 比 0 大,結果就是 n * f(n-1)。遞迴(作者使用「自推」來表達)的精髓是在算 f(n) 時,先算 f(n-1),再從 f(n-1) 算出 f(n)。
如果把上面的思路用 dongbei 這個語言寫出來,就是下述效果:

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

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

要行咧就 滾犢子吧 一。# 不需要。

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

整完了。# 定義結束。

作者簡介

zhanyong wan,谷歌資深軟體工程師 / 技術主管經理,谷歌 c ++ 測試框架 googletest 和 googlemock 的原始作者。

谷歌工程師詳解Android系統架構

首先,就像android開源和相容性技術負責人dan morrill在android開發手冊相容性部分所解釋的,android並不是傳統的linux風格的乙個規範或分發版本,也不是一系列可重用的元件整合,android是乙個用於連線裝置的軟體塊。andriod是什麼?linux 所有東西的底層是乙個...

測試工程師VS開發工程師 打敗開發工程師

測試空間旗下大頭針 出品 今天賀老師組織了一次內部培訓,目的是為了使我們帶領的兩位測試人員盡快的進入公司的專案組 參加部門會議的大多都是新員工,他們公司剛剛找了乙個專門開發 的程式設計師。首先賀老師給我們講解了dms的體系結構。公司產品結構挺有意思的,有終端機 支援gprs的sim卡,gis卡,gp...

devops工程師 DevOps工程師的認證

devops工程師 devops的團隊欣賞使用devops的過程 尤其是在多 和混合雲基礎架構,原因是多方面的。一方面,devops打破了障礙,使敏捷軟體開發和it運營的持續交付成為可能。它在企業中也很流行,因為它可以通過數位化轉型幫助加速業務成果。隨著敏捷實踐和流程深入企業內部,具有擴充套件框架知...