作者 | 《新程序员》编辑部
出品 | CSDN(ID:CSDNnews)
Thomas E. Kurtz, 1928–2024
10 PRINT "深切悼念 Thomas E. Kurtz"
20 PRINT "他让编程不再是少数人的专利"
30 PRINT "他的精神永远活在每一个因 BASIC 走进编程世界的人心中"
40 LET memories = memories + 1
50 GOTO 30
这段简单的 BASIC 代码,是一位程序员在听闻 Thomas E. Kurtz 离世消息后写下的。对于熟悉 BASIC 的人来说,这短短几行代码包含着深深的敬意——每一次循环都让我们对这位计算机教育先驱的思念更深一层。
2024 年 11 月 12 日,在新罕布什尔州黎巴嫩的一家临终关怀中心,Thomas E. Kurtz 教授与世长辞,享年 96 岁。他的离去让整个计算机界为之动容,因为他不仅是 BASIC 语言的共同发明人,更是推动计算机教育民主化的先驱者。
消息传出后,互联网社区的追思如潮水般涌来。在 Hacker News 等技术社区,无数程序员自发分享起他们与 BASIC 的故事。这些故事串联起整整一代人的青春记忆,见证了个人计算机时代的黎明。
“1970 年,我才 13 岁,第一次在学校的 Model 33 电传打字机前坐下,通过学区的 HP-2000 分时系统开始了编程之旅。”一位用户回忆道,“这段经历如此深刻地影响了我,以至于后来我专门选择去了达特茅斯大学就读。”
在当时,能接触到计算机是一件极其难得的事情,拥有编程技能更是让年轻人在升学和求职时脱颖而出。
另一位程序员分享了他 1976 年的启蒙时刻:“那年我 15 岁,和父亲一起去参加商品展览会。在 IBM 展台,一位工作人员邀请我玩月球着陆游戏,那是在 IBM 5100 上运行的。当我好奇地问父亲屏幕上滚动的字符去了哪里时,因为父亲对技术并不了解,他让 IBM 工程师来为我解释。就在那一刻,我知道这就是我想要做的事情!我就在那里写下了人生中的第一行 BASIC 代码。”
到了 1980 年代,随着 Apple II、Commodore 64、TRS-80 等家用电脑的普及,BASIC 真正走入寻常百姓家。一位来自印度班加罗尔的程序员记得他 12 岁时的趣事:“那是 1986 年,我用一台 386 电脑开启了编程生涯。每次我都要插入 5.25 英寸软盘,启动到 command.com,然后进入 GWBASIC。我最喜欢用 BASIC 的 SOUND 命令来'骚扰'朋友和家人,用「SOUND 2000+i, j」这样的命令来控制频率和持续时间,甚至能控制音量。这些声音一旦开始播放,很多人都不知道该如何关掉它。”
几乎每个学习 BASIC 的人都写过这个经典的无限循环程序:
10 PRINT "HELLO"
20 GOTO 10
“1977 年,我在连接到 PDP-11/10 的 ASR33 终端上输入了这个程序,”一位资深工程师回忆道,“从那一刻起,我就被编程深深吸引住了。”
而评论区的其他开发者看到之后,纷纷打出另一串代码致敬:
10 PRINT "WE REMEMBER KURTZ"
20 GOTO 10
BASIC 不仅是一门编程语言,更是许多人职业生涯的起点。有人分享了自己的第一份工作经历——用 QBASIC 为核电站编写程序,这份工作后来发展成为他的终身事业。另一位印度程序员则回忆,他用 BASIC 开发的库存控制系统获得了实际的商业收入,那是他第一次靠编程赚到“真正的卢比(印度货币)”。这个系统后来成长为一个在全球范围内使用的商业软件。
还有一位用户在高中时用 BASIC 编写了一个钓鱼游戏,这个程序居然连续四年都在地区和州科技展上获奖,而且完全没有做任何改动。这段经历让他错过了两周的课程,但也许正是这样的经历坚定了他未来从事编程的决心。
Kurtz 的离世恰逢 BASIC 语言诞生 60 周年。1964 年 5 月 1 日,在达特茅斯学院的计算机实验室里,第一个 BASIC 程序开始运行。60 年后的今天,当我们回首这段历史,更能体会到 Kurtz 的远见卓识。
BASIC 语言的两位发明者:John Kemeny (图左) 和 Thomas Kurtz (图右)
达特茅斯学院在得知这一消息后发表了悼文:“Thomas E. Kurtz 教授不仅是一位杰出的教育家,更是一位富有远见的创新者。他与 John Kemeny 共同创造的 BASIC 语言,让计算机科学走出象牙塔,走向普通大众。他的贡献将永远铭刻在计算机科学的历史上。”
ACM(美国计算机协会)和 IEEE 计算机协会也发表联合声明,称赞 Kurtz 是“计算机教育的先驱者,他的工作改变了整整一代人学习编程的方式。” 声明特别提到,就在 2021 年,IEEE 还将 BASIC 的诞生地列入了里程碑遗址,与爱迪生发明电灯的门洛帕克实验室,以及马可尼发送第一次跨大西洋无线电传输的博洛尼亚山丘并列。
随着技术的发展,DOS 让位给了 Windows 3.1,命令行被图形界面取代,GWBASIC 也演变成了 QBASIC。许多程序员经历了从 BASIC 到 CLIPPER,再到 FOXPRO,最后是 MFC 和 Borland C++ 的技术演进过程。正如一位程序员在悼念文章的评论区写道:“一切都始于 BASIC。这是一门神奇的语言。如果没有那段经历,我的人生可能会完全不同。”
在 Kurtz 离世的消息传出后,True BASIC 公司的网站一度因访问量激增而无法访问。这个他在 1983 年与 Kemeny 共同创立的公司,至今仍在维护和发展 BASIC 语言。公司发言人表示:“我们失去了一位伟大的导师,但他的理想永远激励着我们继续前进。”
为了教育而生的语言
在计算机“平民化”的漫长进程中,总有一些人走在时代前列。
1928 年 2 月 22 日,Thomas E. Kurtz 出生在美国伊利诺伊州奥克帕克。23 年后的 1951 年,年轻的 Kurtz 在加州大学洛杉矶分校参加暑期课程时,第一次见到了一台正在运行的计算机 —— 这是由国家标准局创建的 SWAC(Standards Western Automatic Computer),是美国最早的电子计算机之一。
这台机器由传奇的计算机先驱、2013 年计算机历史博物馆院士 Harry Huskey 监督。对于当时已经在普林斯顿大学攻读数学研究生的 Kurtz 来说,这次偶遇彻底改变了他的人生轨迹。
1956 年,28 岁的 Kurtz 在著名统计学家 John Tukey 的指导下获得博士学位。同年,他加入了达特茅斯学院数学系,开始了他改变计算机历史的旅程。在这里,他遇到了同样怀抱理想的John Kemeny。
Kemeny 的经历颇为传奇。二战期间,这位匈牙利裔的犹太移民作为数学家参与了曼哈顿计划,直接与冯·诺依曼合作。1945 年初,他用笨重的 IBM 制表机完成了自己的工作。到了那年年底,第一批电子数字计算机投入使用,Kemeny 亲眼目睹了它们对曼哈顿计划的影响。第二年,他写下了人生的第一个程序。
两位数学家很快找到了共同语言。他们都深深明白计算机将如何改变世界,也都认识到一个严峻的问题:如何让普通人也能使用这项革命性的技术?于是,他们给自己设定了一个在当时看来近乎疯狂的目标:教会达特茅斯学院的每一位学生使用计算机。
通向这个目标的道路并非一帆风顺。在 50 年代末 60 年代初,Kemeny 和 Kurtz 开始探索如何让完全没有基础的学生接触编程。当时已有的编程语言如 FORTRAN、ALGOL 等都过于复杂。正如 Kurtz 自己后来回忆的:“我们研究了各种语言,都认为它们太复杂了。它们充满了标点符号规则,但这些规则的必要性并不明显,因此人们记不住。”
1962 年,他们进行了第一次重要尝试。当时,达特茅斯数学系配备了一台 LGP-30 计算机,这是一种相对便宜且功能一般的机器,只有 30 千字节的 RAM。在这台机器上,他们开发了一门名为“达特茅斯超简化编程实验”(Dartmouth Oversimplified Programming Experiment,简称DOPE)的语言。
DOPE 是一次大胆的实验。它删除了一切不必要的结构,将数据和语法简化到最低限度。每个变量都是浮点数,只有四个特殊变量(E、F、G、H)可以作为数组使用。它甚至不支持字符串处理,但这种极简主义恰恰证明了一个重要观点:编程语言可以变得足够简单,让非专业人士也能掌握。
Kemeny 在一本书的开头写道:“我当时有一个还在上高中的学生,名叫 Sidney Marshall。他在达特茅斯上微积分课。我让他用 DOPE 在 LGP-30 上做实验。DOPE 太原始了,没多大用,但它是 BASIC 的先驱。”
DOPE 只在一门数学课上使用了一个学期就退出了历史舞台,但它为 BASIC 的诞生奠定了重要基础。从中吸取的经验让两位 BASIC 之父认识到:一门真正面向初学者的语言,应该既保持简单性,又具备足够的实用功能。
如今,在达特茅斯的档案馆中,保存着一份珍贵的手稿,其中就记录了 DOPE 的设计思路。手稿的结尾写道:“编程不仅仅是一门技术,更是一种思维方式。” 这句话完美诠释了 Kurtz 的理念:编程不应该是少数精英的特权,而应该成为每个人认识世界、表达思想的工具。
在接下来的两年里,他们精心设计了 BASIC。新语言继承了 DOPE 的一些特点,比如简单的行号系统和基本的流程控制,但在此基础上增加了更多实用功能。他们特意选择使用普通英语单词作为命令,避免晦涩的技术术语。这种设计理念在当时是革命性的——它表明编程语言可以是友好的,可以说人话。
1964 年 5 月 1 日凌晨 4 点,历史性的一刻到来了。在达特茅斯学院的计算机实验室里,Kurtz 和他的学生在两台计算机终端上输入了第一个 BASIC 程序。与此同时,他们还发布了达特茅斯分时系统(DTSS),这使得多个用户可以同时访问计算机。这两项创新的结合彻底改变了计算机教育的面貌。
达特茅斯的学生很快就爱上了这门新语言。老师们将它融入课堂,学生们则乐于接受。随后的发展超出了所有人的预期—— BASIC 开始走出校园,进入千家万户,成为了个人计算机时代的重要推手。
毕生追求的使命
Thomas E. Kurtz 生平常说:“让计算机像图书馆的书籍一样自由可及,这不仅仅是一个技术目标,更是一个民主的理想。”
这句话完美概括了他毕生追求的使命。
在计算机科学的历史长河中,有一个永恒的困境:技术越发展,使用门槛似乎就越高。在上世纪 60 年代初期,这个问题尤为突出。当时的计算机是高度专业化的黑盒子,仅限于企业、政府和大学设施使用。编程需要深厚的数学知识,程序员要将指令转化为一页页打孔卡片上的数字代码。计算机就像是被重重围墙包围的堡垒,普通人根本无法靠近。
正是在这样的背景下,Kurtz 提出了一个在当时显得异常大胆的想法:为什么不能让所有人都来使用计算机呢?
“我们的目标从来不是培养专业的程序员,” 他在2002年的一次采访中解释道,“我们希望让每个人都能理解计算机是如何工作的,这样他们就能在自己的领域中更好地利用这个工具。”
这种「平民化」的理念在当时是革命性的,甚至是极为奢侈的。彼时的主流观点认为,编程语言应该追求技术的极致,而不是易用性。但 Kurtz 坚持认为:“编程语言的设计应该考虑人的因素。我们用很少的标点符号规则,使用英语单词,这样人们就能依靠自然的记忆力来学习。这就是为什么我们用'hello'而不是'logon',用'goodbye'而不是'logoff'。”
这种坚持源于他对教育本质的深刻理解。“一个心理学专业的学生为什么要学习编程?” 他经常这样反问,“因为计算机将会改变一切。但你又要怎么向这个学生解释未来的新机器呢?”
正是这样的思考,促使他在设计 BASIC 时抛弃了许多当时被认为「标准」的编程概念。Kurtz 还详细阐述过他对现代计算的忧虑:“现在的应用程序太复杂了,而且不断变化,除非你是专业人士或经常使用者,否则很难掌握。”
他举了一个令人深思的例子:“看看现代的文字处理软件,它是一个庞大的应用程序,设计用来做出版物,支持脚注、自动目录、自动索引等等。这完全是杀鸡用牛刀。99% 的人不需要这些功能。这就像说「我们要给每个人一辆车,那就给卡迪拉克豪华轿车吧,因为批量生产更便宜」。”
这种对简单性的追求,也体现在 Kurtz 对软件行业商业模式的批评上:“现在赚钱的方式,是每十八个月就推出一个充满错误的更新版本,这样十八个月后就可以声称修复了一堆 bug,诱使人们购买升级版。如果他们一开始就做出完美的产品,每个人只需要买一次就够了。”
在教育领域,Kurtz 始终保持着清醒的判断。当被问及现代编程教育时,他直言不讳:“在中学教授 Java 是疯狂的,这简直是疯了。它太复杂了。BASIC 的发明就是为了摆脱那些目的不明确的复杂性。”
对于互联网时代,Kurtz 的观点也颇具洞见。他认为互联网作为一种新的通信方式是“绝对棒极了”,但同时也警告说:“很多网站设计得非常糟糕,很难使用,或者只为最快的机器设计……在网站设计方面,现在存在大量垃圾。”
在 Kurtz 的理念中,通信比计算更重要。“我们从二十年的分时系统经验中认识到,通信是核心要素,而不是计算本身。” 这种前瞻性的观点让达特茅斯学院在早期就建立起了完善的网络基础设施。
“我们用计算机系统来共享程序,我们可以发送电子邮件,” 他回忆道,“我们知道通信才是关键。”
1983 年,为了应对日益增长的“街头 BASIC”(各种非标准的 BASIC 方言),Kurtz 与 Kemeny 共同创立了 True BASIC 公司。这个决定源于他们对 BASIC 发展方向的担忧。随后,在一群即将毕业的达特茅斯学生的建议下,他们试图先提供一个标准化的 BASIC 实现。这个版本基于达特茅斯的 BASIC 7,具有现代编程结构,如“IF..THEN..ELSE”和“DO..LOOP”等。
在 Kurtz 的指导下,True BASIC 并未局限于单一操作系统或计算机平台。今天,True BASIC 的版本仍然可以在 DOS、macOS、Windows、Unix 和 Linux 系统上运行。即使在 1993 年从达特茅斯退休后,Kurtz 依然继续开发和维护这个项目。
“我们的设计原则一再被违反。”他们在合著的 Back to BASIC 一书中写道。各种计算机厂商为了自己的硬件定制 BASIC,产生了大量不兼容的版本。而 True BASIC 试图提供一个标准化的、跨平台的 BASIC 实现。虽然这个商业尝试没有取得巨大成功,但 Kurtz 对此并不后悔。“1964 年的核心程序依然存在,” 他说,“我们只是在适应现代需求的同时保持教育焦点。”
在晚年,Kurtz 经常被问到对自己成就的评价。他的回答总是出人意料的谦逊:“我想我们失败了,因为我们试图让计算变得简单——这在今天的世界并没有实现。”
但这种“失败”或许更应该被理解为一个持续的挑战——在日益复杂的技术世界中保持简单性和可访问性的挑战。
即便在人工智能盛行的今天,Kurtz 的理念依然具有深远的启示意义。当我们听到 NVIDIA CEO 黄仁勋宣称编码技术最终将消亡,当我们看到像 Devin 这样的 AI 工具声称自己是自主的软件工程师,我们更应该记住 Kurtz 的警示:技术应该服务于人,而不是反其道之。
相关文献:
[1] https://computerhistory.org/blog/in-memoriam-thomas-e-kurtz-1928-2024/
[2] https://news.ycombinator.com/item?id=42141761
[3] https://www.dartmouth.edu/library/rauner/archives/oral_history/oh_interviews_pdf/Kurtz_Thomas.pdf
热门跟贴