我知道C是操作系统开发的标准编程语言,但出于好奇,我想知道它之前是什么。 C之前用于操作系统开发的主要编程语言是什么?
答案 0 :(得分:9)
在C用于Unix之前有很多系统(1969年......)。 Here's a sparse timeline.点击每个系统了解详情。大多数早期系统将在汇编程序中实现。一个值得注意的例外(未在时间线中列出)是1961年B5000的超前时间,其中一个O / S是用ALGOL编写的。
答案 1 :(得分:5)
在1970年的“冷战”期间,我们努力使用ALGOL 68的数据安全和并行处理功能来创建基于Secure/Capability的操作系统:
Cambridge CAP computer - 构成操作系统的所有程序都是用ALGOL 68C编写的,尽管许多其他密切相关的受保护程序 - 例如分页符 - 都是用BCPL编写的。 c.f. microsoft
Flex machine - 硬件是定制的和可编程的,带有操作系统,(模块化)编译器,编辑器,垃圾收集器和归档系统,全部用Algol 68RS编写。可以从Sourceforge:algol68toc下载从编译中下载的此Algol68RS的Linux端口。
/ *有趣的是,DRA's代数指定的抽象机器Ten15的部分仍然可用,也来自Sourceforge:TenDRA(对于minux)。 Ten15作为DRA编译器的中间语言,并发展为支持C和Ada。显然是尝试使用FreeBSD C编译器移植TenDRA / Unix * /
ICL VME - S3 programming language是operating system VME的实现语言。 S3基于ALGOL 68,但数据类型和运算符与ICL 2900 Series提供的数据类型和运算符一致。该操作系统仍然作为Linux VM使用,并且有大约100,000个用户。
苏联时代计算机Эльбрус-1 (Elbrus-1)和Эльбрус-2是使用高级语言uЭль-76 (AL-76)创建的,而不是传统的程序集。 uЭль-76类似于Algol-68,主要区别在于硬件级支持的uЭль-76中的动态绑定类型。 uЭль-76用于应用程序,作业控制,系统编程c.f. e2k-spec。
也许美国军方在某处做了类似的事情。任何人吗?
答案 2 :(得分:4)
有许多16位Forth系统,其中解释器和(相当原始的)OS层是用Forth编写的。
最初的Mac OS是用68k ASM和略微扩展的Pascal编写的。
ADA已用于编写多个操作系统。
但我猜想在C之前用于OS开发的主要语言是IBM 360汇编语言。
答案 3 :(得分:4)
Burroughs是最早使用汇编程序进行操作系统开发的人之一。他们选择了Algol的方言。
1965年,Multics(项目MAC,由ARPA资助)设计开始,PL / I被选中开发操作系统。在1969年,Multics在麻省理工学院开放使用,但是令人沮丧,贝尔实验室退出了MAC项目。 Ken Thompson,Dennis Ritchie,Doug McIlroy和J. F. Ossanna继续寻求圣杯和Unics(后来的Unix)开发。
答案 4 :(得分:3)
这取决于。例如Amiga OS最初是在BCPL中编写的,您可以想象许多古老的操作系统都是用纯汇编语言编写的。
CP / M(这是MS-DOS的前身)是用PL / M编写的,但出于性能原因,MS-DOS是用汇编语言编写的。以下是MS-DOS上的内容:http://www.patersontech.com/Dos/Byte/InsideDos.htm(编辑,不知道我在哪里拿起这个Fortran垃圾。)
答案 5 :(得分:3)
操作系统“希望”用汇编语言编写。如果您从头开始,一旦完成了中断例程,您就可以继续前进,而不是使用高级语言界面。
此外,装配工喜欢进化。一旦覆盖了指定的指令集,就可以方便地为有多种用途的指令添加别名。接下来是伪指令,可以为一些机器指令添加别名。然后很高兴有一个可扩展的工具来编写宏子程序,生成看起来像指令的任意代码段。 (与C宏不同,这通常可以允许流控制和类似脚本的编程。)然后,有一些范围规则来确保标识符仅用于特定的上下文。
一点一滴,语言不断发展。 C没有突然出现。之前是一代或两代语言(Algol, BCPL)从高级汇编程序演变而来。许多特定于平台的汇编语言实际上相当不错。 IBM仍然是一个平均汇编程序。 (当然,在那之前不是那么好的装配工,之前是打卡和拨动开关。)
最近,GNU as
通过相对原始的方式给汇编带来了一些坏名声。但是,不要相信恐吓战术。