當前位置:
首頁 > 知識 > Java學習系列之不要學習代碼,要學會思考

Java學習系列之不要學習代碼,要學會思考



Java學習系列之不要學習代碼,要學會思考



這是一個人人都在學習編程的時代:Code.org請了比爾·蓋茨,馬克·扎克伯格和克里斯·波什等這些名人,來告訴你,每個人都可以編程;CoderDojo』s在各個國家悄然興起;在英國,編程已經是各個年級學生的正式課程。


我認為這裡有個誤區。別誤會我——如果每個人都會一些編程知識,這個世界當然會變得更好——但是學會寫代碼不應該是我們的目標。計算機和程序只是一個工具,是一種達到某種目的的方法。


真正的目標應該是學會思考的方式。換句話說,我們應該嘗試教授計算機科學,而不是教著寫代碼。在本文中,我將介紹兩者的不同,以及為什麼後者是當下學編程浪潮成功的關鍵。

如果你喜歡視頻的解釋,我強烈推薦Simon Peyton Jones的TED,Teaching Creative Computer Science。這和本文的觀點不謀而合。


看完之後,依然想看文字的版本么?好的。讓我們先從一個關鍵的問題開始吧:為什麼你要學習編程或計算機科學呢?


回答這個問題之前,我們先賣個關子。


歡迎來到真實的世界


現在,你可能正在用Chrome或者Firefox瀏覽器在看這篇文章,運行在Windows或者OS X操作系統上,用的一台筆記本或者台式機。我猜你今天還花了一些時間查看電子郵件,刷Facebook,或者在Youtube上看視頻了。如今,人們的生活越來越依賴於計算機:醫療記錄存放在了資料庫中;簡歷放在LinkedIn上;使用Google或者Facebook來推銷你的產品;用Amazon來買東西;在網上報稅;在線管理你銀行的賬戶;甚至還涉足了比特幣。


軟體正在佔領這個世界,但這還只是個開始。不知不覺中,你就穿著各種可穿戴設備,用計算機來鎖門,用機器人來運貨,打掃房間。擁有你自己的電子技術,經營自己的生產廠,生活在虛擬的世界中,乘自動駕駛的汽車去旅行,甚至飛向太空。


代碼無處不在


毫無疑問,以上我所描述的技術的源動力是軟體。你生活的每一個方面,都被代碼所包圍。大量的代碼會讓未來變得美好。


但是,僅僅是一項技術非常普遍不能成為你在學校學習它的理由。就像我們乘坐飛機,但是考飛機駕照並不在從幼兒園到12年級的課程中。


然而,飛行的原理卻是課程的一部分:

物理學和數學讓你明白重力、彈性元件、壓力、速度、摩擦和攀升等方面的知識。


生物學讓你明白人體在高海拔、低氧、極端寒冷等情況下的反應。


歷史解釋了飛機的發明,進化,以及其在旅行、商業和戰爭中扮演的角色。


從中學畢業的時候,你就已經知道了飛機是什麼,它是如何工作的,如何安全乘坐飛機。通識類課程,像物理學,數學,歷史,教會你如何思考各種各樣的問題,包括飛機;與之形成對比的是教會你是用工具的課程,像教你如何駕駛一種特定類型的飛機。


什麼是計算機科學?


計算機科學是一門研究計算的學科:就是說,如何表述和處理信息。以下是一些你會學到的概念:


解決問題:你將會學習演算法——就是通用的一些方法,像是分治演算法、遞歸、遺傳演算法、貪心演算法——幫助你建模,分解,解決各種各樣的問題。


邏輯:你將開始使用精密又正式的方法思考問題,像是抽象,邏輯代數,數論和集合論,來用嚴密的邏輯解決問題。


數據:你將會接觸到資訊理論,並開始思考什麼是信息?如何表述?如何對真實的世界建模?


系統:如何設計與構建複雜的系統,來實現一系列的需求?系統工程是一個幾乎在各個領域都涉及到的重要的主題。

思考:了解人類大腦最好的方式,是試著去複製它。像人工智慧、機器學習、計算機視覺、自然語言處理這些話題,不僅僅在計算機科學領域,同時在數學,生物,物理,哲學等方面都是最前沿的科學。


注意,上面的清單中並沒有提到代碼或者編程,因為它們只是實現計算的工具:它們本身並不是計算機科學。


計算機科學並不是關於計算機的科學,就像天文學不是關於望遠鏡的科學,生物學不是關於顯微鏡的,化學不是關於燒杯和試管。科學並不是研究工具的。——Michael Fellows和Parberry


什麼是編程?


編程,或寫代碼,就是指示計算機來執行哪一些指令。如果你從未寫過代碼,也可能通過操作應用程序來和計算機交互。其實在內部,這個應用程序也是通過代碼來告訴計算機顯示什麼,在哪裡檢索數據,以及對於你的點擊操作做出什麼回應。


所有的編程都是建立在我們上面討論的計算機科學的原理上的。值得注意的是,同一組概念——邏輯、演算法、數據、系統工程——可以用來構建任何軟體,小到你現在閱讀這篇文章用的這個瀏覽器,大到飛機上的自動駕駛軟體。儘管會涉及到一些數學和架構的知識,但這卻是極富創造性的活動:你將想法變成現實,一次一行代碼。


將編程作為學習計算機科學的一部分有以下的好處:


DIY:如果你會編程了,你就可以製作一些東西。可以從最簡單的開始:做一個能給旅遊照片批量重命名的腳本,或者寫一個Excel公式幫自己計算稅務;然後,開始發燒級別的:給你自己的文件系統寫一個瀏覽器;給你們公司做一個app;或者寫一個能夠和朋友一起玩的遊戲。


解決問題:一旦你親手做了幾個app,弄清楚其他的就簡單多了。一旦你不再害怕計算機——未知的領域——你就會成為技術達人。隨著技術已經關係到我們生活的每個部分,掌握它們就會變得和學會閱讀一樣重要。


事業:我們學習計算機科學的目標不是成為職業的程序員。我們都學了數學,物理,化學,但是我們並沒有都成為這方面的專家。然而,如果你對這方面有激情的話,軟體工程師也是一份評價高,薪資高,進步快的職業。

綜合考慮


簡要重述:


計算機科學是一種新的思考方式。在這個技術時代,其中的概念對每一個人都很有幫助。


編程是學習計算機科學重要的一部分,以實現這些新的思考方式。然而,編程本身並不是目標。


混淆這兩個觀點,就導致了現在學習編程熱潮的圈子的一些問題。Slate 發布了一篇文章,《也許並不是每一個人都需要學編程》;Atlantic寫了一篇《新聞學院應該要求記者寫代碼嗎?不》;Jeff Atwood寫了《請不要學習寫代碼》,其中提出了一個精闢的問題:


「如果邁克爾·布隆伯格(紐約市市長,譯者注)是一個專業的Java程序員,他能更好的領導一個美國的大城市么?」


當然,這個問法是錯誤的。這就表示這些活動的目標是學習代碼,而不是學習思考的方式。如果連Jeff Atwood這樣經驗豐富的程序員都搞錯了,那麼普通人更分不清楚了。問題應該這樣問:


如果通過學習解決問題的方法,訓練嚴密的邏輯來提高自己的能力,那麼邁克爾·布隆伯格(或者其他人)能工作的更好嗎?


我相信,答案是顯而易見的。而且隨著科技的發展,答案會越來越清晰。這就是為什麼,我們要把教學重點放在計算機科學上,而不是代碼。


如何開始?

好消息是,你不必等Code.org來宣布你已經開始學習計算機科學了。事實上,這是最容易學習的一個主題,你只需一台電腦和一根網線。我想,現在你正在閱讀本文,那麼很可能你兩者都有了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java吧 的精彩文章:

演算法是內功,程序員別冷落演算法!
萌妹子告訴你php和 java如何選
Java簡 易打撲克牌
女神帶你零基礎如何走入 java

TAG:java吧 |

您可能感興趣

為什麼要學習ps
自學python vs 培訓班學習
學習,學習,再學習
Johnnie-學習是無時無刻的,享受學習的過程
學習要善於思考
Python學習——自己編寫的一段小代碼
Tomaso Poggio:深度學習需要從鍊金術走向化學
python學習之抽象
英語學習:學會英語和學會Python
零基礎學Python需要多久?Python學習難不難?
學會如何學習
學習學習再學習
vs「學ぶ」vs「習う」vs「學習する」
蘋果新應用Classwork可以幫助教師追蹤學生學習進度
深度學習之DenseNet
初學者入門 Golang 的學習型項目
為什麼你需要學習Python?給你三大必學理由
零基礎學ui真他媽慘,如何學習正確學習UI設計?
Python編程與機器學習研討會
帶你學習Python