來源:https://www.zhihu.com/answer/141334678
小編推薦一個學C語言/C++的學習裙【 712,284,705】,不管你是小白仍是進階者,是想轉行仍是想入行均可以來了解一塊兒進步一塊兒學習!裙內有開發工具,不少乾貨和技術資料分享!程序員
前言:編程
知乎上有個問題:編程到底難在哪裏?知乎網友 DJ Hitori 的回答獲贊無數。安全
這篇回答並非講述在生活中程序員如何買蘋果,而是以買蘋果爲例說明程序員如何解決問題。工具
程序員須要對問題進行透徹的分析,理清其涉及的全部細節,預測可能發生的全部意外與非意外的狀況,列出解決方案的全部步驟,以及對解決方案進行儘可能全面的測試。學習
而這些正是編程難的地方。任何一點遺漏都會成爲bug,輕則致使捱罵,重則致使經濟損失甚至危害安全。開發工具
回答原文:測試
普通人:spa
我今天要買一斤蘋果。設計
程序員:3d
我今天要買一斤蘋果。
由於我只喜歡紅富士蘋果,因此我只買紅富士蘋果。
我能接受的最高價格是10元/斤。
正常狀況下一斤蘋果用一個袋子能裝下,可是爲防萬一,我會帶兩個袋子。
我知道附近的3家水果店,因此我會依次訪問這3家水果店。
根據上述條件,我設計出如下的買蘋果的流程:
這個流程怎麼樣?我來設計一些測試樣例,測試一下這個流程。
測試發現一個問題:若是水果店0和水果店1都有紅富士蘋果而且價格都低於10元/斤,並且水果店1的價格比水果店0更低,那麼我但願買水果店1的蘋果,但我設計的流程會讓我買水果店0的蘋果。
爲了解決這個問題,我應該先詢問全部水果店的價格,而後去價格最低的那一家買蘋果。
通過修改,我從新設計出如下的買蘋果的流程:
如今這個流程是否是完美了呢?不是,我還能發現不少問題。
若是3家水果店都有紅富士蘋果但都不到一斤,可是三家店加起來能達到一斤,那麼我不該該結束流程回家,而是應該把三家店的紅富士蘋果都買下來。
若是我向水果店詢問價格的時候這家店還有紅富士蘋果,但我詢問完全部水果店的價格後這家店的紅富士蘋果賣完了,那麼個人流程會讓我試圖處理不存在的紅富士蘋果。
我走路的過程當中可能會遇到突發事件,好比發現了新的水果店,好比袋子破掉了蘋果掉一地,對於這些狀況個人流程都沒法進行處理。
啊問題太多了我懶得再改流程了。我仍是去X寶買吧。
那麼接下來我要設計一個在X寶買紅富士蘋果的流程……
看了這個回答,你有什麼感想呢?
學習編程並不單單只是學習編程技術,還有編程思惟。
蘋果公司首席執行官蒂姆·庫克(Tim Cook)給出了這樣一條建議:「編程應該成爲全部公立學校的必修課」奧巴馬爲了號召美國吃瓜羣衆讓娃學編程,還親自寫了一段代碼,並表示向美國學校資助40億美圓用於計算機科學教育。