為什么說學(xué)計(jì)算機(jī)科學(xué)比學(xué)編程重要得多?計(jì)算機(jī)專業(yè)學(xué)生看過來!
中國人常說“授之以魚不如授之以漁”。如果說教授編程是授之以魚,那么教授計(jì)算機(jī)科學(xué)就是授之以漁。為什么說學(xué)習(xí)計(jì)算機(jī)科學(xué)比學(xué)會(huì)編程要重要得多?來聽聽Yevgeniy Brikman的解釋。

學(xué)會(huì)思考,而不只是編程
現(xiàn)如今,似乎每個(gè)人都在學(xué)習(xí)編程:Bill Gates、Mark Zuckerberg和Chris Bosh這些名人在Code.org網(wǎng)站上告訴人們每個(gè)人都擁有編程的能力;CoderDojo項(xiàng)目在世界各地大張旗鼓;英國已經(jīng)把編程作為小學(xué)官方課程。
不過,我認(rèn)為這樣有點(diǎn)誤入歧途了。但請(qǐng)不要誤會(huì)——我也確實(shí)認(rèn)為代碼能夠讓世界變得更美好——但編程本身并不是我們的目的。計(jì)算機(jī)和程序只是工具,它們是我們通向終點(diǎn)的橋梁。
我們真正的目標(biāo)應(yīng)該是教會(huì)人們?nèi)绾嗡伎?。換句話說,我們應(yīng)該教人們計(jì)算機(jī)科學(xué),而不只是編程。在這篇文章里,我將會(huì)解釋這兩者之間的區(qū)別,以及為什么在這兩者當(dāng)中選擇正確的一方對(duì)于邁向成功來說如此重要。
我們不妨先問自己一個(gè)問題:為什么我們要關(guān)心編程或計(jì)算機(jī)科學(xué)?

歡迎來到真實(shí)的世界
或許你正在使用Chrome或Firefox閱讀這篇文章,這些瀏覽器可能運(yùn)行在Windows或macOS上,而你可能正在使用筆記本或臺(tái)式機(jī)。你今天可能花了一些時(shí)間閱讀電子郵件、查看朋友圈的狀態(tài),或者在視頻網(wǎng)站上看了一些視頻。我們的生活在很大程度上依賴了計(jì)算機(jī):我們的醫(yī)療記錄保存在數(shù)據(jù)庫里;我們的簡(jiǎn)歷可能放在了LinkedIn上;我們使用Google或Facebook為產(chǎn)品做宣傳;我們?cè)贏mazon上購買這些產(chǎn)品;我們直接在網(wǎng)絡(luò)上進(jìn)行報(bào)稅;我們使用網(wǎng)上電子銀行;我們甚至開始涉足電子貨幣。
現(xiàn)在將你的視線從電腦上移開:在你的口袋里或者桌角的某個(gè)地方可能放著你的手機(jī),它裝有GPS、攝像頭、觸摸屏和大量的應(yīng)用程序。在你的客廳,可能有LCD電視機(jī)、DVR、DVD播放機(jī)、Apple TV、Xbox或PlayStation。這些設(shè)備上的視頻、音樂和游戲都是由計(jì)算機(jī)圖形和數(shù)字音頻組成的。
當(dāng)你經(jīng)過你的汽車時(shí),你是否想過,現(xiàn)代汽車是使用軟件設(shè)計(jì)并在滿布機(jī)器人和計(jì)算機(jī)的工廠里生產(chǎn)出來的?你開著車,使用Google地圖導(dǎo)航,在Yelp上查找吃飯的地方或在TripAdvisor上查找休息的地方。在你的頭頂上方有自動(dòng)駕駛的飛機(jī)飛過,飛機(jī)里有Wifi和娛樂系統(tǒng),可以與其他飛機(jī)、交通指揮中心和飛機(jī)廠商聯(lián)系。再往上,衛(wèi)星和太空站正圍繞著地球繞圈,它們拍照、預(yù)報(bào)天氣、轉(zhuǎn)發(fā)電話信號(hào)。
軟件正在吞噬著這個(gè)世界,但這只不過是個(gè)開始。在你意識(shí)到這一點(diǎn)之前,你可能已經(jīng)穿上了智能可穿戴設(shè)備、使用電腦來鎖門、使用機(jī)器人來送貨或清理房間、開發(fā)自己的電子設(shè)備、有自己的制造車間、生活在虛擬現(xiàn)實(shí)里、乘坐自動(dòng)駕駛的汽車,甚至飛向太空。

矩陣無處不在
上述的這些科技都是由軟件驅(qū)動(dòng)的,我們的生活被代碼所包圍,而代碼的數(shù)量在未來只會(huì)不斷增加。
不過,雖說科技無處不在,但這并不意味著你在學(xué)校里就一定要學(xué)習(xí)這些技術(shù)。比方說,我們都需要乘坐飛機(jī),但即使是K12也并沒有把獲得飛行員駕照當(dāng)作課程的一部分。
相反,學(xué)會(huì)使用那些能夠幫助你理解飛行原理的工具卻是課程的一部分:
通過學(xué)習(xí)物理和數(shù)學(xué),你了解了重力、作用力、壓力、速度、摩擦力和浮力。
通過學(xué)習(xí)生物,你明白了人體在缺氧和寒冷的高空中會(huì)發(fā)生什么。
通過學(xué)習(xí)歷史,你知道了飛機(jī)是怎樣被發(fā)明和制造出來的,以及飛機(jī)在旅行、商務(wù)和戰(zhàn)爭(zhēng)中所扮演的角色。
中學(xué)畢業(yè)之后,你就知道飛機(jī)是什么東西,知道飛機(jī)是如何飛行的,以及如何安全地搭乘飛機(jī)。一般性的課程,如物理、數(shù)學(xué)、生物和歷史,它們教會(huì)你如何思考各個(gè)領(lǐng)域的問題,包括飛機(jī)在內(nèi)。相反,有些課程只是教會(huì)你如何使用一種工具,比如如何駕駛某種型號(hào)的飛機(jī)。
類似的,我們應(yīng)該專注于教授計(jì)算機(jī)科學(xué),而不僅僅是編程:前者能夠教會(huì)我們一般性的思考方式,而后者只是一種特定的工具。

什么是計(jì)算機(jī)科學(xué)?
計(jì)算機(jī)科學(xué)就是研究計(jì)算:如何表示和處理信息。
解決問題:你將學(xué)會(huì)各種算法策略,比如分而治之法、遞歸、探索法、貪婪搜索和隨機(jī)算法,它們可以幫你分解和解決任何一種問題。
邏輯:你開始使用更準(zhǔn)確和正式的方式進(jìn)行思考,比如抽象、布爾邏輯、數(shù)字理論和集合理論,你因此能夠以一種嚴(yán)謹(jǐn)?shù)姆绞絹斫鉀Q問題。
數(shù)據(jù):你接觸到信息理論,想要了解信息是什么東西,你該如何表示它們,以及如何對(duì)這個(gè)真實(shí)的世界進(jìn)行建模。
系統(tǒng):你該如何設(shè)計(jì)和實(shí)現(xiàn)復(fù)雜的系統(tǒng)來滿足一系列的需求?系統(tǒng)工程幾乎已經(jīng)成為各個(gè)業(yè)務(wù)領(lǐng)域的核心議題。
思考:了解人類思維的最好途徑就是嘗試復(fù)制它。人工智能、機(jī)器學(xué)習(xí)、計(jì)算機(jī)視覺和自然語言處理不僅僅是計(jì)算機(jī)科學(xué)的前沿技術(shù),它們也涉及到了生物學(xué)、物理學(xué)、心理學(xué)和數(shù)學(xué)。
上述的清單并沒有提及編程或者程序,因?yàn)樗鼈冎皇怯?jì)算工具:它們都不是計(jì)算機(jī)科學(xué)。
在計(jì)算方面,我們更多地依賴另一個(gè)工具:我們的大腦!計(jì)算機(jī)科學(xué)的目的是教會(huì)我們的大腦進(jìn)行創(chuàng)新性、一般性和廣泛性的思考。隨著科技的日益滲透,新的思考方式變得和物理、數(shù)學(xué)、生物和歷史一樣重要。
也就是說,只進(jìn)行單獨(dú)的思考是不夠的:我們需要知道如何應(yīng)用我們的思考。在物理學(xué)里,我們使用天平、棱鏡和磁鐵做實(shí)驗(yàn);在生物學(xué)里,我們使用試管、植物和有蓋培養(yǎng)皿;在計(jì)算機(jī)科學(xué)里,我們學(xué)習(xí)編程。

什么是編程?
編程,或者說寫代碼,是指你發(fā)出指令讓計(jì)算機(jī)執(zhí)行一些操作。如果你之前從來沒有寫過代碼,那么你可能習(xí)慣了使用已有的應(yīng)用程序來與計(jì)算機(jī)發(fā)生交互。實(shí)際上,這些應(yīng)用程序是由代碼組成的,這些代碼告訴計(jì)算機(jī)如何顯示應(yīng)用、在哪里存儲(chǔ)數(shù)據(jù)、從哪里獲取數(shù)據(jù),以及如何對(duì)用戶的鼠標(biāo)點(diǎn)擊做出響應(yīng)。
編程是基于上述的計(jì)算機(jī)科學(xué)原則進(jìn)行的。計(jì)算機(jī)科學(xué)的概念——邏輯、算法、數(shù)據(jù)和系統(tǒng)工程——可以用于構(gòu)建所有的事物,從Web瀏覽器到飛機(jī)的自動(dòng)駕駛軟件。編程涉及到數(shù)學(xué)和數(shù)據(jù)結(jié)構(gòu),同時(shí)也是一項(xiàng)具有創(chuàng)造性的活動(dòng):每敲出一行代碼,你的想法就又向現(xiàn)實(shí)邁近了一步。
將編程作為計(jì)算機(jī)科學(xué)的一部分帶來了很多好處。

DIY:如果你會(huì)編程,你就可以自己開發(fā)軟件。你可以從簡(jiǎn)單的開始:寫一個(gè)腳本來重命名照片或?qū)懸粋€(gè)Excel公式來計(jì)算稅金。然后更進(jìn)一步:搭建一個(gè)網(wǎng)站;為你的公司開發(fā)一個(gè)移動(dòng)應(yīng)用;開發(fā)一款可以與你的朋友們一起玩的游戲。
問題診斷:在開發(fā)了幾款應(yīng)用之后,就可以輕松地理解其他的應(yīng)用。在戰(zhàn)勝了對(duì)計(jì)算機(jī)的恐懼之后,你將成為技術(shù)大神。技術(shù)遍布我們的生活,知道如何操縱它們變得與知道如何使用它們一樣重要。
職業(yè)生涯:學(xué)習(xí)計(jì)算機(jī)科學(xué)的目的并不是為了成為專業(yè)的程序員。我們每個(gè)人在學(xué)校里都學(xué)習(xí)數(shù)學(xué)、物理和化學(xué),但并不是每個(gè)人都成為專業(yè)的數(shù)學(xué)家、物理學(xué)家或化學(xué)家。不過,如果你有這方面的熱情,你會(huì)發(fā)現(xiàn)軟件工程是一份高評(píng)價(jià)、高收入、增長(zhǎng)快速的工作。
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來成長(zhǎng)!