自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

老鐵,東北話編程了解一下不?谷歌工程師新作!

新聞 前端
文言文編程火了,但使用它需要有一定的古文功底,因此它對大部分開發(fā)者來說并不夠友好。近日,一位谷歌的工程師琢磨出來一個更加接地氣的編程語言項目:dongbei。

 [[314161]]

如果說用文言文編程還是有些困難,那么,東北話呢?

項目介紹

文言文編程火了,但使用它需要有一定的古文功底,因此它對大部分開發(fā)者來說并不夠友好。近日,一位谷歌的工程師琢磨出來一個更加接地氣的編程語言項目:dongbei。

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

dongbei,它的創(chuàng)造者這樣介紹它:

一門以東北方言詞匯為基本關(guān)鍵字的以人為本的編程語言。

簡單來說就是:用東北話編程。項目的開發(fā)者又做了進一步的介紹:

dongbei 語言是基于 Python 3 二次開發(fā)的,適用于 Mac OS、Windows、Linux 等系統(tǒng),安裝也極其簡單,通過指令:src/dongbei.py 安裝即可。如果還沒有安裝 Python 3,可以通過以下鏈接安裝:https://docs.python-guide.org/starting/install3/osx/

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

上述流程都驗證完了,就可以正式開始編程了,老規(guī)矩,先上一句“hello world”。不過,這東北話的“hello world”可是與眾不同。

首先創(chuàng)建一個名字叫 hello-world.dongbei 的文本文件,內(nèi)容如下(已做和諧處理):

  1. 嘮嘮:“唉呀,這嘎噠真那啥!”。 

用 utf-8 編碼保存。要是編輯器顯示編碼錯誤,那就把文件內(nèi)容改成:

  1. # -*- coding: utf-8 -*- 
  2.  
  3. 嘮嘮:“唉呀,這嘎噠真那啥!”。 

然后在命令行窗口運行:

  1. src/dongbei.py hello-world.dongbei 

執(zhí)行結(jié)果如下:

  1. 唉呀,這嘎噠真那啥! 

當(dāng)然,如果是非東北程序員,那么理解東北話還是有點兒困難的,因此你需要對東北話進行一番“補習(xí)”,地址在此:

https://github.com/zhanyong-wan/dongbei/blob/master/doc/cheatsheet.md

語法規(guī)則

學(xué)習(xí)一門語言,要掌握“三要素”—詞法、語法、語義,帶有濃厚東北語言風(fēng)格的 dongbei 編程語言的語法規(guī)則又有什么不一樣呢?

先來看看 dongbei 語言詞匯的構(gòu)成。

詞法:

字符串變量:

一行代碼當(dāng)中,要是出現(xiàn)配對的中文全角雙引號,比如

  1. ...“我是一個字符串”... 

那么引號當(dāng)中的內(nèi)容(我是一個字符串)會被當(dāng)成一個字符串常量。

注釋:

一行代碼當(dāng)中,如果在字符串常量外面出現(xiàn) # 字符,所有從 # 開始的字符都會被當(dāng)成注釋被忽略掉。比如

  1. 嘮嘮:# 我是一個注釋。 
  2.  
  3. “嘎哈 #?”。# 我還是一個注釋。 

跟:

  1. 嘮嘮:“嘎哈 #?”。 

是一樣的:

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

  1. 嘮 
  2.  
  3. 嘮 
  4.  
  5. : 
  6.  
  7. “嘎哈?” 
  8.  
  9. 。 

 

  1. 嘮嘮:“嘎哈?”。 

名字: 在 dongbei 語言里面,除了關(guān)鍵詞、標點符號和常數(shù),剩下的都是名字。比如,在“張三乘李四”這個 dongbei 語言表達式里,“乘”是一個關(guān)鍵詞,“張三”和“李四”是兩個不同的名字,dongbei 語言允許用中文全角方括號【】把一串字符標注為名字。

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

  1. 零一二三四五六七八九十 

例如五加二的意思是 5+2

  1. 五加二 

語句: 一個 dongbei 程序是由一串語句組成的。每個語句以句號(。)結(jié)束。為了表達程序員熾熱的感情,也可以用感嘆號(?。┙Y(jié)束,意思和句號是一樣一樣的。

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

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

  1. XX 是活雷鋒。  
  1. 老王是活雷鋒。  

  1. 老王是活雷鋒!  

給變量賦值:dongbei 語言不整“賦值”這種文縐縐的詞兒。咱們叫“裝”。比如:

  1. 老王裝二。 

可以理解為 C 語言的

  1. lao_wang = 2

要把一個活雷鋒的值清空回到原始狀態(tài),可以用”削“:

  1. 削老王。 

增減變量: 活雷鋒除了會裝,加加減減也是常見的操作。按沒病走兩步的規(guī)矩,這些操作的名字叫做:走走、稍稍、走 X 步、稍 X 步。比如:

  1. 老張裝二。# 現(xiàn)在老張等于 2 
  2.  
  3. 老張走走。# 現(xiàn)在老張等于 3 
  4.  
  5. 老張走兩步。# 現(xiàn)在老張等于 5 
  6.  
  7. 老張稍稍。# 現(xiàn)在老張等于 4 
  8.  
  9. 老張稍五步。# 現(xiàn)在老張等于 -1 

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

  1. 老張是活雷鋒。 
  2.  
  3. 老王是活雷鋒。 
  4.  
  5. 老張裝 250。 
  6.  
  7. 老王裝老張加 13。 

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

輸出: 輸出信息用“嘮嘮”來表示,假定輸出信息是 YY,可以寫:

  1. 嘮嘮:YY。 

字符串運算 : 頓號(、) 操作符可以把兩個值當(dāng)成字符串拼接起來。假定活雷鋒老王的當(dāng)前值是字符串“NB”,那么表達式

  1. 老王、“A” 

上述代碼的值就是字符串 NBA。

算術(shù)運算 :基本的四則運算還是支持的,不過把符號換成了文字,+ 號用“加”來表示,- 號用“減”來表示,號用“乘”來表示,/ 號用“除以”來表示。作者特別強調(diào),除法運算叫“除以”,不叫“除”。

乘除的優(yōu)先級比加減高,相同優(yōu)先級下,運算從左到右。比如:

  1. 3 加 2 乘 5 

最終結(jié)果是 13,不是 25

循環(huán):我們一般編程使用的循環(huán)是 for、while 等,在 dongbei 項目中,循環(huán)語言非常方便、易懂:

  1. 變量名 從 X 到 Y 磨嘰: 
  2.  
  3. ... # 需要重復(fù)做的事 
  4.  
  5. 磨嘰完了。 

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

  1. 尋思:CCC ? 
  2.  
  3. 要行咧就 XXX 

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

  1. 尋思:CCC ? 
  2.  
  3. 要行咧就 XXX 
  4.  
  5. 要不行咧就 YYY 

簡單演示

在熟悉了一些基本的語法規(guī)則后,作者也給出了一些簡單的演示,比如,當(dāng)我們需要定義一個方法(作者在項目中用“套路”來表達),可以這樣表述(以“寫九九表”為例):

  1. 寫九九表咋整:# 定義套路 寫九九表。 
  2.  
  3. 老王從 1 到 9 磨嘰: 
  4.  
  5. 老張從老王到 9 磨嘰: 
  6.  
  7. 嘮嘮:老王、“*”、老張、“=”、老王乘老張。# 打印 X*Y=Z 
  8.  
  9. 磨嘰完了。 
  10.  
  11. 嘮嘮:“”。# 空一行。 
  12.  
  13. 磨嘰完了。 
  14.  
  15. 整完了。# 結(jié)束套路定義。 

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

  1. 整寫九九表 

這樣就可以打印出結(jié)果了:

  1. 1*1=1 
  2.  
  3. 1*2=2 
  4.  
  5. 1*3=3 
  6.  
  7. ... 
  8.  
  9. 8*8=64 
  10.  
  11. 8*9=72 
  12.  
  13. 9*9=81 

這樣的簡單示例還有很多,此處僅列舉這一個作為參考,對于復(fù)雜的遞歸題目,作者表示該編程語言同樣有效,例如這道程序員都很熟悉的題目:

  1. 求 n 的階乘 f(n) :如果 n 是 0,結(jié)果為 1。如果 n 比 0 大,結(jié)果就是 n * f(n-1)。遞歸(作者使用“自推”來表達)的精髓是在算 f(n) 時,先算 f(n-1),再從 f(n-1) 算出 f(n)。 

如果把上面的思路用 dongbei 這個語言寫出來,就是下述效果:

  1. 【階乘】(那啥)咋整:# 定義套路 階乘,有一個參數(shù) 那啥。 
  2.  
  3. 尋思:那啥比一?。? 需要自推嗎? 
  4.  
  5. 要行咧就 滾犢子吧 一。# 不需要。 
  6.  
  7. 要不行咧就 滾犢子吧 那啥乘整【階乘】(那啥減一)。# 需要。自推吧。 
  8.  
  9. 整完了。# 定義結(jié)束。 

作者簡介

Zhanyong Wan,谷歌資深軟件工程師 / 技術(shù)主管經(jīng)理,谷歌 C ++ 測試框架 googletest 和 googlemock 的原始作者。

 

 

責(zé)任編輯:張燕妮 來源: AI前線
相關(guān)推薦

2009-06-02 13:24:45

工程師忠告職場

2018-06-06 15:55:53

區(qū)塊鏈滴滴打車共享單車

2023-06-30 08:27:20

2020-12-10 08:44:35

WebSocket輪詢Comet

2022-03-24 13:36:18

Java悲觀鎖樂觀鎖

2019-11-25 10:34:16

代碼Google工作

2019-02-20 14:16:43

2020-02-10 14:26:10

GitHub代碼倉庫

2018-06-05 17:40:36

人工智能語音識別

2024-04-11 12:19:01

Rust數(shù)據(jù)類型

2018-01-17 17:02:08

運維工程師面試經(jīng)歷試題

2010-10-14 10:35:24

谷歌工程師

2019-12-13 16:19:15

戴爾

2010-02-02 15:37:32

2022-03-07 06:34:22

CQRS數(shù)據(jù)庫數(shù)據(jù)模型

2020-03-01 17:53:38

Excel大數(shù)據(jù)微軟

2020-03-01 13:55:15

datasetsear免費數(shù)據(jù)集2500萬

2021-02-04 22:29:20

索引web開發(fā)

2023-12-28 17:50:00

前端開發(fā)

2018-07-17 14:42:50

點贊
收藏

51CTO技術(shù)棧公眾號