中國人常說「授之以魚不如授之以漁」。若是說教授編程是授之以魚,那麼教授計算機科學就是授之以漁。爲何說學習計算機科學比學會編程要重要得多?來聽聽Yevgeniy Brikman的解釋。程序員
現現在,彷佛每一個人都在學習編程:Bill Gates、Mark Zuckerberg和Chris Bosh這些名人在Code.org網站上告訴人們每一個人都擁有編程的能力;CoderDojo項目在世界各地大張旗鼓;英國已經把編程做爲小學官方課程。算法
不過,我認爲這樣有點誤入歧途了。但請不要誤會——我也確實認爲代碼可以讓世界變得更美好——但編程自己並非咱們的目的。計算機和程序只是工具,它們是咱們通向終點的橋樑。數據庫
咱們真正的目標應該是教會人們如何思考。換句話說,咱們應該教人們計算機科學,而不僅是編程。在這篇文章裏,我將會解釋這二者之間的區別,以及爲何在這二者當中選擇正確的一方對於邁向成功來講如此重要。編程
咱們不妨先問本身一個問題:爲何咱們要關心編程或計算機科學?瀏覽器
或許你正在使用Chrome或Firefox閱讀這篇文章,這些瀏覽器可能運行在Windows或macOS上,而你可能正在使用筆記本或臺式機。你今天可能花了一些時間閱讀電子郵件、查看朋友圈的狀態,或者在視頻網站上看了一些視頻。咱們的生活在很大程度上依賴了計算機:咱們的醫療記錄保存在數據庫裏;咱們的簡歷可能放在了LinkedIn上;咱們使用Google或Facebook爲產品作宣傳;咱們在Amazon上購買這些產品;咱們直接在網絡上進行報稅;咱們使用網上電子銀行;咱們甚至開始涉足電子貨幣。安全
如今將你的視線從電腦上移開:在你的口袋裏或者桌角的某個地方可能放着你的手機,它裝有GPS、攝像頭、觸摸屏和大量的應用程序。在你的客廳,可能有LCD電視機、DVR、DVD播放機、Apple TV、Xbox或PlayStation。這些設備上的視頻、音樂和遊戲都是由計算機圖形和數字音頻組成的。微信
當你通過你的汽車時,你是否想過,現代汽車是使用軟件設計並在滿布機器人和計算機的工廠裏生產出來的?你開着車,使用Google地圖導航,在Yelp上查找吃飯的地方或在TripAdvisor上查找休息的地方。在你的頭頂上方有自動駕駛的飛機飛過,飛機裏有Wifi和娛樂系統,能夠與其餘飛機、交通指揮中心和飛機廠商聯繫。再往上,衛星和太空站正圍繞着地球繞圈,它們拍照、預報天氣、轉發電話信號。網絡
軟件正在吞噬着這個世界,但這只不過是個開始。在你意識到這一點以前,你可能已經穿上了智能可穿戴設備、使用電腦來鎖門、使用機器人來送貨或清理房間、開發本身的電子設備、有本身的製造車間、生活在虛擬現實裏、乘坐自動駕駛的汽車,甚至飛向太空。數據結構
上述的這些科技都是由軟件驅動的,咱們的生活被代碼所包圍,而代碼的數量在將來只會不斷增長。機器學習
不過,雖然說科技無處不在,但這並不意味着你在學校裏就必定要學習這些技術。比方說,咱們都須要乘坐飛機,但即便是K12也並無把得到飛行員駕照看成課程的一部分。
相反,學會使用那些可以幫助你理解飛行原理的工具倒是課程的一部分:
經過學習物理和數學,你瞭解了重力、做用力、壓力、速度、摩擦力和浮力。
經過學習生物,你明白了人體在缺氧和寒冷的高空中會發生什麼。
經過學習歷史,你知道了飛機是怎樣被髮明和製造出來的,以及飛機在旅行、商務和戰爭中所扮演的角色。
中學畢業以後,你就知道飛機是什麼東西,知道飛機是如何飛行的,以及如何安全地搭乘飛機。通常性的課程,如物理、數學、生物和歷史,它們教會你如何思考各個領域的問題,包括飛機在內。相反,有些課程只是教會你如何使用一種工具,好比如何駕駛某種型號的飛機。
相似的,咱們應該專一於教授計算機科學,而不只僅是編程:前者可以教會咱們通常性的思考方式,然後者只是一種特定的工具。
計算機科學就是研究計算:如何表示和處理信息。
解決問題:你將學會各類算法策略,好比分而治之法、遞歸、探索法、貪婪搜索和隨機算法,它們能夠幫你分解和解決任何一種問題。
邏輯:你開始使用更準確和正式的方式進行思考,好比抽象、布爾邏輯、數字理論和集合理論,你所以可以以一種嚴謹的方式來解決問題。
數據:你接觸到信息理論,想要了解信息是什麼東西,你該如何表示它們,以及如何對這個真實的世界進行建模。
系統:你該如何設計和實現複雜的系統來知足一系列的需求?系統工程幾乎已經成爲各個業務領域的核心議題。
思考:瞭解人類思惟的最好途徑就是嘗試複製它。人工智能、機器學習、計算機視覺和天然語言處理不只僅是計算機科學的前沿技術,它們也涉及到了生物學、物理學、心理學和數學。
上述的清單並無說起編程或者程序,由於它們只是計算工具:它們都不是計算機科學。
在計算方面,咱們更多地依賴另外一個工具:咱們的大腦!計算機科學的目的是教會咱們的大腦進行創新性、通常性和普遍性的思考。隨着科技的日益滲透,新的思考方式變得和物理、數學、生物和歷史同樣重要。
也就是說,只進行單獨的思考是不夠的:咱們須要知道如何應用咱們的思考。在物理學裏,咱們使用天平、棱鏡和磁鐵作實驗;在生物學裏,咱們使用試管、植物和有蓋培養皿;在計算機科學裏,咱們學習編程。
編程,或者說寫代碼,是指你發出指令讓計算機執行一些操做。若是你以前歷來沒有寫過代碼,那麼你可能習慣了使用已有的應用程序來與計算機發生交互。實際上,這些應用程序是由代碼組成的,這些代碼告訴計算機如何顯示應用、在哪裏存儲數據、從哪裏獲取數據,以及如何對用戶的鼠標點擊作出響應。
編程是基於上述的計算機科學原則進行的。計算機科學的概念——邏輯、算法、數據和系統工程——能夠用於構建全部的事物,從Web瀏覽器到飛機的自動駕駛軟件。編程涉及到數學和數據結構,同時也是一項具備創造性的活動:每敲出一行代碼,你的想法就又向現實邁近了一步。
將編程做爲計算機科學的一部分帶來了不少好處。
DIY:若是你會編程,你就能夠本身開發軟件。你能夠從簡單的開始:寫一個腳原本重命名照片或寫一個Excel公式來計算稅金。而後更進一步:搭建一個網站;爲你的公司開發一個移動應用;開發一款能夠與你的朋友們一塊兒玩的遊戲。
問題診斷:在開發了幾款應用以後,就能夠輕鬆地理解其餘的應用。在打敗了對計算機的恐懼以後,你將成爲技術大神。技術遍及咱們的生活,知道如何操縱它們變得與知道如何使用它們同樣重要。
職業生涯:學習計算機科學的目的並非爲了成爲專業的程序員。咱們每一個人在學校裏都學習數學、物理和化學,但並非每一個人都成爲專業的數學家、物理學家或化學家。不過,若是你有這方面的熱情,你會發現軟件工程是一份高評價、高收入、增加快速的工做。
另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!
C語言C++編程學習交流圈子,QQ羣【757874045點擊進入】微信公衆號:C語言編程學習基地
分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
編程學習軟件
編程學習視頻