是否仍然可以在 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 机器上做的。
- 获取 SIMH,使用
aptitude install simh
或您正在使用的任何东西。
- 获取上面的 tarball 并解压。
- 解压其中的
utils-1.1.8.tar.gz
tarball 并构建 txt2bcd
;
- 将
txt2bcd
放在你的 PATH
; 的某处
- 利润。
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(一些来自我的原始评论):
- a listing of Lisp 1.5 for (I presume) the IBM 7094);
- an IBM 704 emulator for Windows如果你想更进一步;
- SIMH software kits list lists Lisp for the PDP-1, which is what is described here而且还很早。
我在网上找到的所有资源都是针对 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 机器上做的。
- 获取 SIMH,使用
aptitude install simh
或您正在使用的任何东西。 - 获取上面的 tarball 并解压。
- 解压其中的
utils-1.1.8.tar.gz
tarball 并构建txt2bcd
; - 将
txt2bcd
放在你的PATH
; 的某处
- 利润。
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(一些来自我的原始评论):
- a listing of Lisp 1.5 for (I presume) the IBM 7094);
- an IBM 704 emulator for Windows如果你想更进一步;
- SIMH software kits list lists Lisp for the PDP-1, which is what is described here而且还很早。