人人都該學(xué)寫代碼的反思:我們更該學(xué)習(xí)的是"電腦思維"
Photo Credit: 電影「實(shí)習(xí)大叔」劇照
近年來,程序設(shè)計(jì)在全球掀起一股熱潮,寫代碼不再是男性專屬,而是不分男女老幼的全民運(yùn)動(dòng)了。
Yipit 創(chuàng)辦人曾說:「coding 不是程序員的專利,每個(gè)人都要學(xué)習(xí)寫代碼」,例如在全球各地舉辦的 Rails Girls 工作坊,就幫助許多女性進(jìn)入 Ruby 以及 Rails 的程序世界。
除了擺脫過去寫代碼是男性專屬的既定印象,寫代碼的年齡層也有年輕化的趨勢(shì),像是 Rails Girls 創(chuàng)辦人推出教小朋友寫代碼的繪本、英國小學(xué)生使用 iPad 學(xué)習(xí)寫代碼等新聞屢見不鮮。
此外美國非營利機(jī)構(gòu) Code.org 曾找來多位科技名人如 Bill Gates、Mark Zuckerberg 以及體育界和政界明星拍攝短片,倡導(dǎo)每個(gè)人都該學(xué)習(xí)寫代碼,呼吁社會(huì)該更加重視軟件教育以解決工程師稀缺的問題。(來自愛爾蘭 CoderDojo 則是鼓勵(lì)年輕人與小朋友寫代碼的非營利組織,他們分布在全球的多個(gè)城市)
然而,面對(duì)這股全民寫代碼的浪潮,曾任 TripAdvisor 軟件工程師、現(xiàn)任 LinkedIn 資深軟件工程師的 Yevgeniy Brikman 發(fā)表「」一文,他認(rèn)為大家在學(xué)習(xí)寫代碼的同時(shí),更重要的是學(xué)習(xí)電腦科學(xué)的思維模式。
大家對(duì)程序設(shè)計(jì)多少有點(diǎn)理解是好事,但寫代碼不該成為最終的學(xué)習(xí)目標(biāo)。寫代碼是一種工具,是達(dá)成目標(biāo)的方法。那么真正的目標(biāo)是什么呢?Yevgeniy Brikman 認(rèn)為,讓大家學(xué)會(huì)全新的思考模式才是真正的目標(biāo),我們?cè)撛囍鴮W(xué)習(xí)電腦科學(xué)而不只是寫代碼。
接下來,將會(huì)解釋兩者的差異,并解釋為何學(xué)習(xí)電腦科學(xué)更為重要。
歡迎來到真實(shí)世界
首先,或許很多人會(huì)想問:無論是程序設(shè)計(jì)或電腦科學(xué),到底跟我有什么關(guān)系呢?為什么我該關(guān)心?
事實(shí)上,在閱讀本文時(shí),你可能正使用 Chrome 或 Firefox 瀏覽器,用的是 Windows 或 OS X 系統(tǒng)。并且你今天大概花了一些時(shí)間收發(fā) email、瀏覽微博動(dòng)態(tài)或在優(yōu)酷上看了幾個(gè)熱門視頻?,F(xiàn)代人的生活與電腦緊密連結(jié):醫(yī)療記錄、稅務(wù)記錄、個(gè)人履歷等等,各種想得到的服務(wù)幾乎都能在電腦上操作。
而你使用的智能手機(jī),使用了 GPS 定位,配備相機(jī)、觸控屏還有許多其他的 APP 應(yīng)用。此外你每天接觸的電視節(jié)目、電影、音樂、游戲等等都與電腦繪圖和數(shù)位音效處理緊密相關(guān)。
出門在外你可能會(huì)使用 Google Map 尋找路線,現(xiàn)在 Google 無人駕駛車都可以行駛在一般的道路上。而飛機(jī)則有自動(dòng)駕駛、甚至在高空中也有 Wifi 及通訊系統(tǒng)。更高上大一點(diǎn),太空中的衛(wèi)星正圍繞著地球,提供著氣象資訊與衛(wèi)星影像。
軟件正在吃掉全世界。但這一切都還只是開始,在人們意識(shí)到這件事之前,大家早已用起穿戴設(shè)備、只能家居。用電腦控制家里的門禁。也許在不久的將來,機(jī)器人會(huì)清潔環(huán)境,出門乘坐無人駕駛車、住在虛擬現(xiàn)實(shí)世界里。
剛剛提到的所有的科技都是由軟件驅(qū)動(dòng),滲透到生活中的各個(gè)層面。大家都被程序環(huán)繞,未來,代碼量只會(huì)不斷增加,所以電腦科學(xué)和代碼與每個(gè)人的生活都有緊密連結(jié)。
什么是電腦科學(xué)?
根據(jù)維基百科定義,電腦科學(xué)是系統(tǒng)性研究訊息與計(jì)算的理論基礎(chǔ),以及研究它們?cè)陔娔X系統(tǒng)中如何實(shí)作與應(yīng)用的實(shí)用技術(shù)學(xué)科。以下是幾個(gè)電腦科學(xué)相關(guān)概念解釋:
問題解決(Problem solving)透過學(xué)習(xí)演算法,像是 divide and conquer、 recursion、heuristics、greedy search、 randomized algorithms 等,幫助你解決問題。
邏輯(Logic)使用精準(zhǔn)和正式的方法去思考,包括 abstraction、 boolean logic、number theory、set theory 等理論,幫助你更嚴(yán)謹(jǐn)?shù)慕鉀Q問題。
數(shù)據(jù)(Data)你會(huì)開始接觸資訊理論并開始提出類似「什么是資訊?」、「如何呈現(xiàn)資訊?」等這類問題。
系統(tǒng) Systems 如何設(shè)計(jì)并建立一套復(fù)雜的系統(tǒng)且同時(shí)滿足一連串的要求和限制呢?系統(tǒng)工程幾乎在所有的商業(yè)模式中都是是相當(dāng)重要和基本的。
思考(Thinking)理解人類心智的最好方式便是復(fù)制,像是人工智慧 AI、自然語言處理等是走在最前端的科技,其不近牽涉了電腦科學(xué),同時(shí)還有:生物學(xué)、心理學(xué)、哲學(xué)和數(shù)學(xué)。
注意到了嗎?上面完全沒有提到跟寫代碼相關(guān)的詞條,這是因?yàn)閷懘a只是實(shí)現(xiàn)電腦運(yùn)算的一種工具,寫代碼并不包含在電腦科學(xué)的概念宗旨里。
電腦科學(xué)不只是跟電腦相關(guān),就如同天文學(xué)不只是望遠(yuǎn)鏡、生物學(xué)不只是顯微鏡、化學(xué)不只是燒杯試管一般??茖W(xué)是與工具無關(guān)的。
——Michael Fellows and Ian Parberry
事實(shí)證明,比起電腦,我們更倚賴另一種運(yùn)算工具:大腦!而電腦科學(xué)的目標(biāo)正是要教導(dǎo)我們以一種全新、普世且能被廣泛應(yīng)用的方式思考。當(dāng)科技變得越來越普及時(shí),這種全新的思考方式將會(huì)變得跟物理、數(shù)學(xué)、生物、歷史等學(xué)科一樣重要。
總而言之,光是思考是不夠的,我們必須知道如何應(yīng)用。在物理領(lǐng)域,我們以磁鐵、棱鏡進(jìn)行實(shí)驗(yàn);在生物領(lǐng)域,我們以培養(yǎng)皿、試管進(jìn)行觀察;在電腦科學(xué)領(lǐng)域,我們學(xué)習(xí)寫代碼。
#p#
什么是程序設(shè)計(jì)?
程序設(shè)計(jì),或說是寫代碼,是指對(duì)電腦下指令以讓其完成某項(xiàng)特定的動(dòng)作。如果從來沒寫過代碼,您大概曾經(jīng)在 App 中點(diǎn)擊過某些按鈕,這些 App 正是由許多程序代碼組成,透過程序代碼告訴電腦如何展示界面、要在哪里取得數(shù)據(jù)以及如何回應(yīng)使用者的點(diǎn)擊。
程序設(shè)計(jì)完全是基于上述電腦科學(xué)的原則,剛剛談到的邏輯、演算法、系統(tǒng)工程等能用來建構(gòu)任何事情,從你正用來閱讀本文的瀏覽器到飛機(jī)上的自動(dòng)駕駛程式都可以。即使程序設(shè)計(jì)牽涉到許多數(shù)學(xué)與結(jié)構(gòu),但這同時(shí)也相當(dāng)能激蕩創(chuàng)意的實(shí)作。用一條條的代碼,把想法化為真實(shí)存在的產(chǎn)品。
學(xué)習(xí)程序設(shè)計(jì)能為你帶來不少好處,以下 Yevgeniy Brikman 提出三點(diǎn):
1、DIY
如果你會(huì)寫代碼,你就能建立專屬于自己的產(chǎn)品,從最簡單的開始,例如用 Excel 表格計(jì)算自己的稅務(wù)問題。更難一點(diǎn), 建立自己的網(wǎng)站、開發(fā)自己公司的 App 甚至打造一款手機(jī)游戲與朋友共享。
2、故障排除
一旦你開發(fā)了 App,便會(huì)發(fā)現(xiàn)要開發(fā)其他 App 也沒那么難了。一旦你不再害怕電腦未知的部分,你就朝著成為技術(shù)專家又前進(jìn)了一步。當(dāng)科技滲透生活的各個(gè)部分,去了解并且探索。如何操作它,就變得跟學(xué)習(xí)如何閱讀一樣重要。
3、職業(yè)生涯
學(xué)習(xí)電腦科學(xué)的目標(biāo)不是為了成為專業(yè)工程師,如同我們從小在校園里學(xué)習(xí)數(shù)學(xué)、物理、化學(xué)一樣。不過如果發(fā)現(xiàn)自己對(duì)電腦科學(xué)有興趣的話,不難發(fā)現(xiàn)軟件工程是現(xiàn)在成長最為快速、高薪的工作選項(xiàng)之一。
把電腦科學(xué)和程序設(shè)計(jì)結(jié)合在一起
最后讓我們?cè)倏偨Y(jié)一下:
電腦科學(xué)是一種新的思考方式,其中的概念對(duì)處在充滿科技環(huán)境中的每個(gè)人都相當(dāng)有用。
程序設(shè)計(jì)是學(xué)習(xí)電腦科學(xué)相當(dāng)重要的一環(huán),用于將電腦科學(xué)的思維付諸實(shí)行。然而,程序設(shè)計(jì)本身并不該被視為學(xué)習(xí)終極目標(biāo)。
如何開始第一步
身處在這個(gè)時(shí)代,幸運(yùn)的是我們手邊有許多資源能從馬上開始自學(xué)電腦科學(xué)!事實(shí)上,這可能是最好入門的學(xué)科了,你只需要一臺(tái)電腦就夠了,正在閱讀本文的讀者大概都具備了這兩項(xiàng)基本條件了!LOL~
透過以下學(xué)習(xí)平臺(tái),大家今天就能開始上電腦科學(xué)的第一課:
大學(xué)課程
線上課程
社團(tuán)與組織
原文鏈接:http://www.inside.com.tw/2014/05/20/dont-learn-to-code-learn-to-think