是否仍然可以在 LISP 1/1.5 中编程?

Is it still possible to programme in LISP 1/1.5?

我在网上找到的所有资源都是针对 Common Lisp 的,即使我尝试专门搜索原始 LISP 资源也是如此。我怀疑 Common 可能更容易,但我认为从 Lisp 作为一种语言的历史开始尝试它可能会很有趣。

是的,事实上这很容易。 This person has a tarball which lets you run Lisp 1.5 on the SIMH emulator for the IBM 7094, which must have, I think, been the system Lisp 1.5 was ported to from the 704 (the 7094 is a transistor machine, the 704 was valve (tube)). Here 是诺曼·理查兹 (Norman Richards) 在 2015 年 3 月的 Clojure 聚会上发表的演讲中的幻灯片 link,他一定已经展示了所有这些工作原理。

例子

我是在 scratch Ubuntu 20.04 机器上做的。

  1. 获取 SIMH,使用 aptitude install simh 或您正在使用的任何东西。
  2. 获取上面的 tarball 并解压。
  3. 解压其中的 utils-1.1.8.tar.gz tarball 并构建 txt2bcd;
  4. txt2bcd 放在你的 PATH;
  5. 的某处
  6. 利润。

tarball 不可避免地包含一个阶乘程序,这里是它的抄本 运行ning:

ts$ i7094 lisptape.ini factorial.txt

IBM 7094 simulator V3.8-1
MTA: unit is read only
MTA: unit is read only
LPT: creating new file

HALT instruction, PC: 10524 (TRA 10523)
Goodbye
ts$ cat sys.log
             TEST  FACTORIAL



  THE TIME ( 0/ 0  000.0) HAS COME, THE WALRUS SAID, TO TALK OF MANY THI
NGS .....   -LEWIS CARROLL-
 EVALQUOTE OPERATOR AS OF 1 MARCH 1961.    INPUT LISTS NOW BEING READ.


  THE TIME ( 0/ 0  000.0) HAS COME, THE WALRUS SAID, TO TALK OF MANY THI
NGS .....   -LEWIS CARROLL-
  FUNCTION   EVALQUOTE   HAS BEEN ENTERED, ARGUMENTS..
 DEFINE

 (((FACTORIAL (LAMBDA (X) (COND ((EQUAL X 0) 1) (T (TIMES X (FACTORIAL (
SUB1 X)))))))))

 END OF EVALQUOTE, VALUE IS ..
 *TRUE*

  FUNCTION   EVALQUOTE   HAS BEEN ENTERED, ARGUMENTS..
 FACTORIAL

 (10)


 END OF EVALQUOTE, VALUE IS ..
 3628800



  THE TIME ( 0/ 0  000.0) HAS COME, THE WALRUS SAID, TO TALK OF MANY THI
NGS .....   -LEWIS CARROLL-
 END OF EVALQUOTE OPERATOR
             FIN      END OF LISP RUN

就是这么简单:我很惊讶,花了比这更长的时间试图让 MACLISP 达到 运行。我认为后来的系统更难,因为它们假定终端类型等等,因为有更多的交互性。

其他links

其他一些可能有用的 link(一些来自我的原始评论):