大神解惑|程序員國(guó)的語(yǔ)言

在訓(xùn)練小白寫(xiě)循環(huán)語(yǔ)句的時(shí)候,大神給了小白這么一個(gè)練習(xí)題:寫(xiě)一段程序,找到 5 在 list [1, 2, 3, 5, 8] 中的位置。然后,小白給出了讓大神感覺(jué)匪夷所思的代碼(為了保護(hù)小白,大神在這里隱去了小白的小白程序)。大神讓小白用人類的語(yǔ)言來(lái)描述一下自己想干什么,小白的描述如下(已被簡(jiǎn)化):

讓 x 從 0 開(kāi)始計(jì)算,直到找到 L[x] = 5。

用人類的大腦理解的話,當(dāng)然是沒(méi)有問(wèn)題的。但程序員國(guó)的人并不這么思考,或者說(shuō)并不這么說(shuō)話。于是大神讓小白把后半句換個(gè)說(shuō)話再描述一下,小白想了想說(shuō):

直到發(fā)現(xiàn) L[x] = 5

大神還是不滿意,讓小白再試一下,痛苦的小白又想了半天,給出了這樣一個(gè)描述:

當(dāng) L[x] = 5 成立時(shí),輸出 x 的值

雖然小白在完成最后一次描述之后,寫(xiě)出了正確的程序,但他其實(shí)說(shuō)的還是不對(duì)。

程序員國(guó)的人是怎么說(shuō)話的

在程序員國(guó)存在很多俚語(yǔ),這些俚語(yǔ)看起來(lái)和人類的語(yǔ)言差不多,但實(shí)際上這些俚語(yǔ)對(duì)應(yīng)了程序中的一行或者一段代碼。程序員們使用這些語(yǔ)言交流,并可以直接翻譯成對(duì)應(yīng)的代碼。所以,這些語(yǔ)言又有著與表面不太一樣的意思。大神在這里總結(jié)一些常見(jiàn)的程序員的語(yǔ)言,只有學(xué)會(huì)了這些表達(dá)的方式,小白才能融入到程序員的世界,和他們無(wú)縫的交流。當(dāng)然,學(xué)會(huì)了這些語(yǔ)言,并且使用這些語(yǔ)言思考,也就大概學(xué)會(huì)了基本的程序?qū)懛ā?/p>

1. = 怎么說(shuō)

小白在學(xué) Python 的時(shí)候,第一課就學(xué)了變量。但程序員的世界里,這個(gè)不讀“等于”,這個(gè)讀作“賦值”。意思和數(shù)學(xué)里的“設(shè)”差不多。所以在讀題目的時(shí)候,常常會(huì)看到“設(shè) x = 1”,或者“給定 L = [1, 2, 3, 4, 5]”,其意思是給一個(gè)變量賦了對(duì)應(yīng)的值。

2. if 是什么意思

if 是代碼里最常見(jiàn)的單詞,只要需要對(duì)一些條件進(jìn)行區(qū)分,就需要這個(gè)單詞。在程序員的世界里,這個(gè)不讀成“直到”,也不是“發(fā)現(xiàn)”和“當(dāng)”。這些都是錯(cuò)誤的表達(dá)。這個(gè)就是字面的意思:如果??聪滦“咨厦娴恼Z(yǔ)言表述,其實(shí)大神就是想引導(dǎo)他表達(dá)“如果”這個(gè)意思:

讓 x 從0開(kāi)始計(jì)算,如果 L[x] == 5,就打印 x 的值。

當(dāng)腦子里想的“如果”,就不會(huì)寫(xiě)出奇怪的代碼了。其實(shí)如果和程序多交流就會(huì)發(fā)現(xiàn),他們很喜歡說(shuō)“如果”這個(gè)詞,因?yàn)檫@就是他們每天的工作(職業(yè)病)。

if 配對(duì)的 else,在程序員國(guó)被說(shuō)成:否則。這樣,比較完整的的表達(dá)就是:如果……,那么……,否則……。這些表達(dá)雖然很呆(所以程序常常都給人很呆的印象),但很實(shí)用,因?yàn)橹苯訉?duì)應(yīng)了程序中的片段。

3. for 是什么意思

for 也是也程序里很常用的單詞,本質(zhì)上這個(gè)詞表示重復(fù)。不過(guò),翻譯成程序員國(guó)人的語(yǔ)言,這個(gè)應(yīng)該這么說(shuō):對(duì)于每個(gè)……,做“一些事情”。比如 Python 中的 for

for x in range(0, 10):
    print(x)

翻譯成人類的語(yǔ)言就是:對(duì)于 [0, 10) 這個(gè)區(qū)間里的每個(gè)值 x,打印 x 的值。

4. while 是什么意思

在小白的幾個(gè)表達(dá)中,使用了一個(gè)“當(dāng)”的說(shuō)法,但其實(shí)while在程序員國(guó)表表示“當(dāng)”的意思。還是舉一個(gè) Python 里的例子:

x = 10
while x > 0:
    print(x)
    x = x - 1

這里,翻譯成人類的語(yǔ)言就是:當(dāng) x 的值大于 0 的時(shí)候,就打印 x 的值??赡苡行┡笥岩?yàn)槭苡?jì)算機(jī)二級(jí)考試的毒害,還知道一個(gè)“直到”的說(shuō)法。不過(guò),這個(gè)在 Python 里并不存在,也不是必須品。比如上面這個(gè)代碼,也可以翻譯成:打印 x 的值,直到 x <= 0。顯然這個(gè)需要腦抽一下把條件翻轉(zhuǎn)過(guò)來(lái)(是不是有點(diǎn)虛擬語(yǔ)氣的意思)。

鑒于小白目前的學(xué)習(xí)進(jìn)度,了解這些說(shuō)法暫時(shí)夠用。以后學(xué)習(xí)了更多的內(nèi)容,再來(lái)總結(jié)吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,235評(píng)論 0 38
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,716評(píng)論 25 709
  • 今天,有一個(gè)陌生的朋友通過(guò)電話要安利產(chǎn)品,她告訴了我地址。 我聽(tīng)見(jiàn)財(cái)政局幾個(gè)字就明白了,說(shuō):“我知道了?!?車(chē)到小...
    了凡耕讀閱讀 260評(píng)論 0 3
  • 握不到你的手, 但感覺(jué)到你的溫柔。 看不到你的臉, 但能想起你的笑容。 想見(jiàn)你, 卻是在夢(mèng)里。 想說(shuō)愛(ài)你, 卻只能...
    名字什么的最煩了閱讀 166評(píng)論 0 0

友情鏈接更多精彩內(nèi)容