web-dev-qa-db-ja.com

Windows、Mac OS X、Linuxはどの言語で書かれていますか?

私は、Windows、Mac OS X、およびLinuxがどのプログラミング言語で構成されているのか、そしてOSの各部分にどの言語が使用されているのか(つまり、カーネル、プラグインアーキテクチャ、GUIコンポーネントなど)を知っていました。

私はそれぞれに複数の言語があると思います、そして明らかに私はLinuxカーネルがCで書かれているのを知っています.

Mac OS Xには、NeXTから派生したAppleの言語なので、多くのObjective-Cコードが含まれていると私は完全に推測しています。

Windowsには、C、C++、およびIntelのアセンブリが含まれていると聞きました。 LinuxまたはMac OSにアセンブリコードは含まれていますか?

また、OSの一部をスクリプトするためにOS開発者によって使用されるRuby、Pythonなどのスクリプト言語はありますか? OSのどの部分が各言語で書かれていますか?

246
Brock Woolf
  • Windows:C++、カーネルはCにあります
  • Mac:Objective C、カーネルはC言語です(IO PnPサブシステムはEmbedded C++です)。
  • Linux:ほとんどのものはC言語で書かれており、多くのユーザーランドアプリケーションはPythonで作られています。KDEはすべてC++です

すべてのカーネルはいくつかのアセンブリコードも使用します。

239
Paul Betts

Linux:C.アセンブリの一部。

[...]ほとんどC言語ですが、ほとんどの人が私が書いたものを呼び出すことはありません。これは、386について考えられるすべての機能を使用しているためです。 、それはページング(まだディスクではない)とセグメンテーションの両方のために、MMUを使います。それはそれが本当に386依存するようにするセグメンテーションです(すべてのタスクはコードとデータのための64Mbのセグメントを持ちます - 4Gbで最大64タスク。64Mb/タスク以上のタフなクッキーを必要とする人)。 [...]私の "C"ファイルのいくつか(特にmm.c)はCと同じくらい多くのアセンブラです。[...] minixとは違って、私はLIKE割り込みにも起こるので、割り込みは隠そうとせずに処理されますそれらの背後にある理由。 (ソース)

Mac OS X:CocoaのほとんどはObjective-Cです。 Cで書かれたカーネル、アセンブリのいくつかの部分。

カーネル層のMac OS Xは、ほとんどがBSDと呼ばれる古くて無料のオペレーティングシステムです(具体的には、Darwin、BSDとMachのハイブリッド、その他いくつかのものです)。投入されたアセンブラのコード。 (Source)

Cocoaの大部分は、オブジェクト指向言語であるObjective-Cで実装されています。これは、信じられないほどの速度で動作するようにコンパイルされていますが、真に動的なランタイムを採用しています。 Objective-CはCのスーパーセットなので、CおよびC++でさえCocoaアプリケーションに混在させるのは簡単です。 (ソース)

Windows:C、C++、C#。アセンブラの部品.

Windows用のC、C++、およびC#はほぼ完全に使用されています。コードのいくつかの領域は、手書き/手書きのアセンブリです。 (ソース)

Unix:C。アセンブリのいくつかの部分。 (ソース)

86
Pacerier

Mac OS Xは一部のライブラリ内で大量のC++を使用しますが、ABIの破損を恐れているため公開されていません。

13
alex strange

私はこれが古い記事であることを理解していますが、Windowsは間違いなくC++で書かれていません。そこにはたくさんのC++がありますが、我々が技術的にオペレーティングシステムとして定義するものはC++にはありません。 Windows API、Windowsカーネル(どちらも本質的にオペレーティングシステムとは何か)はCで書かれています。何年も前に、私はWindows 2000とWindows XPの両方のためにいくつかのリークコードを与えられました。コードは、カーネルやAPIをコンパイルするのに十分なほど完全ではありませんでしたが、個々のプログラムやサービスをコンパイルすることはできました。たとえば、Notepad.exe、mspaint.exe、およびspoolsv.exeサービス(印刷スプーラ)を正常にコンパイルできました。すべてC言語で書かれています。二度と見たことはありませんが、リークされたコードは、まだ利用可能である可能性があるtorrentファイルとして存続すると確信しています。

9
Duke Bishop
  • 窓:C++
  • linux:C
  • mac:目的C
  • Android:Java、C、C++
  • Solaris:C、C++
  • iOS 7:Objective-C、Swift、C、C++
8
sonsha

Windows:主にCとC++、いくつかのC#

8
Larry Osterman

MacOSXはObjective-Cを核にしています。

Windows C++

Linux C

スクリプト言語については、いいえ、それらはかなり高いレベルです。

6
OscarRyz

私はMac OS XがほとんどObjective-Cで書かれていて、カーネルやCで書かれたハードウェアデバイスドライバのような下位レベルの部分があると聞いたことがあります。 "、彼らはMac OS Xを自分のものを使って書くことを意味します Xcode Developer ToolsGCC(GNU Compiler Collection) compiler-linkerは、xCodeがほとんどの実行可能ファイルのコンパイルやリンクに使用していたunixコマンドラインツールです。他の可能な言語の中でも、GCCはC、Objective-C、C++、およびObjective-C++言語からのソースコードをコンパイルします。

5
Patrick Cassell

Linuxカーネルの大部分はC(および多少のアセンブリ言語です)で書かれていますが、重要なユーザースペースユーティリティ(プログラム)のいくつかはBashスクリプト言語で書かれたシェルスクリプトです。それ以外にも、基本的に必要なものを選んでそれらをまとめることによってLinuxシステムを構築するので、「Linux」を定義するのはちょっと難しいです。 (Paulが言ったように、PythonとC++は重要な役割を果たします)

4
David Z

見出しの下の 複数のプラットフォームで実行されている1つのオペレーティングシステム を参照してください。

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

Mac OS Xのコアについての補足として、FinderはSnow Leopardより前はObjective-Cで書かれていませんでした。 Snow Leopardでは、Objective-CのCocoaで書かれています。

3

ワオ!!! 9年間の質問ですが、Windowsコマンドラインの歴史に関する一連の内部的な 記事 に出会ったところです。その一部は、Windows側の質問に関連している可能性があります。

そのようなことを気にする人のために:多くの人がWindowsがCで書かれているのかC++で書かれているのかを尋ねました。答えは、NTのオブジェクトベース設計にもかかわらず、ほとんどのOSと同じように、Windowsはほぼ完全にCで書かれているということです。どうして? C++では、メモリ使用量とコード実行のオーバーヘッドに関してコストがかかります。今日でさえ、C++で書かれたコードの隠れたコストは驚くべきものですが、1990年代の終わり頃には、メモリのコストが60ドル/ MB(はい…60ドルあたりMEGABYTE!)になると、 vtableなどが重要でした。さらに、仮想メソッド呼び出しの間接化とオブジェクトの間接参照のコストにより、その時点でC++コードのパフォーマンスとスケールが大幅に低下する可能性があります。それでも注意が必要ですが、現代のコンピュータ上での現代のC++のパフォーマンスオーバーヘッドはそれほど心配ではなく、セキュリティ、読みやすさ、そして保守性の利点を考えると許容できるトレードオフです。コンソールのコードを確実に最新のC++にアップグレードする。

3
adem

Windowsは明らかにC#で書かれていません(!)

単にWindowsのソースコードを見ればわかるでしょう….

1
sef45