说明性编程(2006)

2020-08-09 16:54:03

很简单,遇见肯·艾弗森改变了我的生活。我曾经是一名心理学家,但在1966年遇到肯和阿丁·法科夫之后,我知道我更愿意做什么,从那以后我就一直从事计算机工作,尽管我认为我确实获得了心理学家对人类用户的同情。

当我加入ibm时,该公司对在中小学使用计算机的前景充满热情,艾弗森也相信他正在设计的语言可以在教育中发挥巨大的作用,但肯的愿景与大多数ibm以及教育界大多数教师和管理人员的想象截然不同。艾弗森坚信,他的贡献,以及他的APL语言的贡献,就是记谱法;一种清晰地写数学和数学模型的方式。肯设想APL First-First-作为人类阅读、书写和理解的媒介;一种用于纸张或黑板或信封背面的语言。然后,在1966年,艾弗森的语言成为可以直接在机器上执行的语言。谢谢,拉里。

有了它,学生们将能够读、写或讨论一个算法,然后以最小的努力在机器上键入它,查看它的输出,跟踪它的执行情况,试验不同的论点,尝试不同的定义。约克敦高地有一个内部教育办公室,它经常要求教师通过参考一系列确定的主题和技能来描述他们提议教授的内容。但当我被邀请在那里教书时,他们似乎没有任何与肯的编程愿景相对应的东西。因此,我们在列表中添加了“说教编程”的描述。它可能不是最好的名字,但我们是这么称呼它的。说教式编程是编写既可由机器执行,又能向人类读者清楚说明其功能和工作方式的程序的艺术。

这与当时蓬勃发展的计算机辅助教学运动的主旨完全不同。CAI当时在IBM有一个庞大的团队,他试图开发能够自主运行的程序,并根据他们的行为给学生提供经验,让他们学习。学生不应该运行这个程序,特别是不应该深入查看它做了什么,或者它是如何做到的。为了描述他认为计算机应该被使用的截然不同的方式,肯恩创造了计算机的“开放使用”这个短语。我们当时写的其中一篇论文叫做“使用计算机进行计算”,你可能会认为这是一个愚蠢的标题,但这并不是CAI中每个人都在做的事情。

当IBM意大利公司派我们三名研究人员到约克敦高地研究CAI时,Kensuccess成功地劫持了他们的使命,他们成了我们的合作者,不是CAI,而是他们所谓的l‘USO perto del paratore,或类似的东西。(请原谅我的意大利语。)。

Ken在学校和大学多次露面,解释他认为学生可以而且应该使用计算机,特别是他们如何使用APL立即开始使用。在其中的一些客人体验中,我担任了他的助手,我感觉有点像罗宾要背蝙蝠侠的包。但是,听着肯做这些示范,我惊叹于他说话的方式看起来既自然又自然。尤其是我喜欢从容不迫地处理观众提问的方式。他似乎无穷无尽地用简洁的例子和恰当的笑话来回答他们的问题。直到我多次听完这些报告后,我才开始理解他是如何做到这一点的。他脑子里有一大堆例子、笑话、格言和故事,但他把它们保留了下来。他没有提供给他们。他一直等到听众的问题碰巧引起了其中一个人的注意,然后他突然说出了这个问题。这听起来就像他当时在回答提问者的问题时想到的一样。

嗯,人们不会相信写一个程序本身就是一种可读的解释,除非有一些这一流派的例子。所以,当艾弗森被任命为IBM研究员时,IBM为他提供了资金,用于他自己选择的项目。他没有建立自己的员工队伍,而是用他的预算从一系列学科引进了客座教师和教授。他们的想法是让他们开始编写APL程序,作为各自领域的解释。他希望他们在与他共度两三个月后回到家乡的机构时能继续前进。事实上,他们中的许多人都这样做了。我的工作变成了寻找这类事情的较低级别的入门例子。肯鼓励我与天文学研究生约翰·索斯滕森(John Thorstensen)合作一个名为“星图”的项目。这个想法是为了解释恒星和行星在天空中的运动,并通过编写程序来做到这一点,这些程序清楚地说明了描述它们运动的简单公式。嗯,我们做了这个,它运行了,我们打印了它,但是p

他不只是欣赏精简成几个字,他还想把这几个字放在很小的篇幅里。他为他的APL vade mecum感到非常自豪,这是一个不比一张信用卡大的完整的APL参考。

大家都知道,在APL开发的早期,它的发烧友是如此强大,以至于他们常常可以用一条语句表达整个过程。很快就出现了竞赛,看谁能找到一种以前被认为需要很多行的算法的单行版本。有时这会改善清晰度,有时会产生相反的效果,简洁性胜过可读性。所谓可读性,我的意思是你觉得读起来很舒服,而不仅仅是你最终能够追踪到它所说的话。简明扼要的陈述是否可读在很大程度上取决于你的背景和经验。同样让老一辈人高兴的表情,也能使新手感到迷惑、震惊和反感。不幸的是,我不得不说,APL的狂热者,以及它后来转世为J的狂热者,继续冲击着壮丽的新高度,但他们不再非常努力地与新手交谈。他们把我们曾经试图解决的群众抛在了脑后。

所以,如果我试着总结一下,我会庆祝我个人为能够参与这个了不起的项目而感到的喜悦,同时也会庆祝我的痛苦,还有很多事情没有实现,还有很多事情要做。

几年前,我参加了旧金山莫斯科内中心的一个计算机大会。我从自动扶梯的顶部向下看去,看到了热切而忙碌的人群。各个年龄段的人都兴奋地蜂拥而至,观看最新的产品,聆听史蒂夫·乔布斯的最新言论。我被刺伤了,因为我意识到这就是我所想的APL将会是什么样子。肯·艾弗森(Ken Iverson)的梦想激起了我的热情,他希望创造出一些革命性的东西,不仅为少数奉献者和专家,而且也为USAS的所有其他人。那部分还没有真正发生。

*随后对旧文件的检查显示,我们实际上称之为“expositoryProgramming”,而不是“说教编程”。