【创世纪厅】
1963年,JOSS正式问世。由RAND Corporation主导开发,面向MAINFRAME平台用户。
首个交互式数学编程语言,让非程序员也能轻松计算。
技术特色:编程语言、交互式、数学计算。
影响力评估:技术维度 7/10,商业维度 3/10,文化维度 5/10,用户维度 4/10。
作为创世纪厅的经典代表,JOSS在软件发展史上留下了深刻的印记。
首个交互式数学编程语言,让非程序员也能轻松计算。
【创世纪厅】
1963年,JOSS正式问世。由RAND Corporation主导开发,面向MAINFRAME平台用户。
首个交互式数学编程语言,让非程序员也能轻松计算。
技术特色:编程语言、交互式、数学计算。
影响力评估:技术维度 7/10,商业维度 3/10,文化维度 5/10,用户维度 4/10。
作为创世纪厅的经典代表,JOSS在软件发展史上留下了深刻的印记。
1963年,当JOSS(Johnniac Open-Shop System)第一次在RAND公司的JOHNNIAC计算机上运行起来时,它或许没有意识到自己正在开启一个全新的时代。在那个计算机还被视为庞大、昂贵、需要专业操作员和穿孔卡片才能使用的“科学仪器”的年代,JOSS的诞生就像是在冰冷的钢铁巨人身上开了一扇窗——它让非程序员也能直接与计算机对话,用近乎自然语言的语法完成数学计算。这不仅是技术上的突破,更是一场关于“谁可以使用计算机”的民主化运动。
要理解JOSS的意义,我们必须先回到20世纪50年代末60年代初的技术环境。那时的计算机是真正的庞然大物:一台IBM 7090需要占据整个房间,耗电量惊人,且通常只有经过严格训练的编程人员才能操作。用户需要将程序写在编码纸上,交给穿孔员制作成穿孔卡片,然后排队等待操作员将卡片送入计算机。如果程序有错误,整个过程就要重来——一次简单的计算可能耗费数小时甚至数天。这种“批处理”模式让计算机成为少数专家的工具,而像RAND这样的研究机构,恰恰拥有大量需要计算支持的科学家、经济学家和工程师,他们中的许多人并不愿意或没有时间学习FORTRAN或ALGOL这样的高级语言。
RAND公司(Research ANd Development)本身就是一个独特的存在。作为美国空军的智库,它在冷战期间聚集了顶尖的数学家、物理学家、经济学家和社会科学家,从事系统分析、博弈论、运筹学等前沿研究。这里诞生了博弈论、蒙特卡洛方法、线性规划等影响深远的理论,而所有这些研究都需要大量的数值计算。RAND拥有一台名为JOHNNIAC的计算机——这个名字来自“John von Neumann Integrator and Automatic Computer”的缩写,以纪念计算机科学之父冯·诺依曼。JOHNNIAC于1953年投入使用,是当时最先进的计算机之一,但它的操作方式仍然遵循着批处理的传统。
JOSS的诞生与一个关键人物密不可分:RAND公司的数学家兼计算机科学家J.C.R. Licklider。不过,更准确地说,JOSS的直接创造者是RAND的员工Jules I. Schwartz、Clifford Shaw和他们的团队。Schwartz在1960年代初开始思考:如何让RAND的研究人员能够像使用计算尺一样方便地使用计算机?他观察到,许多科学家需要的并不是复杂的编程,而是快速进行交互式数学计算——输入公式,立即得到结果,然根据结果调整输入。这个想法与当时正在兴起的“分时系统”(time-sharing)概念不谋而合。
分时系统是1960年代初计算机科学最激动人心的创新之一。传统的批处理让计算机在一个时间段内只运行一个程序,而分时系统则让多个用户通过终端同时使用一台计算机,每个用户都感觉自己“独占”了机器。MIT的CTSS(兼容分时系统)在1961年首次实现这一概念,但JOSS的设计目标更为具体:它不仅要实现分时,还要提供一种极其简单的交互式语言,让用户无需学习任何编程概念就能上手。
JOSS的语法设计堪称极简主义的典范。用户通过电传打字机(teletype)输入命令,每条命令都以一个行号开始,类似于后来BASIC语言的风格。但JOSS的语法更接近自然语言:要计算一个表达式,只需直接输入“2+3”,计算机就会立即打印出“5”。变量不需要声明,直接使用字母表示,比如“SET X = 5”。循环可以用“FOR I = 1(1)10”这样的格式,条件判断则是“IF X > 0”后面跟一个操作。整个语言只有大约20个关键字,没有复杂的类型系统,没有文件操作(所有数据都在内存中),甚至没有字符串处理——它是为了纯粹的数学计算而生。
这种简洁性并非偶然。Schwartz和他的团队在设计JOSS时遵循了一条核心原则:用户应该能够在五分钟内学会基本操作。他们甚至编写了一本只有几页的操作手册,上面用简单的英语和示例解释了所有命令。相比之下,当时的FORTRAN手册往往厚达数百页。JOSS的交互性也极其重要:用户输入一个命令,计算机立即执行并返回结果,如果出错,错误信息会直接打印在电传打字机的纸上,用户可以立刻修改。这种“即时反馈”的体验,对于习惯了批处理等待的研究人员来说,简直如同魔法。
JOSS的运行环境也充满了时代特色。用户通过电传打字机与JOHNNIAC连接,这些打字机通常是IBM 1050或类似设备,每分钟只能打印15个字符左右。计算结果是逐行打印在卷纸上的,用户需要像阅读电报一样查看输出。由于电传打字机的噪音很大,RAND专门为JOSS设立了一个独立的房间,里面排列着多台终端,研究人员可以随时进入房间,坐在打字机前开始工作。这种“开放式商店”(Open Shop)模式,正是JOSS全称中“Open-Shop”的由来——它意味着计算资源对所有人开放,不需要预约或排队。
JOSS的正式版本在1963年推出后,迅速在RAND内部流行起来。经济学家用它进行线性规划计算,物理学家用它处理实验数据,工程师用它进行应力分析。一位RAND的资深研究员回忆说,JOSS让他的工作效率提高了十倍,因为他再也不需要等待批处理作业的返回。1965年,RAND甚至开始向其他机构提供JOSS的远程访问服务,用户通过电话线连接RAND的计算机,这在当时是一项非常超前的服务。据说,一些大学的教授甚至让学生通过JOSS完成作业,因为它“比计算尺更可靠,比FORTRAN更容易”。
然而,JOSS的辉煌时期并不长。1966年,JOHNNIAC计算机因老化问题被拆除,JOSS必须移植到新的硬件上。RAND选择了IBM 360/65,但移植过程并不顺利——JOSS的底层实现高度依赖于JOHNNIAC的硬件特性,包括它的内存管理方式和中断处理机制。经过几年的努力,JOSS在IBM 360上重新运行起来,但性能大不如前,用户数量也开始下降。与此同时,BASIC语言在1964年由John Kemeny和Thomas Kurtz在达特茅斯学院推出,它借鉴了JOSS的许多理念(行号、简单语法、交互式执行),但设计更为通用,支持字符串和文件操作,并且运行在更便宜的机器上。BASIC随着微型计算机的兴起而迅速普及,最终成为一代人的编程启蒙语言。
JOSS的商业化尝试也以失败告终。RAND作为一个非营利研究机构,没有将软件商业化的传统和动力。他们曾与一些公司洽谈过授权,但最终都没有达成协议。JOSS始终停留在学术研究和内部使用的范畴,没有像BASIC那样进入大众市场。1970年代后期,随着小型计算机和微型计算机的普及,JOSS逐渐被遗忘,只在计算机历史学家的论文中留下一些记载。
但JOSS的文化遗产远比它的商业命运更为深远。它是最早的交互式数学编程语言之一,直接影响了BASIC的设计。Kemeny和Kurtz在开发BASIC时,明确提到了JOSS的启发——尤其是它的行号结构和即时反馈模式。可以说,JOSS是BASIC的“精神祖先”。此外,JOSS的分时系统实现也为后来的分时操作系统提供了参考,RAND在JOSS项目上积累的终端管理和用户调度经验,后来被应用于更广泛的分时系统开发。
JOSS还开创了一种全新的软件设计哲学:让计算机适应人,而不是让人适应计算机。在当时的计算机文化中,用户需要学习机器语言、记住复杂的语法规则、忍受漫长的等待。JOSS打破了这种模式,它证明了一个简单、友好、交互式的系统可以极大地提高工作效率。这种“用户好”的理念,在1960年代是革命性的,它预见了后来个人电脑和图形用户界面的发展方向。
今天,当我们坐在笔记本电脑前,用Python或MATLAB进行交互式计算时,我们其实正在延续JOSS开创的传统。那些简单的“>>>”提示符、即时的计算结果、简洁的语法,都可以在JOSS中找到原型。JOSS就像是一位被遗忘的先驱,它没有获得商业上的成功,也没有成为流行文化的一部分,但它在一个关键的历史时刻,为所有后来者铺平了道路。
在RAND公司的档案室里,至今还保存着JOSS的原始文档和代码清单。那些泛黄的纸张上,用打字机打印着JOSS的语法规范和用户手册,字里行间透露出那个时代计算机科学家的理想主义:他们相信计算机应该成为每个人手中的工具,而不是少数专家的专利。JOSS或许没有实现这个理想,但它为这个理想提供了一次优雅而完整的实践,让后来的BASIC、Lisp、APL乃至Python都能站在它的肩膀上。
最终,JOSS的故事告诉我们:在科技史中,最伟大的创新往往不是那些最成功的产品,而是那些最早提出正确问题、开辟新路径的尝试。JOSS的问题就是:“如果计算机能像对话一样简单,世界会怎样?”半个多世纪后,我们仍然在回答这个问题。
对技术发展和工程实践的推动程度
对商业模式和市场格局的影响深度
在科技文化和社会层面的持久影响力
用户群体的广度和普及程度