我先科普一下我整理的一些历史 (我无视了很多计算机牌子和语言,全都挤进去就眼花缭乱了):
1822 年,Charles Babbage 研发差分机(自动化算术)。英国政府赞助。
1832 年,差分机只能完成 1/7。
1837 年,Charles Babbage 研发出一个电脑, Mechanical computer (Analytical Engine), 不过还是未完成。
1842 年,Ada Lovelace 数学家帮忙 Charles Babbage, 她的笔记被公认为是第一个计算机程序。
1911 年,Marchant calculator 被私人公司研发。
1935-1938 年,德国人 Konrad Zuse 自己研发出 mechanical calculator Z1。
1936 年,苏联开发出水流积算器(Water Integrator), 可运算 non-homogeneous differential equations。
1940 年,Konrad Zuse 展出 Z2 。
1941 年,Konrad Zuse 展出德国政府赞助的可编程的通用型计算机 Z3 。
1942 年,Konrad Zuse 开始研发 Z4。
1943 年,美军赞助宾夕法尼亚大学团队开发 ENIAC 计算机。Z1 被轰炸。
1945 年,Z4 附近地区被敌军轰炸而停滞。1949 年才继续研发出来。
1946 年,trackball 为了雷达系统开发出来。ENIAC 开发完成。
1948 年,苏联 20 人团队开发 MESM 可编程通用型电脑。1950 年开发完成。
1949 年,Moniac 液态 Analog computer 被纽西兰人 William Phillips 开发用来预测英国经济。英国原子能科学研究院 (AERE) 开始开发 Harwell computer。
1951 年,Harwell computer 开发完成。1957 年从哈韦尔搬家到比赛赢家胡弗汉顿大学。改名为 WITCH。1933 年捐去伯明翰博物馆。 2012 年在英国国家计算机博物馆(TNMOC) 重启。
1953 年,IBM 的 John Backus 为了 IBM 701 大型计算机开发了第一个高级程序语言 Speedcoding。之后John Backus 团队为了 IBM 704 开始开发 FORTRAN 语言。
1954 年,日本推出继电器计算机 FACOM 100。
1955 年,美国海军 Whirlwind Project 在 MIT 开发了可在屏幕画图的 Light Pen。MIT 研发 Tx-0 (Transistorized Experimental computer zero) 电脑。
1956 年,兰德公司和卡内基梅隆大学开发出 Information Processing Language (IPL), 第一个 AI 程序语言。
1957 年,哈佛 Kenneth E. Iverson 已着手开发 APL 语言(1962 年在 A Programming Language 一书公开)。
1958 年,MIT John McCarthy 研发出 Lisp 语言。John Backus 用 Backus–Naur form 帮助苏黎世联邦理工学院开发出 ALGOL 语言 (即 ALGOL 58)。
1959 年,Lisp 推出 GC (Garbage Collection) 概念。CODASYL 联盟推出 COBOL (common business-oriented language) 语言。Digital Equipment Corporation(DEC)基于 Tx-0 研发 PDP-1。
1960 年,在巴黎推出 ALGOL 60。
1962 年,DEC 推出 PDP-4。MIT 设计,DEC 和 Spear推出的第一台迷你电脑 (12-bit) LINC (命名来源于 MIT Lincoln Laboratory)。
1963 年,DEC 推出 (12-bit) PDP-5 和 (36-bit) PDP-6。MIT Lincoln TX-2 电脑的一个叫 Sketchpad 程序有 light pen 画图功能。 ESR 教育公司推出 5 美金的玩具型电脑 Digi-Comp I。剑桥和伦敦大学联手基于 ALGOL 60 开发出 CPL (Combined Programming Language) 语言。
1964 年,DEC 推出 PDP-7。General Electric, Bell Labs, MIT 联手计划开发 Multics 系统。 IBM 开发了 PL/I 语言 (Programming Language One)。达特茅斯学院 Kemeny & Kurtz 开发了 BASIC 语言。
1965 年,DEC 推出热销的商用 12-bit 电脑 PDP-8。
1966 年,基于 ALGOL 60 的 ALGOL W 语言面世。
1967 年,剑桥教授 Martin Richards 基于 CPL 开发出 BCPL (Basic Combined Programming Language) 语言。
1968 年,德国 Telefunken 公司开发了 ball-based mouse。Mouse 出现在斯坦福研究所开发的 NLS 可点击超链接功能的系统。几所大学合作的基于 PL/I 的 XPL 语言出现,用来学习开发编译器。
1969 年,Multics 的几个研究员放弃 Multics 而专帮 Bell Labs 重新开发新的 OS 叫 UNIX。Ken Thompson 在 PDP-7 以汇编开发了 UNIX 系统(命名来源: Multics -> Unics -> Unix)。
1970 年,UNIX 1 从 PDP-7 移植到 PDP-11/20。Niklaus Wirth 基于 ALGOL W 开发出 Pascal 语言。
1971 年,出版 Unix 手册, 已有 mail, cp, su 命令, 在 Thompson shell 执行。
1972 年,UNIX 2 在十台电脑安装。有了 echo 命令和 c 编译器。Thompson 参考 BCPL 研发出 B 语言, 不过用在 PDP-11 有问题。Dennis Rithcie 根据 B+types 开发出新的 C 语言。UNIX 3 推广 C 语言。同年 UNIX 4 从汇编语言大量改成 C 语言。Paul Allen 和 Bill Gates 成立 Traf-O-Data 公司。
1973 年,Mouse 不再停留在只点击链接, Xerox PARC 推出了以 Mouse+GUI 为主要界面的 Xerox Alto 电脑。Digital Research 的 Gary Kildall 帮 Intel 研发 PL/M (Programming Language for Microcomputers)语言。
1974 年, UNIX 5 大量发出教育 license。有了 dd, find 命令。32-bit OS/32 系统的 Interdata 7/32 推出。
1975 年,两个 Berkeley 毕业大学生 Bill Joy 和 Chuck Haley 接触 UNIX 其中一个开发者 Ken Thompson 带来的 UNIX 6 和 Pascal, 且改进了编辑器,称为 ex 。Bill Gates 和 Paul Allen 看到 Altair 报道, 就联络 Altair。 在 PDP-10 30 天内完成 Altair BASIC 翻译器。Allen 下机前才完成 bootstrap 程序。同年 "Micro-Soft" 成立,其基于 CP/M 系统(OS 基于 PL/M 语言) 的 Altair 8800 电脑推出。
1976 年,Steve Jobs 推出 Steve Wozniak 一手设计的 Apple 1 电脑, 用 BASIC 编译。Bell labs 的 Stephen Bourne 开始开发 Bourne Shell。
1977 年,Bill Joy 编译了和 UNIX 类似的 BSD 系统。商业化的 Unix 6 有了 ratfor 和 bc 语言。Commodore 国际推出 Commodore BASIC 系统的 Commodore PET 电脑。 DEC 推出流行的 32-bit 电脑 VAX-11/780。 UNIX 移植在 Interdata 7/32 和 Interdata 8/32。
1978 年,苹果计划 Apple Lisa (有 GUI 的)电脑。 UNIX 7 把 Thompson shell 换成了 Bourne Shell, 有了 sed 和 awk 命令。 Bell Labs 卖 UNIX 7 license 给 Mircosoft。Dennis Rithcie 和 Brian Kernighan (两人简称 K&R) 出版了著名的 C 语言书第一版。Bill Joy 推出了基于 UNIX 6 的 1BSD。
1979 年,UNIX 移植在 DEC VAX, 成为 UNIX/32V。Bill Joy 五月推出 2BSD, 有了 vi 和 C shell。UNIX/32V 工具+2BSD 工具+虚拟内存(大改)内核的 3BSD 在年尾推出。 生产 CP/M 硬件的 Novell 公司成立。
1980 年,Mircosoft 推出 UNIX 7 license 的 Xenix 系统, 卖给 IBM/Intel/Tandy/Siemens (Siemens 改 Xenix 成 SINIX) 等 OEMs 公司。英国推出 Sinclair BASIC 系统的 Sinclair ZX80 电脑。Commodore VIC-20 推出。
1981 年,Bill Gates 在 COMDEX 展览会发掘了IBM 电脑的 GUI 。Sinclair ZX 81 推出。
1982 年,大杂烩(PWB/UNIX 2.0, CB UNIX 3.0, UNIX/TS 3.0.1, UNIX/32V 混在一起) UNIX System III 系统面世。Sinclair ZX Spectrum 推出。
1983 年,著名的商用 UNIX System V ( SysV) 系统面世。MIT 的 Richard Stallman 开展了 GNU Project,专门开发免费 license 的 UNIX-like(很像 UNIX 但又不是 UNIX,GNU 也是 GNU's Not Unix 的缩写) 工具。Apple Lisa 发布。4.2 BSD 推出。SunOS 曾一度融合 SysV 和 4.2 BSD。Anders Hejlsberg 在 Borland 幂下开发 Turbo Pascal 和 Delphi 两个IDE (之后在微软带队开发了 .Net, C#, TypeScript)。Novell 开发网络系统 NetWare。
1984 年,Sinclair QDOS 系统的 Sinclair QL 推出。Linus Torvalds 也用过 QL, 还写了自己的汇编器和编辑器。他 11 岁就接触日本推出的 Commodore VIC-20 电脑了 。
1985 年,卡内基·梅隆大学的人,基于 4.2BSD 开发了 Mach 系统微内核。Steve Jobs 的 NeXTSTEP 就是基于 Mach 系统内核, 多年后成为了 Mac OS。 IBM 和 Microsoft 开始开发 OS/2。
1986 年,4.3BSD 推出, 其 TCP/IP stack 影响力甚大。
1987 年,一个大学教授开发了 MINIX OS 方便给学生学习。OS/2 开发出来了。AT&T (Bell labs 母公司)和 Sun 公司融合三巨头系统 BSD + SysV + Xenix, 称为 System V Release 4 (SVR4)。然后改名为 Solaris 2。
1988 年,K&R 改成 ANSI 标准的 C 语言书出版。
1989 年,为了移除 AT&T licence,BSD 推出 BSD license 的 Networking Release 1 (Net/1) 系统。
1990 年,GNU 要开发自家的 GNU Hurd 系统内核(也是参考 Mach)代替 UNIX。
1991 年,几乎砍掉所有 AT&T 工具的 Net/2 发行。几个月后,芬兰大学生 Linus Torvalds 不爽 MINIX 教育-only license ,在 MINIX 平台写了 Linux 系统内核, 在网上分享, Linux 大量安装了 GNU 的工具,所以 Richard Stallman 坚持人们叫 Linux 为 GNU/Linux 比较公平。随着 GNU GPL license 的 Linux 面世后, GNU Hurd 内核变成开发停滞。
1992 年,Berkeley Software Design (BSDi) 乱拿 Net/2 当成 BSD/386 来卖后,被 AT&T 控诉。
1993 年,Novell 从 AT&T 买下了 Unix System Laboratories 分部。继承者 FreeBSD, NetBSD 在官司时已相续拔剑而出。
1994 年,BSD 和 Novell 和解后已失去开源开发者的信心, 阻挡 Linux 已无可能。Solaris 2.4 发行。
1995 年,Berkeley 大学最后一个版本 4.4BSD-Lite Release 2 发行。
1996 年, OpenBSD 推出。
2004 年, DragonFly BSD 推出。
2009 年,NetWare v6.5 最后一版。
2015 年,Solaris 11.3 最后一版。
C 语言源自 B, B 源自 BCPL,可 B 的命名就连 Dennis Ritchie 本人都不懂正确答案... 所以不存在 A 语言, 就算存在也是在 Ken Thompson 的脑子里不曾公开。也别随意脑补 Algol,如果 Algol 是 A 语言,那么 CPL 就是 B 语言,BCPL 就是 C 语言, B 就是 D 语言了, 把 CPL 和 BCPL 直接抹去这不大好意思吧 ? 要说脑补真的没完没了,比如 "A"T&T 开发的 Multics 东西就是 A 语言, "B"ell labs 开发的就是 B 语言, 亦或 Ken Thompson 女神是 "A"da Lovelace 。历史文献并没有 A 语言的说法。当然你可以说 APL 是 A programming language 的缩写,但实际上是 APL 语言, 而不是 A 语言;即便是也不是你想像的那种 A-B-C 直属关系。
The Development of the C Language*:Challenged by McIlroy's feat in reproducing TMG, Thompson decided that Unix—possibly it had not even been named yet—needed a system programming language. After a rapidly scuttled attempt at Fortran, he created instead a language of his own, which he called B. B can be thought of as C without types; more accurately, it is BCPL squeezed into 8K bytes of memory and filtered through Thompson's brain. Its name most probably represents a contraction of BCPL, though an alternate theory holds that it derives from Bon [Thompson 69], an unrelated language created by Thompson during the Multics days. Bon in turn was named either after his wife Bonnie, or (according to an encyclopedia quotation in its manual), after a religion whose rituals involve the murmuring of magic formulas. 个人觉得比较合理的是 BCPL 和 Bonnie 的重叠字就是 B。 当然我也只是脑补 :p
不过别忘了 Ken Thompson 用人名命名产品的习惯有迹可循,比如第一代 Unix shell 命名为 Thompson Shell。
所以 Ken Thompson 就是一贯浪漫程序员性格,把喜欢的人名内置在产品, 如 Steve Jobs 命名 Lisa 电脑没两样。口虽不说,但产品名还是很诚实的。
|