朋友問(wèn)我,程序員和非程序員的思維模式有什么區(qū)別?

英文 | https://javascript.plainenglish.io/what-is-the-difference-in-thinking-model-between-programmers-and-normal-persons-8ff8e2e9e94b
翻譯 | 楊小愛(ài)
首先,我們必須明確我們的需求,例如:
我打算買(mǎi)兩斤蘋(píng)果。
我能接受的價(jià)格是每斤低于 1.5 美元。
那么,我們可以設(shè)計(jì)如下流程:

程序員需要以嚴(yán)謹(jǐn)和準(zhǔn)確的方式考慮問(wèn)題。
在上述過(guò)程中,我們需要記錄周邊的水果店,所以需要定義變量 friutShops。
我們需要依次訪問(wèn)不同的水果店,這叫做遍歷。
然后我們需要判斷邊界條件,比如水果店不開(kāi)門(mén)怎么辦?如果蘋(píng)果的價(jià)格超出我的預(yù)期怎么辦?
我們?cè)谫I(mǎi)蘋(píng)果時(shí),需要不斷地把蘋(píng)果放在袋子里,直到超過(guò)兩斤,這個(gè)過(guò)程叫循環(huán)。
這些是程序員考慮問(wèn)題時(shí)最基本的步驟。
如果我們用代碼來(lái)表示這個(gè)過(guò)程,可能是這樣的:
Query surrounding fruit shops to get fruitShops;for(fruitShop in fruitShops){if(fruitShop.isOpen == false){break;}if(fruitShop.apple.price > 1.5){Ask the shop owner whether he is willing to lower the price;if(the shop owner does not agree){break;} else {fruitShop.apple.price = newPrice;}}Take a bag;Start picking apples;while(the weight of the apples in the bag is less than two pounds){Pick an apple from the pile of apples;Put the apple in the bag;}Calculate the total price of apples in the bag;Total price = (weight of apples in the bag) * (unit price of apples);Pay money;Leave the shop;return;}Take apples home;
朋友聽(tīng)了我的描述后說(shuō):嗯,你解釋的很好,看起來(lái)很簡(jiǎn)單。
然后,我接著說(shuō):過(guò)程其實(shí)并不復(fù)雜,但是在實(shí)際開(kāi)發(fā)中,我們要考慮的東西很多。
例如,在上述情況下,只要我們找到一家蘋(píng)果價(jià)格低于 1.5 美元/斤的商店,我們就會(huì)立即購(gòu)買(mǎi)蘋(píng)果。但是如果現(xiàn)在,我們想要找到一家蘋(píng)果最便宜的水果,我們應(yīng)該做什么?
朋友說(shuō):那很簡(jiǎn)單呀,直接去每個(gè)水果店詢問(wèn)價(jià)格,然后我們就可以找到蘋(píng)果價(jià)格最低的水果店了。
我說(shuō):可是我們很懶,不想走太多路?,F(xiàn)在我們周?chē)?0家水果店,分布在不同的位置。如果我們想遍歷這 10 家水果店的同時(shí)還要盡量少走路,那我們?nèi)绾伟才抨P(guān)顧水果的順序,并且盡量減少總路程?
想了半天,朋友回答:嗯,這個(gè)問(wèn)題聽(tīng)起來(lái)很復(fù)雜,我不知道。
我說(shuō):沒(méi)關(guān)系,這實(shí)際上是編程中的經(jīng)典算法問(wèn)題,現(xiàn)在你不會(huì)想到答案是正常的。程序員在編程開(kāi)發(fā)時(shí),不僅要正確解決問(wèn)題,還要盡可能高效地解決問(wèn)題。在開(kāi)發(fā)過(guò)程中,我們正在逐一解決類(lèi)似的問(wèn)題。
然后,我接著繼續(xù)說(shuō):而當(dāng)我們選擇蘋(píng)果的時(shí)候,我們都希望買(mǎi)更大更紅的蘋(píng)果?,F(xiàn)在你需要從一堆蘋(píng)果中選擇 N 個(gè)蘋(píng)果。你需要確保它們是最好的蘋(píng)果,并且它們的質(zhì)量總和剛剛超過(guò) 2 斤,你該如何選擇?
朋友:嗯,還是有點(diǎn)難。
我說(shuō):有些人會(huì)先把蘋(píng)果堆按質(zhì)量分揀,然后再挑選最好的蘋(píng)果,但如何快速分揀蘋(píng)果,這又是另外一個(gè)問(wèn)題。
朋友:好了,別說(shuō)了,我腦子有點(diǎn)暈,看來(lái)我還是不適合做程序員。
我說(shuō):哈哈,沒(méi)關(guān)系,我現(xiàn)在有點(diǎn)餓了,我們先去買(mǎi)些蘋(píng)果充饑吧,^_^^_^。
學(xué)習(xí)更多技能
請(qǐng)點(diǎn)擊下方公眾號(hào)
![]()

