用什么语言编写操作系统(Windows)?

用于编写操作系统Windows)或引导CD的语言是什么?

引导装载程序通常用汇编语言编写,以及低级内核部分(如硬件驱动程序)。
内核本身可以用不同的语言编写,如Assembly,C或C ++。

也许你想看看奇点项目。

它来自微软的研究,今天如何建立一个操作系统。

在那里你可以找到很多论文,关于构建操作系统的概念。

奇异

操作系统可以用几乎任何语言编写,而且有很多操作系统都是用一大堆语言编写的。 只是几个例子:

  • Singularity是用Sing#写的,它是Spec#的一个超集,而它又是C#
  • House是用Haskell编写的
  • 所有的Lisp OS都是用Lisp编写的
  • 有几个用Smalltalk编写的Smalltalk操作系统
  • 许多嵌入式操作系统都是用Forth编写的
  • SharpOS和Cosmos是用C#
  • NewOS和JNode是用Java编写的
  • Ununumium过去主要是用Python编写的,但现在他们已经转移了重点,主要是用汇编编写的
  • 你可以争论JS / UX是否是一个操作系统,但它是用JavaScript编写的
  • 为了编写操作系统,明确地发明了modulea-2
  • Oberon也明确地被发明用于OS开发
  • 原来的MacOS是用帕斯卡写的
  • 原来的OS / 400是用modulea-2和PL / MI编写的
  • Eleanor McHugh在Ruby中编写操作系统有一些初步的想法
  • Windows NT内核主要用C语言编写,但是离内核越远,可能会有一些C ++甚至是C#

我很确定最早的Windows版本主要是在Pascal中编写的。 这就是为什么你仍然可以在旧文档和头文件中找到pascal调用约定的引用,尽管AFAIK这些约定只应用于16位Windows。

[ 编辑 – 我现在很确定我刚才被告知这是错的。 微软有理由使用我不记得的Pascal调用约定,但没有使用Pascal编码Windows(或大部分或任何其他)]。

现在,Windows可能是用多种语言编写的,尽管强调C和C ++。 例如,.NET的某些部分可能用C#编写,而这些日子很容易算作O / S组件。

同样,我敢打赌现代版本的Mac O / S中至少有一些Objective C组件。

有很多语言适合编写操作系统。 在利基领域,我敢肯定,你会发现Ada,modulea 2等等。

没有垃圾收集的命令式语言可能是最常见的,因为与硬件和汇编代码的接口相对简单。 但是,大多数功能语言都是不纯的。 如果你看起来够硬的话,那么Lisp的低级版本就可以使用了。 ML系列语言和Haskell可能已被用于操作系统,至少为了研究/学术目的。

事实上,在某些操作系统组件中,甚至找到一些Prolog,当然也有一些代码是使用定制的特定于领域的语言编写的。

现实世界的操作系统通常是一个非常大的软件系统。 即使是嵌入式操作系统也有相当的复杂性,例如,对于硬件不需要的选项,但是其他人却可以。 我从来没有一个工作过,但我敢打赌,为了得到这个工作,开发人员主要是实用主义者 – 使用他们有效的工作来完成工作。

那么问题是“什么是操作系统?” (捆绑的Internet Explorer计数?),但否则我相信Windows主要是C和C + +。