這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

在這個互聯網時代,我們出門購物、拍照、打電話、瀏覽信息,只需要帶上一部智能手機就可以了。如果在20年前,要實現這些功能,需要帶一大堆東西。如今,我們口袋裡的這臺計算機,和50年前送宇航員上月球的那臺計算機相比,功能更強大,體積更小巧。

計算機為什麼功能強大,能讀懂人類的語言?直到我看了《寫給所有人的編程思維》這本書,解答了心中的疑惑,明白了計算機的工作原理。這一切能都離不開程序員的編程設計,說到編程,人們總是想到程序員坐在電腦面前,敲擊著一長串神祕的代碼。其實,編程體現的是人類的智慧。

在《寫給所有人的編程思維》這本書中,闡述了計算機的歷史和二進制工作原理,以及如何創建編程思維。計算機的編程需要邏輯、推理和數學。編程思維可以提升思維能力,創造性地解決問題。

這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

學習編程思維並不是要掌握編碼技巧,而是學習一種解決問題的思維方法。本書有四章內容:學會編程思維;解決問題;學習編程語言;繼續努力。

本書的作者吉姆·克里斯蒂安,是英國著名的科技教育專家,編程怪才,曾獲得Dr.Dobb’s程序設計卓越獎。

我們來看計算機是怎樣讀懂人類語言的,我們如何用編程思維解決問題。

一、 編程與計算機。

計算機的特徵。

計算機是指能夠接收、轉換、存儲信息,再用設定的形式將信息輸出的電子設備。

計算機的形式多種多樣:手機、平板電腦、臺式計算機、筆記本。雖然它們形狀各異,但內部的結構都大同小異,都有:主板、網絡、輸入和輸出設備、外存儲器、隨機存儲器、微處理器。

微處理器就是人們常說的中央處理器或CPU,是計算機的大腦,負責處理“思維”工作。

在微處理器的內部,有成千上萬個開關等待電信號的到來,電信號通過通道和閘門的開關,以二進制數字的形式生成。微處理器的核越多,每秒能夠運行的指令也就越多。

編程就是將人的想法、思維,翻譯成計算機能讀懂的二進制數字語言,轉換成計算機要執行的動作。

這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

計算機的語言--二進制。

計算機中所有的輸入和輸出,都是由無數個0和1組成的二進制數字經過編碼、解碼,轉換成計算機能識別的代碼實現的。

二進制是1679年,由德國天才大師萊布尼茨研發出來的。二進制是一種計數方式,只用到兩個數字0和1,因為計算機只能識別0和1組成的代碼。

0和1這兩個數字掌管計算機內部晶體管的開關,1表示開,0表示關。人們操作計數機,就是通過控制計算機內部晶體管的開關,引導電流進入正確的方向,實現程序運行的。

我們工作、生活中常用的算數是十進制,就是逢10進1。計算機的二進制規則是逢2進11和0就是計算機能懂的語言,表示開和關,是和否,真和假。

在二進制中,數字1,用1表示;數字2用10;數字3用11;數字4用100;數字8用1000。

如果用十進制,兩隻手只能數到10,但如果用二進制,一隻手就能數到31。

將拳頭握緊,表示數字0;

大拇指代表數字1;

食指代表數字2;

中指代表數字4;

無名指代表數字8;

小拇指代表數字16;

這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

如果用兩隻手,就能數到1023,因為在二進制中,後一根手指的數值是前一根手指的兩倍。第1隻手的小拇指表示16,另一隻手的大拇指就表示32,食指就代表64,中指代表128,無名指代表256;小指代表512。

這個遊戲很好玩,能夠鍛鍊創新思維和邏輯思維

二進制數值還可以用來表示英文的26個字母,A用數字1;B用10;C用11;……

如果這組信息:1000 101 1100 1100 1111 拼寫出來就是“你好”,這樣就將人類語言轉化成計算機能懂的語言。

二、 編程語言。

計算機語言講究語法和語境,一個逗號,一個字母就能改變整個句子的意思,可以說,差之毫釐,失之千里。

計算機的編程語言經歷了機器語言、彙編語言、高級語言三個階段,世界上的編程語言有100多種,但是常用的只有10-15種,這裡介紹幾種編程語言。

算法

算法就是為了完成某項任務,按照設定的順序執行的一系列明確的指令。算法中指令越具體、越明確,指令運行時出錯的概率就越小。

比如我們讓一個叫小智的機器人來整理床鋪。

我:小智準備好了嗎?

小智:準備好了。

我:小智整理床鋪。

小智:……(只是坐在那裡發懵)。

這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

因為小智不明白“整理床鋪”的做法,我們整理的要求是:把羽絨被、毯子、枕頭收拾好,所以我們下達的指令要具體、清晰。

1. 將羽絨被平整地鋪在床上。

2. 將毯子平整地鋪在羽絨被上。

3. 將枕頭放在毯子的上面。

算法就像做菜使用的菜譜,是計算機要執行的命令,我們來看一下,給機器人小智發出指令,做一個加奶酪的三明治。

1. 拿起一片面包。

2. 將麵包放在廚房的操作檯上。

3. 把黃油盒的蓋子打開。

4. 把蓋子放下。

5. 握住刀柄拿起刮取黃油的小刀。

6. 一隻手握住小刀的手柄,讓刀口向外。

7. 一小刀並在黃油上刮取三秒鐘。

8. 拿起小刀。

9. 使小刀靠近麵包片。

10. 放低小的在麵包上塗抹三秒鐘,一共塗抹兩次。

11. 把小刀放在操作檯上。

12. 拿起一片奶酪。

13. 把奶酪片放在塗有黃油的麵包上。

14. 再拿起一片面包。

15. 將麵包片覆蓋在奶酪和有黃油的麵包片上。

你看,在上面的步驟中,描述很具體,講到了如何握刀,刀口的方向,其實,還可以具體到小刀的角度和抹黃油的速度。

在7-10步中,指令包括了塗抹黃油的時間,因為小智不知道塗抹黃油多少才算夠了,所以,程序員做出估算,大概需要三秒時間。

循環

編程語言的設計要做到便捷、高效,在算法編寫時,要做很多具體的指令,不僅繁瑣,而且還有重複。為了避免重複的指令,在編程中,可以用循環來處理一些基礎的指令,讓程序變得簡單一些。

比如,我們讓機器人小智走過來10步,我們要說10次“向我走1步”,這樣下達的指令不僅繁瑣,還容易在次數上出錯,解決方法就是用循環:“向我走10步。”

循環就是執行重複的指令,直到過程結束的一種結構。循環分為兩種:計數循環和條件循環。

計數循環是通過次數控制的循環,叫for循環。for循環會一直重複指令,不管結果如何。

條件循環式通過條件來控制循環次數,就是While循環。

在算法中運用循環,修改一個語句就能完成雙倍的編程工作,達到事半功倍的效果。

比如,我們在三明治的程序指令中,可以運用循環來提高效率。在第10步之後,多加一條指令:重複以上1-10步。這樣,機器人就會重複工作,但是這樣會出現無限循環,機器人會按照指令工作,一直在麵包片上塗抹黃油,直到麵包片用完,最後程序崩潰。

為了避免這一缺陷,我們要對程序進行修補,將步驟11修改為:重複以上1-10步,直到給兩片面包片塗完黃油為止。這樣增加了一個特定的條件,就使機器人的操作更加完美。

這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

變量

編程中經常會遇到變量,變量就像一個貼著標籤的盒子,裡面裝有變量名和變量值。

電子遊戲中經常遇到變量,比如,遊戲角色還剩多少條命,命的次數是變量。

我們人體也有變量,比如:頭髮的長短,身高、體重的變化,年齡的增長。

下面我們來做一個猜年齡遊戲。

1. 讓你的朋友在紙上寫下他的年齡。

2. 將這個數字乘以2。

3. 再加上1。

4. 然後乘以5。

5. 再加上5。

6. 再乘以10。

7. 再減掉100。

8. 最後再劃掉末尾兩位數。

在這個遊戲中,程序中的年齡適用於任何年齡的人,人的年齡就是變量名,年齡的數值是變量值,可以編寫出:((年齡×2+1)×5+5)×10-100==年齡

經過推算,左邊的公式最後的結果是100倍年齡,劃掉最後兩個00,自然就是年齡了,這個遊戲玩的就是數學魔術。

條件語句

條件語句是計算機根據給定的信息做出選擇的語句。

生活中,我們每天都要根據條件做出選擇。比如:如果人行道信號燈是紅色,那麼我們就要等待綠燈亮,否則就可能被車撞倒。

下面我們來做一道和條件語句相關的題:假如你去找朋友約翰還錢,結果發現,約翰、詹姆斯、威廉是一模一樣的三胞胎,有人告訴你,約翰、詹姆斯總是說謊話,只有威廉說真話,你只能問一句話,確認此人是不是約翰,你會怎麼問?

正確答案是:“你是詹姆斯嗎?”因為威廉說真話:“不是。”詹姆斯說謊話:“不是。”只有約翰說謊話,是唯一一個回答“是”的人。

調試

調試這一術語起源於20世紀40年代,是美國海軍少將格雷斯·赫柏提出的。她在哈佛大學為計算機編寫程序時發現了一隻真正的蟲子(bug)鑽進了計算機,使計算機無法正常運行,調試(debugging除去蟲子)由此而來。

調試就是仔細檢查編寫過程、算法、流程圖,排除並修復使程序無法正常運行的問題或錯誤。

在編寫程序的過程中,計算機只是執行接受的指令,不會像人類一樣思考,所以,在程序編寫完成後,要花很多時間在代碼的調試上。

調試常用的方法是:尋找bug(程序錯誤);給代碼加註釋;小黃鴨調試法。

小黃鴨調試法看似很笨,卻很有效,就是在電腦旁放一個小黃鴨,然後對一無所知的小黃鴨解釋程序中的所有細節。

這個方法的奧妙是,程序員給不懂編程的人解釋代碼如何運行時,必須非常詳細的講解代碼運行的細節,程序員就會發現到程序中的錯誤,自己解決問題。

這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

三、 用編程思維解決問題。

編程思維包括理性推理、邏輯思維和數學運算,學習編程思維能夠創造性地解決問題、表達思想。

編程思維有四個部分:問題分解;模式識別;抽象思維;算法設計。

問題分解

比如,我們把電影看做一個需要解決的大問題,導演、演員、攝影師等工作人員就是問題的組成部分,所有這些組成部分共同協作才能完成一部電影。

模式識別

比如,我們要在一些網站上登錄,會被要求輸入驗證碼,這就是模式識別,目的是為了防止其他人偽裝成用戶開啟別的功能。

抽象思維

使用抽象思維時,要拋開那些與問題無關的信息。

比如,你星期天下午兩點要去打球,家離球場有5.2公里,你上午要給花澆水,拖地板,中午要去媽媽家吃飯,估計一點鐘能吃完,媽媽家距離球場有3.5公里,那麼在一點到兩點的時間內,要走多遠的路?

在所有的信息中澆花、拖地都與去球場無關,因為媽媽家離球場的距離更近,唯一的相關信息只有一個:媽媽家離球場有3.5公里。

算法設計

你一定聽說過數學天才高斯的故事。1785年,高斯的老師給學生出了一道題,把1-100的數字全部加起來,老師本來想多佔用一些課堂時間,沒想到令老師吃驚的是,只有8歲的高斯很快給出了答案:5050。

在那個年代並沒有計算機,高斯也不是從頭到尾將數字一個個相加。

我們來看高斯是怎樣用編程思維來解決問題。

這本書告訴你,計算機為何能讀懂人類語言,編程思維讓你更聰明

首先是問題分解,他將一個大問題分解成小問題,找出每組數字的規律性,就是每對首尾數字相加,得數相同。

其次是形成自己的模式識別,可打亂順序,只要把所有數字相加就可以,1+100=101,2+99=101……,有50組首尾相加等於101的數字。

再次是採用抽象思維,略去了不必要的算數步驟,沒必要將首尾數字依次相加到最後一組,

最後是算法設計,是用乘法進行運算:50×101=5050。

無論計算機的功能多麼強大,也是人類賦予的,真正強大的還是人的大腦。

隨著互聯網的發展,人們的生活已經離不開計算機,比如:用手機打電話、聽歌、拍照;用電腦發郵件、瀏覽財經信息;在超市買東西結賬,只需掃碼商品,計算機會自動結算金額,核對賬單。

《寫給所有人的編程思維》這本書告訴我們,編程是人與計算機之間的橋樑,人類通過編程創造了更加美好的世界。我們可以不學編程,但要學習編程思維。

編程思維是我們解決問題的元技能,與我們的生活息息相關,工作、學習,甚至家務勞動,都離不開編程思維的邏輯能力和創造力,學習編程思維就是學會思考。

相關推薦

推薦中...