学习编程 vs 学习计算机科学

2014-03-09 22:03


对于非教育工作者们来说,讨论在学校里什么应该教和什么不应该教是非常棘手的。我自己的校园时光只是一段关于荷尔蒙、焦虑与恼人作业的模糊记忆。然而我在这里,想说一说。

在当前 “鼓励孩子们学习编程”的热潮下,探究一下编程与计算机科学之间的差异,我认为还是值得一做。

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/