用Windows,Mac OS X和Linux编写哪些语言?

时间:2009-02-24 02:54:45

标签: windows linux macos programming-languages operating-system

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

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

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

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

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

14 个答案:

答案 0 :(得分:239)

  • Windows:C ++,内核在C
  • Mac:目标C,内核在C(IO PnP子系统是嵌入式C ++)
  • Linux:大多数东西都在C中,很多用户态应用都在Python中,KDE都是C ++

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

答案 1 :(得分:86)

Linux:C。汇编中的某些部分。

  

[...]它主要在C语言中,但是大多数人都不会打电话给我写的C.   它使用了我能找到的386的所有可想象的特征,就像它一样   也是一个教我386的项目。如前所述,它   使用MMU,用于分页(不是磁盘)和分段。它的   使其真正依赖于386的细分(每个任务都有一个   64Mb段代码和&数据 - 4Gb中最多64个任务。任何需要的人   超过64Mb /任务 - 坚韧的饼干)。 [...]我的一些“C”文件   (特别是mm.c)几乎和C一样多。[...]不同于   minix,我也碰巧LIKE中断,所以处理中断   没有试图掩盖他们背后的原因。 (Source)

Mac OS X:Cocoa主要在Objective-C中。内核用C语言编写,部分用于汇编。

  

Mac OS X,在内核层,主要是一个较旧的免费操作系统,称为BSD(具体来说,它是Darwin,一种混合​​了BSD,Mach和其他一些东西)......几乎完全是C,抛出一点汇编程序。(Source)

     

大部分Cocoa都是在Objective-C中实现的,这是一种面向对象的语言,它被编译为以令人难以置信的速度运行,但却采用了真正的动态运行时,使其具有独特的灵活性。因为Objective-C是C的超集,所以很容易将C甚至C ++混合到Cocoa应用程序中。   (Source)

Windows:C,C ++,C#。汇编程序中的某些部分。

  

我们几乎完全使用C,C ++和C#for Windows。一些代码区域是手动调整/手写组装。 (Source)

Unix:C。汇编中的某些部分。 (Source)

答案 2 :(得分:13)

Mac OS X在某些库中使用了大量的C ++,但它没有暴露,因为它们害怕ABI崩溃。

答案 3 :(得分:9)

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

答案 4 :(得分:8)

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

答案 5 :(得分:8)

  • windows:C ++
  • linux:C
  • mac:Objective C
  • android:JAVA,C,C ++
  • Solaris:C,C ++
  • iOS 7:Objective-C,Swift,C,C ++

答案 6 :(得分:6)

你是对的MacOSX的核心是Objective-C。

Windows C ++

Linux C

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

答案 7 :(得分:5)

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

答案 8 :(得分:4)

Linux内核主要是用C语言编写的(我会想到一些汇编语言),但是一些重要的用户空间实用程序(程序)是用Bash脚本语言编写的shell脚本。除此之外,定义“Linux”很难,因为你基本上通过选择你想要的点点滴滴来构建Linux系统并将它们组合在一起,并且根据个人Linux用户的需求,你可以获得几乎所涉及的任何语言。 (正如Paul所说,Python和C ++扮演着重要角色)

答案 9 :(得分:3)

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

答案 10 :(得分:3)

请参阅标题为One Operating System Running On Multiple Platforms的标题:

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

答案 11 :(得分:3)

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

  

对于那些关心此类事情的人:许多人问Windows是用C还是C ++编写的。答案是-尽管NT是基于对象的设计-像大多数OS一样,Windows几乎完全是用C编写的。为什么? C ++在内存占用量和代码执行开销方面带来了成本。即使在今天,用C ++编写的代码的隐藏成本也可能令人吃惊,但在1990年代后期,当内存成本约为60美元/ MB(是的...每个 MEGABYTE!!60美元)时, vtables等意义重大。此外,虚拟方法调用间接和对象取消引用的成本可能导致当时C ++代码的性能和规模上的巨大损失。尽管仍然需要谨慎,但是现代C ++在现代计算机上的性能开销却很少受到关注,并且考虑到其安全性,可读性和可维护性优势,这通常是可以接受的折衷……这就是为什么我们稳定地将控制台的代码升级到现代C ++。

答案 12 :(得分:1)

Windows显然不是用C#(!)

编写的

只需查看Windows的源代码,您就会看到......

答案 13 :(得分:0)

Windows c c++ 10% C# Perl Linux C MAC目标c 安卓 Java C++ Solaris C++

希望你能得到答案。

相关问题