不要学习代码,要学会思考(转)
?
英文原文:Don't learn to code, learn to think
譯/賴信濤
這是一個(gè)人人都在學(xué)習(xí)編程的時(shí)代:Code.org請(qǐng)了比爾·蓋茨,馬克·扎克伯格和克里斯·波什等這些名人,來(lái)告訴你,每個(gè)人都可以編程;CoderDojo’s在各個(gè)國(guó)家悄然興起;在英國(guó),編程已經(jīng)是各個(gè)年級(jí)學(xué)生的正式課程。
我認(rèn)為這里有個(gè)誤區(qū)。別誤會(huì)我——如果每個(gè)人都會(huì)一些編程知識(shí),這個(gè)世界當(dāng)然會(huì)變得更好——但是學(xué)會(huì)寫代碼不應(yīng)該是我們的目標(biāo)。計(jì)算機(jī)和程序只是一個(gè)工具,是一種達(dá)到某種目的的方法。
真正的目標(biāo)應(yīng)該是學(xué)會(huì)思考的方式。換句話說(shuō),我們應(yīng)該嘗試教授計(jì)算機(jī)科學(xué),而不是教著寫代碼。在本文中,我將介紹兩者的不同,以及為什么后者是當(dāng)下學(xué)編程浪潮成功的關(guān)鍵。
如果你喜歡視頻的解釋,我強(qiáng)烈推薦Simon Peyton Jones的TED,Teaching Creative Computer Science。這和本文的論點(diǎn)不謀而合。
看完之后,依然想看文字的版本么?好的。讓我們先從一個(gè)關(guān)鍵的問(wèn)題開始吧:為什么你要學(xué)習(xí)編程或計(jì)算機(jī)科學(xué)呢?
回答這個(gè)問(wèn)題之前,我們先賣個(gè)關(guān)子。
歡迎來(lái)到真實(shí)的世界
現(xiàn)在,你可能正在用Chrome或者Firefox瀏覽器在看這篇文章,運(yùn)行在Windows或者OS X操作系統(tǒng)上,用的一臺(tái)筆記本或者臺(tái)式機(jī)。我猜你今天還花了一些時(shí)間查看電子郵件,刷Facebook,或者在Youtube上看視頻了。如今,人們的生活越來(lái)越依賴于計(jì)算機(jī):醫(yī)療記錄存放在了數(shù)據(jù)庫(kù)中;簡(jiǎn)歷放在LinkedIn上;使用Google或者Facebook來(lái)推銷你的產(chǎn)品;用Amazon來(lái)買東西;在網(wǎng)上報(bào)稅;在線管理你銀行的賬戶;甚至還涉足了比特幣。
現(xiàn)在,從屏幕上移開你的眼睛:在你的口袋,包包,或者旁邊的桌子上,可能就有一部智能手機(jī)。它裝有GPS,攝像頭,觸摸屏,還有成千上萬(wàn)的應(yīng)用。如果你現(xiàn)在在客廳,你可能還有一臺(tái)聯(lián)網(wǎng)的LCD電視,一臺(tái)DVR,DVD播放器,蘋果TV,XBox,或者PlayStation。你每天看的電影,聽的音樂(lè),玩的游戲,就封裝在這些設(shè)備顯卡和聲卡中。
軟件正在占領(lǐng)這個(gè)世界,但這還只是個(gè)開始。不知不覺中,你就穿著各種可穿戴設(shè)備,用計(jì)算機(jī)來(lái)鎖門,用機(jī)器人來(lái)運(yùn)貨,打掃房間。擁有你自己的電子技術(shù),經(jīng)營(yíng)自己的生產(chǎn)廠,生活在虛擬的世界中,乘自動(dòng)駕駛的汽車去旅行,甚至飛向太空。
代碼無(wú)處不在
毫無(wú)疑問(wèn),以上我所描述的技術(shù)的源動(dòng)力是軟件。你生活的每一個(gè)方面,都被代碼所包圍。大量的代碼會(huì)讓未來(lái)變得美好。
但是,僅僅是一項(xiàng)技術(shù)非常普遍不能成為你在學(xué)校學(xué)習(xí)它的理由。就像我們乘坐飛機(jī),但是考飛機(jī)駕照并不在從幼兒園到12年級(jí)的課程中。
然而,飛行的原理卻是課程的一部分:
從中學(xué)畢業(yè)的時(shí)候,你就已經(jīng)知道了飛機(jī)是什么,它是如何工作的,如何安全乘坐飛機(jī)。通識(shí)類課程,像物理學(xué),數(shù)學(xué),歷史,教會(huì)你如何思考各種各樣的問(wèn)題,包括飛機(jī);與之形成對(duì)比的是教會(huì)你是用工具的課程,像教你如何駕駛一種特定類型的飛機(jī)。
什么是計(jì)算機(jī)科學(xué)?
計(jì)算機(jī)科學(xué)是一門研究計(jì)算的學(xué)科:就是說(shuō),如何表述和處理信息。以下是一些你會(huì)學(xué)到的概念:
注意,上面的清單中并沒有提到代碼或者編程,因?yàn)樗鼈冎皇菍?shí)現(xiàn)計(jì)算的工具:它們本身并不是計(jì)算機(jī)科學(xué)。
計(jì)算機(jī)科學(xué)并不是關(guān)于計(jì)算機(jī)的科學(xué),就像天文學(xué)不是關(guān)于望遠(yuǎn)鏡的科學(xué),生物學(xué)不是關(guān)于顯微鏡的,滑雪不是關(guān)于燒杯和試管。科學(xué)并不是研究工具的。——Michael Fellows和Parberry
什么是編程?
編程,或?qū)懘a,就是指示計(jì)算機(jī)來(lái)執(zhí)行哪一些指令。如果你從未寫過(guò)代碼,也可能通過(guò)操作應(yīng)用程序來(lái)和計(jì)算機(jī)交互。其實(shí)在內(nèi)部,這個(gè)應(yīng)用程序也是通過(guò)代碼來(lái)告訴計(jì)算機(jī)顯示什么,在哪里檢索數(shù)據(jù),以及對(duì)于你的點(diǎn)擊操作做出什么回應(yīng)。
所有的編程都是建立在我們上面討論的計(jì)算機(jī)科學(xué)的原理上的。值得注意的是,同一組概念——邏輯、算法、數(shù)據(jù)、系統(tǒng)工程——可以用來(lái)構(gòu)建任何軟件,小到你現(xiàn)在閱讀這篇文章用的這個(gè)瀏覽器,大到飛機(jī)上的自動(dòng)駕駛軟件。盡管會(huì)涉及到一些數(shù)學(xué)和架構(gòu)的知識(shí),但這卻是極富創(chuàng)造性的活動(dòng):你將想法變成現(xiàn)實(shí),一次一行代碼。
將編程作為學(xué)習(xí)計(jì)算機(jī)科學(xué)的一部分有以下的好處:
綜合考慮
簡(jiǎn)要重述:
混淆這兩個(gè)觀點(diǎn),就導(dǎo)致了現(xiàn)在學(xué)習(xí)編程熱潮的圈子的一些問(wèn)題。Slate 發(fā)布了一篇文章,《也許并不是每一個(gè)人都需要學(xué)編程》;Atlantic寫了一篇《新聞學(xué)院應(yīng)該要求記者寫代碼嗎?不》;Jeff Atwood寫了《請(qǐng)不要學(xué)習(xí)寫代碼》,其中提出了一個(gè)精辟的問(wèn)題:
“如果邁克爾·布隆伯格(紐約市市長(zhǎng),譯者注)是一個(gè)專業(yè)的Java程序員,他能更好的領(lǐng)導(dǎo)一個(gè)美國(guó)的大城市么?”
當(dāng)然,這個(gè)問(wèn)法是錯(cuò)誤的。這就表示這些活動(dòng)的目標(biāo)是學(xué)習(xí)代碼,而不是學(xué)習(xí)思考的方式。如果連Jeff Atwood這樣經(jīng)驗(yàn)豐富的程序員都搞錯(cuò)了,那么普通人更分不清楚了。問(wèn)題應(yīng)該這樣問(wèn):
如果通過(guò)學(xué)習(xí)解決問(wèn)題的方法,訓(xùn)練嚴(yán)密的邏輯來(lái)提高自己的能力,那么邁克爾·布隆伯格(或者其他人)能工作的更好嗎?
我相信,答案是顯而易見的。而且隨著科技的發(fā)展,答案會(huì)越來(lái)越清晰。這就是為什么,我們要把教學(xué)重點(diǎn)放在計(jì)算機(jī)科學(xué)上,而不是代碼。
如何開始?
好消息是,你不必等Code.org來(lái)宣布你已經(jīng)開始學(xué)習(xí)計(jì)算機(jī)科學(xué)了。事實(shí)上,這是最容易學(xué)習(xí)的一個(gè)主題,你只需一臺(tái)電腦和一根網(wǎng)線。我想,現(xiàn)在你正在閱讀本文,那么很可能你兩者都有了。
這里,分享一些好的資源:
University courses
Online tutorials
Communities and clubs
http://kb.cnblogs.com/page/208800/
轉(zhuǎn)載于:https://www.cnblogs.com/softidea/p/4376968.html
總結(jié)
以上是生活随笔為你收集整理的不要学习代码,要学会思考(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【学神-RHEL7】1-3-Linux基
- 下一篇: 基于Apache OLTU的OAuth2