學習程式設計 vs 學習電腦科學
| 2014-03-09 22:03 評論: 4 收藏: 1
對於非教育工作者們來說,討論在學校裡什麼應該教和什麼不應該教是非常棘手的。我自己的校園時光只是一段關於荷爾蒙、焦慮與惱人作業的模糊記憶。然而我在這裡,想說一說。
在當前 “鼓勵孩子們學習程式設計”的熱潮下,探究一下程式設計與電腦科學之間的差異,我認為還是值得一做。
歷史
我在學校學習了的Logo Turtle語言,在家學習了BBC BASIC語言,這都是學習如何程式設計。我按照說明,對著書本依葫蘆畫瓢,並且為了私人化自己的程式做了一些小調整。
在高階程度,我開始學習“分析決策”,而不是深奧的微積分和枯燥的公式。它著眼於如何富有邏輯地解決問題。這是學習如何成為一位程式設計師的完美開始,我堅信,在學校裡沒有關於教授程式設計的對話,是程式設計背後完全沒有科學的理論認識的表現。
一個例子
這是我展示給想要了解電腦科學基礎的人們的一個示例。
將下列數字排序:
7, 8, 1, 3, 2, 7, 6
在你的頭腦中就足以做這件事了,不是嗎?
OK,向我解釋一下你是怎麼做到的吧?
我們接下來討論這是什麼問題-我們排序數字時使用的方法是什麼?由高到低?還是由低到高?字母序的?實際上,我們想要對這些數字做什麼呢?
我們可以給出怎樣一系列的簡單說明,以至於完全的傻瓜都可以依據這些說明得到正確的答案呢?
“陷阱”在哪兒呢?如果兩個數字是一樣的,那麼它們應該如何排序呢?有關係嗎?
有一些更加效率的方法將數字排序嗎?效率低的時候好嗎?
你看-我們已經開始探索電腦科學了。我們可以設計出演算法,學習它們是如何發揮作用,為何重要的,寫出虛擬碼,尋找漏洞。
學習程式設計
以上是對電腦科學的很好的介紹。現在讓我們看看學習程式設計教了人們一些什麼。
sort([7, 8, 1, 3, 2, 7, 6]);
或者,應該是這樣的
var numbers = [7, 8, 1, 3, 2, 7, 6]; numbers.sort();
這些內容教會任何人什麼東西了嗎?僅僅是語法。
我在學校學會BASIC和Pascal語言。現在哪些人還在用它們?沒有人。學會編寫iPhone或者Android應用程式設計是極為有趣的-但是10年間,當那些孩子們長大成人,這世界也將會前進,Objective C語言會成為另一類被淘汰的語言。
是的,學習一種語言的基礎知識對於學習另一種語言是有益的-但它不是理解你做某一件事的基本科學的替代。
這就是為什麼我是Apps For Good舉措的一大支持者。而不是贊成僅僅教孩子們怎樣去建立一個Android程式,它需要孩子們經歷設計,使用者研究,競爭對手分析,測試,貨幣化,建立團隊,還有釋出應用過程導致法律/社會後果的整個過程。所有這些對於將成為程式設計師的人來說都是至關重要的。
它不僅僅是學習製作一個應用時按哪些按鈕-它是關於更深層次的理解。
if ($thou >= $summers_day) {$darling_buds.winds($rough, $shake);}
讓我們用語言來表達,人文學科的畢業生也可以理解它。
學習程式設計僅僅是教人們拼寫。
電腦科學是關於什麼可以使詩歌更加美麗,為什麼押頭韻更加迷人,抑揚五音步是怎樣解開莎士比亞秘密的。
那些是我認為應該在學校裡教授的內容。
原文連結: Terence Eden
譯文連結: http://blog.jobbole.com/60479/
相關文章
- 開啟電腦就能學習,風變程式設計讓學習程式設計更簡單程式設計
- 程式碼不等於電腦科學:為什麼所有人都應該學習程式設計程式設計
- 程式設計學習MarkDown學習程式設計
- 學習Python程式設計哪種線路科學?Python程式設計
- 電腦學習心得 (轉)
- 程式設計如何學習程式設計
- 請學習程式設計程式設計
- 好好學習程式設計程式設計
- 學習程式設計先學什麼程式設計
- 把學習遊戲化-----遊戲化程式設計學習遊戲程式設計
- Linux學習/TCP程式設計學習筆記LinuxTCP程式設計筆記
- 電腦科學自學指南
- 電腦科學箴言集箴言
- 電腦科學和Python程式設計導論week1Python程式設計
- 學習程式設計之前一定要學習數學嗎? - CACM程式設計ACM
- 用Kolb學習模型來學程式設計模型程式設計
- Rust 程式設計,Option 學習Rust程式設計
- Python 程式設計學習Python程式設計
- iOS程式設計學習十三iOS程式設計
- 演算法學習之路|科學計數法演算法
- C#程式設計學習(04):基本操作學習總結C#程式設計
- 程式設計方面學術學習的推薦程式設計
- 科學組合,系統學習
- 格智學院:電腦科學與技術
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- 電腦科學和Python程式設計導論(二 ) Python簡介Python程式設計
- 碼農 駭客 程式設計師 開發者和電腦科學家的區別程式設計師
- c# 程式設計學習(四)C#程式設計
- C#程式設計學習(一)C#程式設計
- c# 程式設計學習(二)C#程式設計
- 學習記錄|Socket程式設計程式設計
- 學習Rust 併發程式設計Rust程式設計
- 學習Promise非同步程式設計Promise非同步程式設計
- python 學習-- TCP程式設計PythonTCP程式設計
- 笑侃程式設計學習 (轉)程式設計
- 設計模式學習設計模式
- 學習風變程式設計,學會的不僅僅是程式設計程式設計
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust