學習程式設計 vs 學習電腦科學

2 贊 回覆發表於2014-03-09

| 2014-03-09 22:03   評論: 4 收藏: 1    

對於非教育工作者們來說,討論在學校裡什麼應該教和什麼不應該教是非常棘手的。我自己的校園時光只是一段關於荷爾蒙、焦慮與惱人作業的模糊記憶。然而我在這裡,想說一說。

在當前 “鼓勵孩子們學習程式設計”的熱潮下,探究一下程式設計與電腦科學之間的差異,我認為還是值得一做。

rgergergergBBC-BASIC-Coding

歷史

我在學校學習了的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/

學習程式設計 vs 學習電腦科學

相關文章