ChatGPT解决这个技术问题 Extra ChatGPT

Windows、Mac OS X 和 Linux 是用什么语言编写的?

我只是想知道谁知道 Windows、Mac OS X 和 Linux 是由什么编程语言组成的,以及操作系统的每个部分使用什么语言(即:内核、插件架构、GUI 组件等)。

我假设每种语言都有多种语言,显然我知道 Linux 内核是用 C 编写的。

我在这里完全猜测 Mac OS X 包含很多 Objective-C 代码,因为它是 Apple 的源自 NeXT 的语言。

Windows,我听说包含 C、C++ 和 Intel 程序集。 Linux 或 Mac OS 是否包含任何汇编代码?

此外,操作系统开发人员是否使用 Ruby、Python 等脚本语言来编写操作系统的部分脚本?操作系统的哪些部分将用每种语言编写?

SO exchange 可能有助于回答您问题的最后一部分。
根据谷歌,Windows 是用 JS 编写的 :) 查一下
@samarmohan Windows 是如何用 JavaScript 编写的?我的意思是,你能用 JS 做一个该死的操作系统吗?你不能(据我所知)。它是 C++。
开个玩笑,看看就好。

S
Sean

Windows:C++,内核在 C 中

Mac:Objective C,内核在 C 中(IO PnP 子系统是 Embedded C++)

Linux:大多数东西都是用 C 语言编写的,许多用户级应用程序是用 Python 编写的,KDE 都是 C++

所有内核也将使用一些汇编代码。


我应该补充一点,Gnome 也几乎是 C。
Gnome 还与 C# (Mono) 调情。
我相信linux内核也有汇编程序。
的确,每个内核都至少有一些汇编程序
为了让事情一目了然——Apple 内核的 IOKit 子系统(用于驱动程序)使用(受限子集)C++。在所有这 3 个方面,即 Windows、Mac 和 Linux,许多最重要的用户级应用程序都是用 C 或 C++ 编写的。据称,例如,MS 试图在 .NET 中重做 Office,但又回到了 C++。 linux 内核使用许多类似 C++ 的习语,但在 C 语言中是手工制作的,例如驱动程序代码中的继承。
C
Community

Linux:C. 组装中的一些部件。

[...] 它主要是用 C 语言编写的,但大多数人不会把我写的东西称为 C。它使用了我能找到的 386 的所有可以想象的特性,因为它也是一个教我 386 的项目。如前所述,它使用 MMU 进行分页(尚未到磁盘)和分段。正是分段使其真正依赖于 386(每个任务都有一个 64Mb 的代码和数据段——4Gb 中最多 64 个任务。任何需要超过 64Mb/任务的人——艰难的 cookie)。 [...]我的一些“C”文件(特别是 mm.c)几乎与 C 一样多的汇编程序。[...] 与 minix 不同,我也碰巧喜欢中断,因此处理中断时不会试图隐藏他们背后的原因。 (资源)

Mac OS X:Cocoa 主要在 Objective-C 中。用 C 语言编写的内核,组装中的某些部分。

Mac OS X,在内核层,主要是一个旧的、免费的操作系统,称为 BSD(具体来说,它是 Darwin,一种 BSD、Mach 和其他一些东西的混合体)......几乎完全是 C,有点(来源) Cocoa 的大部分内容是用 Objective-C 实现的,Objective-C 是一种面向对象的语言,经过编译后可以以令人难以置信的速度运行,但采用真正动态的运行时,使其具有独特的灵活性。因为 Objective-C 是 C 的超集,所以很容易将 C 甚至 C++ 混合到您的 Cocoa 应用程序中。 (资源)

Windows:C、C++、C#。汇编器中的一些部件。

对于 Windows,我们几乎完全使用 C、C++ 和 C#。某些代码区域是手动调整/手写的汇编。 (资源)

Unix: C. 组装中的一些零件。 (Source)


Darwin (IOKit) 中的驱动子系统严重依赖于用 C++ 子集编写的类 COM 对象模型。
@Tahlor 是的。当 VB 甚至没有用于位移的运算符时,你怎么能在 VB 中编写像内核这样的低级东西呢? This is what Raymond Chen said。 Windows 应用程序不同
a
alex strange

Mac OS X 在一些库中使用了大量的 C++,但由于害怕 ABI 破坏而没有公开。


什么?无论如何,有一半的程序在每个新版本上都停止工作。
您能否为“Mac OS X 在某些库中使用大量 C++”声明提供某种引用?我只是觉得很难相信你的话!我很抱歉持怀疑态度。
@AnishRamaswamy 查看 IOKitWebKitGLKit。还可以一瞥 dyld。这些都是非常重的 C++。
我确定 OSX 内核是 C 而不是 C++,实际上我遇到的所有操作系统都有 C 内核
佚名

哇!!! 9 年的问题,但我刚刚在 Windows 命令行历史上遇到了一系列内部 article,我认为其中的某些部分可能与问题的 Windows 相关:

对于那些关心这些事情的人:许多人询问 Windows 是用 C 还是 C++ 编写的。答案是——尽管 NT 采用基于对象的设计——就像大多数操作系统一样,Windows 几乎完全是用“C”编写的。为什么? C++ 在内存占用和代码执行开销方面引入了成本。即使在今天,用 C++ 编写的代码的隐藏成本也令人惊讶,但在 1990 年代后期,当内存成本约为 60 美元/MB(是的……每兆字节 60 美元!)时,vtables 等的隐藏内存成本非常可观。此外,虚拟方法调用间接和对象取消引用的成本可能会在当时对 C++ 代码造成非常显着的性能和规模损失。虽然仍然需要小心,但现代计算机上的现代 C++ 的性能开销已经不是什么大问题了,考虑到它的安全性、可读性和可维护性的好处,这通常是一个可以接受的权衡……这就是为什么我们将控制台的代码稳步升级到现代 C++。


D
Duke Bishop

我知道这是一篇旧文章,但 Windows 绝对不是用 C++ 编写的。其中有很多 C++,但我们技术上定义为操作系统的东西不在 C++ 中。 Windows API、Windows 内核(这两者本质上都是操作系统)是用 C 语言编写的。几年前,我收到了一些 Windows 2000 和 Windows XP 的泄露代码。代码还不够完整,无法编译内核或 API,但我们能够编译单个程序和服务。例如,我们能够成功编译 Notepad.exe、mspaint.exe 和 spoolsv.exe 服务(打印后台处理程序)。全部用 C 编写。我没有再看,但我确信泄漏的代码仍然存在,因为那里可能仍然可用的 torrent 文件。


L
Larry Osterman

Windows:主要是 C 和 C++,一些 C#


.NET 随 Windows 一起提供。很多 .NET 都在 C# 中。
有传言说,Windows 的未来版本(可能是 Windows 8)将用 C#/.NET 替换一些 C++ 代码。
他们已经(几乎)完全用 C# 管理了一个工作操作系统。这叫做奇点。 research.microsoft.com/en-us/projects/singularity
Luc M:是的,Windows 中有 C# 代码。到处走走,你会找到的。 .Net 随操作系统一起提供,但这并不意味着操作系统是使用 .Net 编写的。 Windows 不是奇点。研究原型和实际操作系统之间存在巨大差异。
@1800Information - C# 从那里编译为机器代码 JIT 在运行时编译为机器代码?我认为你是一个困惑的人。有字节码和虚拟机:en.wikipedia.org/wiki/Common_Intermediate_Language
S
SimonT

窗户:C++

linux:C

mac:目标C

安卓:JAVA、C、C++

索拉里斯:C、C++

iOS 7:Objective-C、Swift、C、C++


Android 是用 Java 写的?真的吗?
安卓:Java(用户界面)。来源:en.wikipedia.org/wiki/Android_(operating_system)
讨论是关于操作系统的。没有系统编程语言就无法构建操作系统。用 Java 进行系统编程是不可能的。
啊。系统的某些部分可以用 Java 构建,并且一些示例已经存在,例如 JavaOS,尽管它并不成功。我并不是说你可以用 100% java 构建操作系统。
@JamRisser Android 使用 C 语言的 Linux 内核。该系统几乎直到最深层都是用 Java 编写的。 Dalvik VM 是 Google 编写的 Java 虚拟机,使用 C 或 C++ 编写。
O
OscarRyz

没错,MacOSX 的核心是 Objective-C。

视窗 C++

Linux C

关于脚本语言,不,它们非常高级。


C 语言中的 Windows:内核、驱动程序、API。我猜只有 C++ 中的系统应用程序和工具。所以更清楚地说只是C
D
David Z

Linux 内核主要是用 C 语言编写的(我想还有一点汇编语言),但一些重要的用户空间实用程序(程序)是用 Bash 脚本语言编写的 shell 脚本。除此之外,很难定义“Linux”,因为您基本上是通过挑选所需的零碎并将它们组合在一起来构建 Linux 系统,并且根据单个 Linux 用户的需求,您几乎可以使用任何涉及的语言。 (正如 Paul 所说,Python 和 C++ 发挥着重要作用)


P
Patrick Cassell

我读过或听说过 Mac OS X 主要是用 Objective-C 编写的,其中一些较低级别的部分,例如内核,以及用 C 编写的硬件设备驱动程序。我相信苹果“吃自己的狗粮” ",这意味着他们使用自己的 Xcode Developer Tools 编写 Mac OS X。 GCC(GNU Compiler Collection) 编译器链接器是 xCode 用于大多数可执行文件编译和/或链接的 unix 命令行工具。在其他可能的语言中,我知道 GCC 编译来自 C、Objective-C、C++ 和 Objective-C++ 语言的源代码。


Ç
Çağatay Gürtürk

作为 Mac OS X 核心的补充,在 Snow Leopard 之前,Finder 并没有用 Objective-C 编写。在 Snow Leopard 中,它是用 Cocoa、Objective-C 编写的


p
pcunite

请参阅标题 One Operating System Running On Multiple Platforms 下的说明:

Most of the source code for Windows NT is written in C or C++.