Guido van Rossum 访谈

作者:Phil Hughes

在加利福尼亚州蒙特雷市八月份举办的 O'Reilly 开源大会期间,《LJ》采访了 Python 编程语言的创建者 Guido van Rossum。本次采访的第一部分将刊登在 1999 年 12 月的《Linux Journal》杂志上。

在采访结束时,Guido 谈到一项新的努力,即让 Python 成为大学中非计算机科学专业的学生学习的编程语言。他似乎对这个项目非常兴奋,我们也很高兴能够在这里与您分享。

Guido:我有一件事真的想告诉你们——一个我们目前称之为 CP4E 的项目。我甚至都发不出它的音!而且它与 R2D2 和 C3PO 没有关系,尽管 Python 在 Industrial Light and Magic 和《星球大战》的粉丝中非常受欢迎。CP4E 代表“面向所有人的计算机编程”。我们正在努力争取 DARPA 为这个项目提供资金。我们相当肯定在未来两年内会获得一些资金。我们希望在未来五年内获得大量资金,那样的话我们将做更多的工作,并且我们还将邀请其他研究人员参与。

面向所有人的计算机编程的目标是什么?基本上有两个想法;一是,我们希望向尽可能多感兴趣的人教授编程——真正的编程,而不是 Excel 宏。另一个想法是,我们想为那些将进行少量编程的人制作真正好的编程工具。我们认为 Python 或非常接近 Python 的语言几乎是教授这类受众的理想语言。

我们有很多轶事证据表明情况确实如此。我认为到目前为止最好的证据来自 CMU 的 Alice Group,他们是真正喜欢 Python 的学术界人士。他们碰巧使用 Windows 作为他们的 Web 表单,但这主要是因为 Windows 是目前他们大多数学生正在使用的系统。他们使之可编程——一个虚拟现实系统。有一个用高度优化的 C++ 编写的渲染引擎,它直接与硬件对话——嗯,几乎是直接对话。所有的控制部分都是用 Python 编写的,因此您可以使用 Python 构建整个虚拟世界。如何填充模型和 3D 对象是另一回事。对象的实际设计是使用其他工具完成的。但是控制,3D 世界中的所有效果,都由 Python 脚本控制。

Alice 做了很多可用性研究。他们招募真实的的用户并告诉他们,“我们将教你一点编程。这是一只兔子,你可以使用命令来让兔子向前和向后移动。”他们试图了解哪种语法对那些以前从未编程过的人——来自人文科学领域的人——来说最有意义。这就像“大学新生”一样——绝对不是计算机科学系的人。他们组队并进行友好的比赛。在两周内,每个团队都使用这个系统制作了几分钟的动画或一个互动游戏。

他们已经确定了 Python 的两个缺点——所有这些语言,只有两个缺点!一是,显然,大小写敏感性是人们没有预料到的。这可能是因为他们都是 Windows 用户,而大小写敏感性在 Windows 中有点不寻常。在典型的数学中,小写字母 a 和大写字母 A 是不同的变量——你不会将它们混淆。另一方面,如果你要求一个普通人写下他们的用户名或他们的电子邮件地址,他们会全部用大写字母写,因为那是他们唯一能清晰书写的方式。所以,这只是从他们的观察中得出的结论,即他们用户犯的大多数错误都与大小写敏感性有关。他们已经学会了命令“move”,所以他们会输入带有大写字母“m”或全部大写字母的“move”。另一件事是一个真正的次要问题,Python 从 C 中借用了整数除法;因此,三除以四等于零——不好。但是,如果解决了这两个问题,Python 将成为理想的教学语言。

我们将与学校联系,最初是当地学校,这样我们就可以经常拜访。首先,我们将制作教学材料——一整套课程。目前还没有任何使用 Python 为以前没有编程经验的人开设的编程课程。有很多优秀的教程,但即使是 Learning Python 也假设您已经知道如何编程,并且您的基本问题是,“Python 中的函数是什么样的?Python 中的语义变量是什么?如何在 Python 中遍历数据数组?”它还假设您的问题不是“什么是函数?什么是变量?什么是名称?什么是字符串?常量和变量之间有什么区别?”因此,我们将编写一种非常不同的教程,重点关注这些内容,使用 Python 这种不会妨碍概念教学的语言。

如果你看看他们目前在高中使用什么——如果他们教编程的话——那是 C++!他们过去使用 Pascal,这是一种很好的教学语言,不幸的是,它在学校外已经完全绝迹了,所以我认为两年前他们改用了 C++,因为至少它具有现实世界的意义。

Phil:对于一个不知道如何编程的人来说,C++ 绝对是一个可怕的东西!

Guido:到目前为止我听到的老师都认为这是一场灾难!可能部分原因是他们自己对 C++ 也不是很了解,我不怪他们!这不是他们的工作。即使他们是计算机科学老师,他们也更可能是数学老师,同时也教计算机。

Phil:那肯定不会把它带到人文科学系!

Guido:是的!所以像 Python 这样的语言,实际上植根于教育语言,会做得更好。Python 很大程度上受到一种名为 ABC 的语言的启发;我在 80 年代早期与我的同事一起参与了 ABC 实现的设计。这是一种很棒的教学语言。Python 的历史源于我对该语言的挫败感,当时它没有被用于教学,而是用于日常的临时编程——但那是另一个故事了。Python 继承了很多使其非常简单、易于理解、易于记忆和易于学习的重点。它是一种非常适合入门教学的语言。我们对 CP4E 工作的这一方面充满希望。

另一方面,可能更令人兴奋的是工具。如果你看看典型的编程环境,无论是 Java、C++ 还是 Visual Basic,它们都极其复杂,因为它们的目标是需要许多不同功能的专业程序员。程序员可以应对复杂性,因为他们花了一些时间学习它,甚至可能对其进行了自定义,因此他们感觉自己拥有它,并且可以处理所有不同的面板、菜单和对话框。

Phil:有点像我使用 vi。我从 1983 年开始使用它,现在才开始感到舒适!

Guido:是的!可能几乎没有人可以教你关于 vi 的任何东西。对于我们试图在这里培训的那种业余程序员来说,他们对编程环境的需求非常不同。我的意思是,像旧的 Turbo Pascal 这样的东西可能更适合。所以,我实际上已经做了一些可能成为 Python 典型开发环境原型的东西,它基本上只是 Python 文本编辑器,可以对源代码进行着色和自动缩进。此外,它还将有一个交互式 shell,您可以在其中键入 Python 命令,它将使用相同的着色和缩进,并具有类浏览器和一些其他功能,包括一个半成品的调试器,它需要大量的工作才能变得可用。这可能是我们正在考虑的那种编程环境的开始。

我认为真正有趣的是程序分析工具。如果你有一个其他人用 Python 编写的大型程序,并且希望能够理解它,那么仅仅找到它在其中的位置就需要花费大量时间。我们希望我们可以制作一系列程序理解工具。这些工具可能无法理解程序,但它们 通过为您提供软件的路线图来帮助您理解它,让您专注于您感兴趣更改的部分。

我举一个例子,说明这种情况不太适用的地方是 Mozilla。如果人们真的可以更改 Mozilla 源代码,以便他们可以重新编译它以获得一个功能不同的 Netscape,那将是太好了。我对我在系统上使用的 Netscape 有很多抱怨。但我不会从 Mozilla 源代码重建它,因为我无法找到时间来深入研究源代码以真正修复错误,即使看起来一旦找到修复位置,一些问题应该很容易修复。因此,我们正在设计可以帮助您的工具,并且我们专注于没有经验的程序员的使用。这些工具将为他们提供大量的帮助,让他们深入了解现有代码,并帮助他们了解更改的后果。也就是说,你可以说,“好的,我现在有这段代码,我想进行这个更改。你告诉我这个变量在程序中的其他地方使用了哪些地方——依赖关系是什么,哪些代码正在使用这个函数。也许这个函数根本没有被使用!”就像在我们的 DNA 中一样,有大量的软件包含未使用的代码。没有人注意到它不再需要了,所以没有人费心将其删除。现在,一段代码看起来像是绘制字体的地方,但碰巧的是,另一个字体库已经取代了它的位置。

因此,如果我们获得 DARPA 的资助——这是 DARPA 未来探索的一部分——CP4E 将在未来五年内在 Python 世界引起很多轰动。

Phil:这听起来对我来说很酷。我教过编程,基本上,我发现如果人们学习 Basic 作为他们的第一语言,那么与他们从未学过编程语言相比,他们更难教。

Guido:Basic 几乎是你作为第一语言可以教的最糟糕的语言。

Phil:但是随着 Pascal 的消亡,没有其他语言了。也许像我这样的人仍然可以被雇用,因为学校无法再培养程序员了。

Guido:我只是在想:你可能有点太老了,但你一定知道所有退休的 Cobol 程序员的故事,他们现在正通过修复旧的 Y2K 问题成为百万富翁?你能想象到 2038 年附近对退休的 UNIX 黑客的需求吗?

Phil:是的,这是一样的!我告诉过人们,他们问我,“UNIX 是否符合 Y2K 标准?”我说,“完全没问题,但是到 2038 年我计划退休,因为那一年对于 UNIX 系统来说不会是好年景!”

感谢您告诉我关于 CP4E 的信息。关注它的发展应该会非常有趣。

加载 Disqus 评论