球拍有25年的历史了

2020-05-10 22:22:08

POPL过去是从周一到周三中午的事情。科马克·弗拉纳根(Cormac Flanagan)在那里发表了他未来的论文(关于如何消除隐含触摸操作的静态分析;还有臭名昭著的费莱森-瓦德勒(Felleisen-Wadler)论文)。星期三晚上,科马克和我要飞回休斯顿。在返回的航班上,科马克问了一个看似简单的问题:

我们整个航班都在从不同的角度讨论这个问题。我帮助我儿子的代数老师的经历,以及几年前帮我做代数作业的简陋保姆的经历,把我推向了“代数是函数式编程,我们可以通过让数学活起来,就能产生巨大的不同”的方向。我们到达的时间很晚,当我回家的时候,我发了一封电子邮件,说我们明天早上要开会。

我们都在科基·卡特赖特的办公室见面,因为它比我的大。我宣布,我想把理论抛在脑后,建立一门课程,一种编程语言,并支持使用函数式编程在K-12学校教授代数、更多的数学和编程。

施里拉姆当场接受了这个想法。“我一直想参与这样的项目。”布鲁斯很高兴有机会设计一种新的语言。科马克明确表示他会帮忙,但他真的很想辞职。马修很安静。科基后来驳斥了这个想法。“确保当它失败时,你还有回来的路。”

我们讨论了很长一段时间,得出了两个结论:博士生需要专注于学位论文的软件问题,以防我们失败。布鲁斯和我会专注于语言和课程。

布鲁斯和我开始设计一种叫做Jam的语言。它被认为是简单的,方案式的,没有括号,因为我们相信老师不会喜欢括号符号。同时,我们确信语法应该基本上是“插入式简单的”。但最重要的是,我们希望在这种语言中有类似图像的部分,以便求和、积分、索引等看起来尽可能像数学教科书。

同时,我们所有人都在讨论,我们将使用Scheme来构建这个软件生态系统。

几周后,我发现马修在这个周末开始“拼凑埃德先生”。我肯定他用的不是“鹅卵石”,而是接近的东西。而且可能比这个周末多花了一点时间。我非常确定的是,第一次按键受孕可能发生在那一天(与我对马太福音的理解交叉产生了我的记忆)。

我不记得不同的会议了。也许这是我第二次提出当前的用户界面-Emacs和命令行-是学生们最大的障碍。

无论如何,我开始着手建立一个用户友好的环境。当时看来,主要的问题是构建一个可以处理现代实体(如图片和活动对象)的GUI文本编辑器。我选择dwxWindows作为起点,因为它似乎是最有前途的跨平台GUI库,选择libschema作为SchemeImplementation,因为它很容易嵌入。我认为文本编辑器最难的部分是让它运行得足够快,所以我用C++编写了这一部分。

这个节目被称为“艾德先生”,因为它主要是一名编辑。名字“ed”已经被取走了。在前面加一个字母得到的单词中,无论出于什么原因,只有“red”是有吸引力的,但这个名字也被采用了(作为“受限ed”)。再加一个字母就到了“mred”。我喜欢“先生”这个词,也不介意它已经是会说话的马的名字了。

尽管编辑器核心是用C++编写的,但我至少从小组那里了解到或有足够的指导,以便在环境的其余实现中致力于Scheme。因此,libschema不仅成为运行学生程序的工具,而且成为实现GUI本身的语言。为了实现这一点,我开始更改libschema:添加支持扩展OFC++类的内置对象系统,将编译添加到AST而不是直接解释S表达式,等等。几个月后,我对实现的这一部分有了足够的关注,可以将其作为单独的部分。我称它为Ms Scheme&34;,但自从Ms&34;似乎把它拼写为";MzScheme&34;时,似乎太过强烈地暗示了";microsoft";的意思,所以我把它命名为";Ms Scheme&34;,但因为它似乎太过强烈地暗示了";Microsoft";。(大约在2001年,我们开始使用伞形名称PLT Scheme,并且不再为子系统使用可爱的名称。PLT计划在2010年成为";球拍。)。

这就是为什么在gui-lib包中,HISTORY.txt最早的条目是“Version 0.7:1995年5月10日”,而在HISTORY.txt中,球拍集合中最早的条目是“Verion 0.27:1995年9月26日”。编辑排在第一位,语言有点像是事后才想到的。

当然,语言很快就主导了这个想法-如果不是日常工作的话,几年来的主要工作仍然是让跨平台的GUI和绘图工具包运行良好。鉴于该语言已成为该项目的主线,即使在1995年,也很容易看到本应是一个更好起点的呼应。但是结果还不错。

到了95年夏天,我已经设计了现在所知的设计收据的基本原理和几天的教材。我们聘请了四名教师和科基的一名博士生,通过为期一周的研讨会来测试这一材料。

在这一周里,马修演示了一个基于埃德先生的初级IDE。我印象深刻,在四位参与者身上试用了Ed先生,图片简单,应有尽有。虽然没有成功,但我们让前四位无辜的用户试用了我们的第一个教学环境。