艾伦·凯给计算机科学专业学生的建议

https://tekkie.wordpress.com/2018/11/09/alan-kays-advice-to-computer-science-students/

我再次逐字引用 Quora 上的一个答案,因为我认为它很有价值。Alan Kay 回答了“ 你会推荐什么书给计算机科学专业的学生?”

我的基本答案是:多读一些计算机领域以外的书籍。

值得尝试去理解“计算机科学”中的“科学”是什么意思,以及“软件工程”中的“工程”是什么意思。

现代意义上的“科学”意味着试图将现象融入尽可能具有解释力和预测力的模型中。可以存在“人工科学”(参见赫伯·西蒙的重要著作)。一种理解方式是,如果人们(尤其是工程师)建造桥梁,那么这些桥梁就呈现给科学家,让他们通过建立模型来理解这些现象。其中的乐趣在于,科学几乎总能指出建造桥梁的更新、更好的方法,因此科学家和工程师之间友好的同事关系能够真正推动进步。

计算机领域的一个例子是约翰·麦卡锡(John McCarthy)在 50 年代末对计算机的思考,以及它们能够实现的广泛功能(也许是人工智能?),并创建了一种计算模型,将计算作为一种语言,可以充当其自身的元语言(LISP)。我最喜欢的这方面的书籍是麻省理工学院出版社出版的《Lisp 1.5 手册》(由麦卡锡等人编写)。这本书的第一部分至今仍是一本关于如何思考,尤其是关于计算的经典著作。

(受这一切启发,后来出版了一本名为《Smalltalk:语言及其实现》(作者:Adele Goldberg 和 Dave Robson,即“蓝皮书”)的书。其中还包含用 Smalltalk 编写的完整实现等。)

我非常喜欢的一本后来的“真正的计算机科学”书籍是Kiszales、Bobrow 和 Rivera 合著的《元对象协议的艺术》。这本书的开头部分尤其富有启发性。

真正的计算机科学的早期论文(1970 年)是Dave Fisher (CMU) 的“控制定义语言” 。

我最喜欢的关于计算的书可能有点牵强,但它真的很棒,文笔也很棒:马文·明斯基的《计算:有限和无限机器》(约1967年)。真是一本好书。

为了帮助学习“科学”,我通常会推荐各种各样的书籍:牛顿的《自然哲学的数学原理》(终极科学著作和奠基文献)、布鲁斯·阿尔伯特等人的《细胞的分子生物学》。还有一本麦克斯韦论文集等等。

你需要意识到“计算机科学”仍然是一种愿望,而不是一个成熟的领域。

“工程”的意思是“以专业原则设计和建造事物”。在土木工程、机械工程、电气工程、生物工程等工程领域,工程的水平非常高。为了更全面地理解“工程”的含义,我们应该仔细研究这些领域。

为了更好地理解“工程”,不妨读读帝国大厦、博尔德水坝、金门大桥等建筑的建造史。我喜欢莱斯利·格罗夫斯少将(曼哈顿计划负责人)的《现在可以讲述》一书 。他是一位工程师,而这段历史并非从洛斯阿拉莫斯的视角(他也是那里的负责人)展开,而是关于橡树岭、汉福德等地,以及动员60多万人和巨额资金进行必要的工程,以制造所需材料的过程。

然后想想“软件工程”不在哪里——同样,你需要最终意识到,任何“工程”意义上的“软件工程”充其量仍然是一种愿望,而不是一件已完成的事情。

计算也是一种“媒体”和“中介”,所以你需要了解它们对我们以及对我们自身的作用。阅读马歇尔·麦克卢汉、尼尔·波兹曼、伊尼斯、哈夫洛克等人的著作。马克·米勒(评论见下方)提醒我,我推荐过刘易斯·芒福德《机器神话》系列第一卷《技术与人类发展》,它既是媒体环境理念的伟大先驱,也是人类学重要面向的代表。

我不知道有什么优秀的人类学书籍(或许有人可以推荐),但理解人类是教育中最重要的目标。在下面的评论中,Matt Gaboury 推荐了《人类的普遍性》(我想他指的是唐纳德·布朗的那本书)。这本书绝对值得一读,并且理解——它与《细胞分子生物学》之类的领域书籍不同。

我喜欢 Ed Tufte 的“Envisioning Information”书籍:请全部阅读。

伯特兰·罗素 (Bertrand Russell) 的书仍然非常好,仅用于更深入地思考“这个和那个”(“西方哲学史”仍然很棒)。

多元视角是对抗人类信仰和创造宗教欲望的唯一途径,所以我目前最喜欢读的历史书是塔米姆·安萨里 (Tamim Ansary) 的《命运被扰乱》(Destiny Disrupted)。他在阿富汗长大,16岁移居美国,能够从这个世界的视角,清晰地、富有启发性地撰写一部从穆罕默德时代开始的世界历史,而且无需任何特别的辩护。

注:我查阅了 《元对象协议的艺术》,它建议如果你不熟悉 CLOS(Common Lisp 对象系统),在阅读本书之前先了解一下。它推荐 Sonya Keene 撰写的《Common LISP 中的面向对象编程:CLOS 程序员指南》

在我沿着这条路走下去的过程中,我不断反思自己对计算机科学、软件工程的看法,以及我能为推动社会进步做些什么,让计算成为其中的一部分。我意识到凯的一个观点非常重要。如果我们要制造供人们使用的东西,我们就需要充分了解人,特别是人类系统如何与计算机系统交互,以及这种交互如何帮助人们改善他们在我们称之为“社会”的更大系统(这包括经济,但也应该包括许多其他社会层面)中的处境,更广泛地说,是在我们这个星球的系统中。这意味着我要花大量时间在计算机以外的其他事情上。根据我的经验,我可以告诉你,这是一种奇怪的感觉,因为我觉得我 应该花更多时间在技术主题上,因为这是我过去所做的,也是我职业的拿手好戏。我希望这成为我思考的一部分,而不是我吃的和睡的。

相关材料:

计算机科学的必要要素

2019 年 2 月 9 日编辑:我强烈建议大家观看 1985 年詹姆斯·伯克主演的电视连续剧 《宇宙改变之日》第 10 集,名为《无尽世界》。

艾伦凯 (Alan Kay) 最初撰写的主题是为了回答有关阅读书籍的问题,但我认为我应该将其包括在内,因为这是我见过的对科学认识论最清晰的介绍。

在之前的一篇题为 《艾伦·凯:重新思考计算机科学教育》的文章中,我引用了凯的一篇演讲,其中他谈到了我们大脑中的“侵蚀沟壑”,即它们如何引导“水”(思想、观念)流向特定的方向。伯克对这些思维沟壑进行了精彩的阐述,他解释说,它们是我们大脑运作的自然组成部分,无法摆脱。其次,他指出,它们是我们理解任何事物的唯一途径。因此,我们的想法并非要拒绝这些沟壑,而是要意识到它们的存在,并掌握走出一条沟壑、进入另一条沟壑的技巧。

我希望人们从伯克的话语中汲取的启示是:虽然你无法真正确定任何事物,但这并不意味着你不能从不确定性中汲取有用、可靠且有益于世事的知识。这正是我们现代科学和现代社会的精髓所在。这也是我们能够如此生活,并迈向更美好社会的原因。我还要补充一点,拒绝这种观念就是拒绝现代性,以及任何值得拥有的未来。

34年后回想起来,这一集的结尾令人瞩目,因为他探讨了计算机将对我们称之为“社会”的社会结构产生的影响;以及它在认识论和政治层面上的含义,我认为这非常准确。在历史的这个时刻,他对此的评价比我更积极,尽管他的分析中夹杂着对未来的某种不确定性(在当时),这在我们现在看来值得深思。

这是我撰写的“面包屑”系列文章之一。想查看更多类似文章,请访问“面包屑”页面。

Comments