為什麼人人都要學程式設計
如果你對《猩球崛起》這部電影印象深刻,你一定不會忘記黑猩猩凱撒是如何一步一步從猩猩變成和人類相似,甚至智力超越大部分人類的智慧生物。其中人類是如何判斷出猩猩的智力達到和人類相似的水平呢?那就是漢諾塔的遊戲,如果在一段時間內,可以達到了 15 步就完成遊戲,那麼就認為猩猩的智力已經達到人類的水平。
為什麼這樣判斷呢?因為對於動物來說,人與之最大的不同在於“人懂得思考”,會思考的生物意味著具備了“智慧”。
還有一個故事曾經引起許多人討論:中國的孩子擅長數學,尤其是心算,大部分國外的同年齡層孩子則連簡單的計算都要使用計算器。能否說中國的孩子真的比較厲害呢?這個故事最後提出了一個有趣的事實:大部分中國的孩子雖然數學很厲害,但創新能力並不如國外。
且不說這個事情究竟是什麼原因。至少讓我想起自己小時候的一件事:讀書時期,我非常鄙視使用計算器的人,儘可能地打草稿筆算和心算。當年覺得自己算數太厲害,但今天看來,卻是頗有傻呆萌的屬性。條條大路通羅馬,但總是會有最佳的一條路,而這條路並不是不假思索走出來的,是先經過完善的思考才能選出最佳的決策。
我的表弟現在正在死背九九乘法表,但總是記不住,我問他,你知道九九乘法的意思嗎?他回答:11 得1,12 得……99 得 81。很顯然,他並不真正理解乘法表的意義。我甚至想說基礎教育的教師太失職,但這不是今天想說的觀點。從教學角度來看,如果做成一個金字塔圖或者樹形圖,或者運用更為簡單得故事,可能小孩子會更理解九九乘法表的意思。
“理解”和“思考”是至關重要的。此外,不得不吐槽一句,九九乘法表不過是古人的算數口訣,在計算機盛行的今天,這個乘法表的價值除了啟蒙,意義不大。
所以人在從小到大的認知過程中其實很容易遇到一些學習的誤區,比如重視下苦功,而忽視思維的培養,這是非常奇怪的一件事情。但我身邊有一群人卻與之相反,他們“懶得要命”,不願下苦功,怎麼方便怎麼來;但他們又非常謹慎,邏輯嚴謹,這就是一群聰明的程式設計師。
請注意我用了“懶得要命”這樣的形容詞,其實我想表達的是“效率”。對於人來說,可以最快地提高效率,關鍵因素之一就是使用工具。程式設計就是這樣的工具,但程式設計的問題在於,任何程式都是基於人的思考。
凱撒變成智慧生物在於思考,不同孩子的創新能力在於思考。思考的重要性,不需要我多闡述,但大部分時候,人類其實是懶得去思考問題的,甚至是缺乏有效的思考方式去解決問題——而程式設計是培養思考方式最好的方式之一。因此,我說:人人都要學程式設計。
程式設計本身是人腦思維方式的對映。如果沒有經過專業訓練的人,大部分時候很難發現自己的思維缺陷和問題。如果學習程式設計,則可以有效地提高自己思維的完整性和邏輯性,這種思維方式的培養,是非常立杆見影的。大部分高校都會開設邏輯學的課程,但傳統的教育方式過於文字化,而不是通過實踐去培養。程式設計本身就是這樣一個培養思維的方式,甚至可以看成是一個有趣的大腦遊戲,更容易幫助人掌握邏輯思考的能力。
阿基米德曾經說過,給我一個支點,我可以蹺起地球。程式設計對於大部分人來說,就是這樣一個強大的支點。隨著網際網路不斷地深入人心,大部分人都看到了網際網路的力量。這種力量並非不可掌握。如果你還沉浸在媒體大肆宣傳的 9 歲少年自主開發出了一款 iOS 遊戲並實現盈利,那麼請不要驚訝,而是嘗試去學習程式設計。相信 6 個月後你也可以做到。
就算你不想學程式設計,覺得自己不夠聰明,不適合學習也沒關係。至少要懂得最基礎的程式設計原理。正如多年之前許多人都不知道開車是一項多麼容易的事情,大部分人總是這樣告訴自己:“我學不會開車”。但隨著經濟發展,汽車作為一項貼近生活的產品逐漸成為人人必備。當這個時候到來,你可以不懂開車,但一定要了解交通規則。
除了功利的目的之外,其實我更想談談程式設計帶來的樂趣。
知名積極心理學家米哈里在 TED 曾提到這樣一個有趣的想法:人的幸福感從哪兒獲得?大部分時候,人的幸福感其實源自一種滿足,而這種滿足其實來自一種叫做“心流”的體驗。何謂心流?就是當你全程專注到一個目標上,享受在專注做事情不斷帶來的滿足和激情,這會讓人感受到做事情的樂趣——這種樂趣也帶來高效的工作效率。
程式設計是我經歷過最容易讓人陷入“心流體驗”的事情。我曾經茶飯不思,只為了思考一段程式碼為什麼沒有執行成功。當經過多次思考和嘗試,最後解決問題時,內心有極強的滿足感。這真的是一種非常棒的體驗。
程式設計還是一個非常高效的,用於實現想法的工具,對於小孩子來說,樂高是他們塑造世界的玩具;對於成人來說,程式設計其實就是一個更加具備擴充性的“樂高”。比如我的朋友劉嘉俊就寫了一個“天使與魔鬼”的小遊戲,真酷!感興趣的朋友可以看看他寫的《實踐出真知:零基礎小白學程式設計做遊戲的 14 周曆程》。
作為一名產品經理,我日常最多的時候都是在處理文件,這個事情非常讓人頭疼。相信大部分坐在辦公室,需要通過電腦辦公的文職人員也有這樣的煩惱。如果你略懂程式設計,就可以學習 Git,實現有效的文件管理——比如我在寫書的過程中,通過 Markdown 和 Github,進行寫書和存檔的活動,不僅可以看到每一次的修改,還可以避免誤刪、遺失文件等意外。
隨著計算機,我或許應該稱之為具備高效能運算能力的裝置,不斷地影響到人的生活和工作,瞭解網際網路並可以通過程式設計加入到這個“新潮”的活動中,是一件值得人思考的事情。比如工業化時代,人被機器取代,過幾年,人是不是會被機器人取代?避免這種“逆襲”的途徑之一就是了解程式設計,學習程式設計,成為思考者,而不是純粹的執行者。
此外,因為懂得程式設計,提高了工作和生活的效率,解放了大腦,其實也是一種“幸福感”。
人人都應該學程式設計。當你掌握了這個工具,至少你擁有了一把鑰匙。這把鑰匙可以開啟一扇通過“自由”“平等”“高效”的大門。我相信,凱撒如果學會了程式設計,那真真切切地有可能改變世界,成為真正的智慧生物,而猩球崛起的第二部絕對不是那樣的結局。
相關文章
- UI設計要做什麼,UI設計培訓都要學什麼UI
- 為什麼你學不好程式設計程式設計
- 為什麼很多大學生認為程式設計很難?入門程式設計怎麼學?程式設計
- 為什麼程式設計師在學習程式設計的時候什麼都記不住?程式設計師
- 雲端計算都要學什麼?學好Linux需要做些什麼?Linux
- 為什麼程式設計師一定要學Linux程式設計師Linux
- 為什麼你還是學不會程式設計程式設計
- 【Java併發程式設計】一、為什麼需要學習併發程式設計?Java程式設計
- 學習程式設計先學什麼程式設計
- 為什麼沒有基礎學不好python程式設計?Python程式設計
- Android程式設計師為什麼要去學Java後臺Android程式設計師Java
- 程式設計入門學什麼?程式設計
- 為什麼要學Python 程式設計?(附Python學習路線)Python程式設計
- 什麼是程式設計?大道之行也,“程式設計”為公程式設計
- 程式設計師,為什麼如此迷茫?程式設計師
- 程式設計沒點為什麼,生活就是十萬個為什麼程式設計
- 人人學Python,為什麼就業拿高薪的那麼少?Python就業高薪
- 程式設計為什麼不用中文?未來用中文程式設計可能麼?程式設計
- 好程式設計師:web前端解答為什麼要學JavaScript程式設計師Web前端JavaScript
- 為什麼Python程式設計師需要學習Linux系統?Python程式設計師Linux
- 2020年為什麼建議你繼續學程式設計?程式設計
- 女程式設計師,為什麼比男程式設計師少???程式設計師
- 程式設計師你為什麼這麼累?程式設計師
- 程式設計我們學到了什麼?程式設計
- 程式設計入門先學什麼?程式設計
- 為什麼 JavaScript 需要非同步程式設計JavaScript非同步程式設計
- 1024為什麼是程式設計師日程式設計師
- 為什麼要成為「無敵」程式設計師?程式設計師
- 為什麼成為一名程式設計師?程式設計師
- 轉行學程式設計推薦學什麼?程式設計
- 程式設計師為什麼要持續學習(升級版)程式設計師
- 企業為什麼都要申辦資質?
- 網際網路巨頭企業為什麼都要做小程式?
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- UI設計是什麼_UI設計學什麼?UI
- 新手程式設計入門先學什麼?程式設計
- 開啟全民程式設計時代!Python小學生都要學的程式語言!程式設計Python
- 人人都能學會的python程式設計教程6:列表(list)Python程式設計
- 人人都能學會的python程式設計教程7:元祖(tuple)Python程式設計