Alan Kay:我将如何教授计算机科学 101

“真正上大学的原因之一是超越简单的职业培训,而是掌握更深层次的想法。”

Alan Kay:我将如何教授计算机科学 101

让我们稍微思考一下这个问题。 几年前,计算机科学系邀请我到多所大学演讲。 几乎是偶然,我向第一批本科生、研究生和教授询问了他们对“计算机科学”的定义。 大家只能给出一个工程上的定义。 我在每个新地方都这样做了,到处都有类似的结果。

另一个问题是:“道格拉斯·恩格尔巴特是谁?” 有几个人说:这不是电脑鼠标的事吗? (这让我非常失望,因为我的科学界付出了很大的努力来确保只需点击两三下鼠标就可以回答这个问题,并确信恩格尔巴特确实与电脑鼠标有关) 。

部分问题是缺乏好奇心,部分是与学习无关的个人目标狭窄,部分是缺乏对这门科学是什么的理解,等等。

我在加州大学计算机科学系兼职工作了几年(我本质上是一名教授,但我不必参加系会议)。 我有时会教课,有时是一年级学生。 多年来,人们对计算机科学本来就很低的好奇心已经大幅下降(但受欢迎程度也有所提高,因为如果你会编码并获得顶级证书,计算机就会被视为获得高薪工作的途径) 10 所学校)。 因此,没有一个学生抱怨加州大学的第一语言是 C++!

在我看来,我们面临着这样一种情况:“计算机”和“科学”的含义都被软弱的、庞大的概念所摧毁,创造了一个新术语——一种牛仔裤上的标签——听起来不错,但实际上很空。 一个同样被摧毁的相关术语是“软件工程”,它再次没有使用“编程”和“工程”最巧妙的思想,而是简单地将它们结合起来(这是在六十年代故意这样做的,当时它是创造的术语)。

真正上大学的原因之一是超越简单的职业培训,而是掌握更深层次的想法。 在我看来,在专业介绍中尝试(如果可能的话通过示例)让学生参与现实生活中的问题并开始理解该领域真正有趣、重要和核心的东西是相当合理的。

当一年级学生看到一把尺子叠在另一把尺子上如何变成一台加法机时,他们会很高兴,用它可以在分数加法上击败五年级的孩子。 然后他们会很乐意参与改进加法机的开发。 他们接触了一台真正的计算机——一种帮助我们思考的身心工具。 他们学到了一种非常有效的数字表示方法 - 比学校教授的方法更有效!

他们能够将“添加”作为“积累”的常识理念与具有强大新属性的类似事物结合起来。 他们对其进行了编程,使其能够解决各种问题。

他们还扩大了它。 等等。 这不是数字计算机。 这不是一台有记忆程序的计算机。 但这就是计算机的本质。 就像 安提凯西拉机制 - 这通常是计算机和计算的本质。

Alan Kay:我将如何教授计算机科学 101

Antikythera 机制

在事情失控并迷失在抽象中之前,我们能走多远、能做多少事情? 我一直偏向于人物塑造 艾伦·佩利斯 - 第一位图灵奖获得者,他可能发明了“计算机科学”一词 - 他在 60 年代说过:“计算机科学是过程的科学。” 所有流程。

为了 Quora 的缘故,我们不要试图进一步推动这一点或将其变成宗教教条。 让我们愉快地使用这个想法 阿拉佩尔利萨更好地思考我们的领域。 尤其是关于如何教授它。 我们现在需要审视“科学”的现代含义,玻璃市相当有信心,它不应该被旧的含义(例如“知识的收集”)和用途(例如“图书馆科学”甚至“社会科学”)所淡化。科学”)“)。 通过“科学”,他试图通过创建试图显示、“跟踪”和预测现象的模型/地图来理解一种现象。

Alan Kay:我将如何教授计算机科学 101

我接受过多次采访,内容涉及如何将最好的地图和模型贴合在 T 恤上,就像麦克斯韦方程组和其他方程组那样。 类比是,尽管大多数桥梁是人造的,但存在着“桥梁科学”。 但桥梁一旦建成,它就代表了科学家可以研究的现象,桥梁可以用来制作多种模型,形成全面、有用的“桥梁理论”。 有趣的是,你可以设计和建造新的桥梁(我已经提到过,没有什么比科学家和工程师共同解决重大问题更有趣的了!)

Alan Kay:我将如何教授计算机科学 101

图灵奖和诺贝尔奖获得者赫伯特·西蒙将其称为“人工科学”(并写了一本同名的优秀书籍)。

Alan Kay:我将如何教授计算机科学 101

让我举一个例子。 在 50 年代,公司和大学建造了内存计算机并开始对其进行编程 - 1956 年 Fortran 的出现是一个特殊的时刻 - 它不是第一个高级语言,但也许是第一个做得如此出色的语言用于许多不同的领域,包括许多以前仅使用机器语言完成的领域。

这一切就产生了“现象”。

Alan Kay:我将如何教授计算机科学 101

约翰麦卡锡

Lisp 的历史更为复杂,但 John McCarthy 对寻找“计算的数学理论”产生了兴趣,并决心让一切完美运行。 解释 Lisp 的 eval 函数可以轻松地放在 T 恤上! 与“编程系统”相比,这是微不足道的。 更重要的是,这个“计算理论”是一个比Fortran更强大的概念! 这是最好的桥梁想法!

Lisp 的微型本质允许通过几次点击在更深层次上捕获整个编程思想,并在一个当你看到巨大的工件时似乎根本不可能的水平上进行思考(这是原因之一)为什么科学家喜欢数学紧凑而强大)。 这里使用的数学是新数学,因为它允许诸如“之前”和“之后”之类的概念,这导致了“可变逻辑”,它允许保留函数依赖性和逻辑思维流程,同时还允许位置和通道的时间。 (在我们这个残酷的情景编程世界中,这一点仍然没有被理解)。

Lisp作为一种强大的编程语言和元语言,可以代表自己的理论,是真正的计算机科学的一个例子。 如果你学习它和其他类似的东西,你将能够比你简单地学习用 Fortran 或其现代等价物进行编程更深入地思考并对自己的命运更加负责(......这样你就可以更接近程序员! )。

您将更多地了解计算中所需的特殊类型的设计(例如,当计算经常需要脱离计算环境时,通常不会意识到这一点:存储软计算的特点之一是它不仅仅是该程序的材料,但用于全新计算机的材料)。

选择玻璃市定义的另一个原因是,一般来说,计算更关心多种系统的创建,而不是算法、“数据结构”甚至编程本身。 例如,计算机是一个系统,计算是一个系统,本地网络和互联网是系统,大多数程序应该是比它们本身更好的系统(50年代的旧编程风格一直持续到似乎编程应该是就像这样 - 没有什么比事实更离谱的了)。

互联网就是一个很好的例子——与当今大多数软件不同,互联网不需要停止来修复或改进任何东西——按照我们的意图,它更像是一个生物系统——而不是大多数人所认为的计算系统。 而且它比当今几乎所有可用的软件系统都更具可扩展性和可靠性。 在向新手程序员教授不太强大的概念之前,这确实值得思考!

因此,我们在第一年的计算机科学课程中需要做的是,考虑到学生一开始可能在做什么,然后尝试保持在他们的“认知负荷”范围内,以帮助他们了解真正重要的事情。 重要的是要“保持真实”并找到在智力上诚实且适合刚起步的人的方法。 (请不要仅仅因为它们看起来更简单就教授坏主意 - 很多坏主意实际上更简单!)。

学生应该首先创建具有我在这里讨论的许多重要特征的东西。 它应该是一个由几个动态交互的部分组成的系统,等等。 决定使用哪种编程语言的一个好方法是简单地制作具有数千个交互部分的东西! 如果没有,那么你应该找一个。 你能做的最糟糕的事情就是让学生走上一条不太流畅的道路,这将严重限制伟大的想法。 它只会杀死他们——我们想要抚养他们,而不是杀死他们。

关于GoTo学校

Alan Kay:我将如何教授计算机科学 101

来源: habr.com

添加评论