2009-02-24 7 views
207

Mi stavo chiedendo chissà quali linguaggi di programmazione sono Windows, Mac OS X e Linux e quali lingue sono utilizzate per ciascuna parte del sistema operativo (ad esempio: kernel, architettura plug-in, componenti GUI, ecc.).Quali lingue sono scritte in Windows, Mac OS X e Linux?

Presumo che non ci sono più lingue per ciascuno e, ovviamente, so che il kernel di Linux è scritto in C.

Sono totalmente indovinando qui che Mac OS X contiene un sacco di codice Objective-C come è Il linguaggio di Apple deriva da NeXT.

Windows, ho sentito contiene C, C++ e Intel Assembly. Linux o Mac OS contengono codice assembly?

Inoltre, esistono linguaggi di scripting come Ruby, Python, ecc. Utilizzati dagli sviluppatori del sistema operativo per le parti di script del sistema operativo? Quali parti del sistema operativo dovrebbero essere scritte in ogni lingua?

risposta

200
  • Windows: C++, il kernel è in C
  • Mac: Objective C, kernel è in C (sottosistema IO PnP è embedded C++)
  • Linux: La maggior parte delle cose sono in C, molte applicazioni userland sono in Python, KDE è tutto C++

Tutti i kernel utilizzano anche un codice assembly.

+9

Dovrei aggiungere che Gnome è più o meno C. –

+14

Gnome ha anche flirtato con C# (Mono). –

+0

Gnome usa anche Vala, credo; tuttavia, come Vala si compila fino a C ... – weberc2

7

di Windows: per lo più C e C++, C# alcuni

+1

.NET viene fornito con Windows. Un sacco di .NET è in C#. –

+0

Si dice che le versioni future (Windows 8 forse) di Windows avranno qualche codice C++ sostituito da C# /. NET. –

+0

Hanno già gestito un sistema operativo (quasi) completamente in C#. Si chiama Singolarità. http://research.microsoft.com/en-us/projects/singularity/ – Randolpho

4

Hai ragione MacOSX ha Objective-C nel nucleo.

di Windows C++

Linux C

Circa i linguaggi di scripting, no, più o meno alto livello.

+6

Windows in C: kernel, driver, API. Credo che solo applicazioni e strumenti di sistema in C++. Quindi è più chiaro dire solo C – abatishchev

2

Il kernel di Linux è scritto principalmente in C (e un po 'di linguaggio assembly, immagino), ma alcune delle utilità di userspace (programmi) importanti sono script di shell scritti nel linguaggio di scripting di Bash. Oltre a questo, è difficile definire "Linux" dato che fondamentalmente si costruisce un sistema Linux scegliendo i bit e i pezzi che si desidera e mettendoli insieme, e in base a ciò che desidera un singolo utente Linux, è possibile ottenere praticamente qualsiasi linguaggio coinvolto. (Come ha detto Paul, Python e C++ svolgono ruoli importanti)

4

Ho letto o sentito che Mac OS X è scritto principalmente in Objective-C con alcune parti di livello inferiore, come il kernel, e driver di periferica hardware scritti in C. Credo che Apple "mangi (s) il proprio cibo per cani", nel senso che scrivono Mac OS X usando il proprio Xcode Developer Tools. Il compiler-linker GCC(GNU Compiler Collection) è lo strumento della riga di comando di Unix utilizzato da xCode per la maggior parte della sua compilazione e/o collegamento di file eseguibili. Tra le altre lingue possibili, so che GCC compila il codice sorgente dai linguaggi C, Objective-C, C++ e Objective-C++.

0

Windows non è, ovviamente, scritto in C# (!)

Basta vedere il codice sorgente di Windows e vedrete ...

+30

" Basta vedere il codice sorgente di Windows "se sei uno dei pochi che è permesso/in grado di farlo ... –

+0

Ci sono molte parti del codice sorgente di Windows in Torrent, anche alcune recensioni di esso – abatishchev

+3

Parti del Il codice di Windows è fuoriuscito, anni fa.Vedi ad esempio questo vecchio thread: . :) – unwind

10

Mac OS X utilizza grandi quantità di C++ all'interno di alcune librerie, ma non è esposto in quanto temono la rottura dell'ABI.

+8

Cosa? La metà dei programmi smette comunque di funzionare su ogni nuova release. – kinokijuf

+4

Potresti fornire una sorta di citazione per il _ "Mac OS X utilizza grandi quantità di C++ all'interno di alcune librerie" _ istruzione? Ho solo difficoltà a crederti sulla parola! Mi dispiace per essere scettico. –

+3

@AnishRamaswamy Guarda in 'IOKit',' WebKit' e 'GLKit'. Dai un'occhiata anche a 'dyld'. Questi sono molto pesanti in C++. –

75

Linux: C. Alcune parti in assemblaggio.

[...] E 'soprattutto in C, ma la maggior parte delle persone non sarebbe chiamare ciò che scrivo C. Esso utilizza ogni caratteristica immaginabile della 386 che ho trovato, come è stato anche un progetto per insegnare io riguardo il 386. Come già accennato, lo utilizza una MMU, sia per il paging (non ancora sul disco) che per la segmentazione. È la segmentazione che rende REALMENTE 386 dipendenti (ogni attività ha un segmento 64Mb per il codice & dati - massimo 64 attività in 4 GB. Chiunque abbia bisogno di più di 64 Mb/attività - cookie difficili). [...] Alcuni dei miei file "C" (in particolare mm.c) sono quasi tanto assembler di C. [...] A differenza del minix , mi capita anche di LIKE interrupt, quindi gli interrupt sono gestiti senza cercando di nascondere il motivo dietro di loro. (Source)

Mac OS X: il cacao principalmente in Objective-C. Kernel scritto in C, alcune parti in assembly.

Mac OS X, al livello del kernel, è principalmente un sistema operativo libero più vecchio chiamato BSD (in particolare, è Darwin, una sorta di ibrido di BSD, Mach e alcune altre cose) ... quasi interamente C, con un po 'di assembler gettato. (Source)

Gran parte di Cocoa è implementata in Objective-C, un linguaggio orientato agli oggetti compilato a velocità incredibile, ma che impiega un runtime veramente dinamico che lo rende flessibile in modo univoco . Poiché Objective-C è un superset di C, è facile combinare C e anche C++ nelle tue applicazioni Cocoa. (Source)

Windows: C, C++, C#. Alcune parti in assembler.

Utilizziamo quasi interamente C, C++ e C# per Windows. Alcune aree del codice sono assemblate a mano/accordate a mano. (Source)

Unix: C. Alcune parti in assemblaggio. (Source)

+3

Il sottosistema di driver in Darwin (IOKit) si basa molto su un modello di oggetti COM-like che è scritto in un sottoinsieme di C++. –

+4

Grazie per aver fornito le fonti! –

2

In aggiunta al nucleo di Mac OS X, Finder non era stato scritto in Objective-C prima di Snow Leopard. In Snow Leopard è stato scritto in Cocoa, Objective-C

5

Capisco che questo è un vecchio post ma Windows non è sicuramente scritto in C++. Esiste un sacco di C++, ma ciò che definiamo tecnico come sistema operativo non è in C++. L'API di Windows, il kernel di Windows (entrambi sono essenzialmente ciò che è un sistema operativo) sono scritti in C. Anni fa mi è stato dato un codice trapelato sia per Windows 2000 che per Windows XP. Il codice non era abbastanza completo da compilare il kernel o l'API, ma siamo stati in grado di compilare singoli programmi e servizi. Ad esempio, siamo stati in grado di compilare con successo Notepad.exe, mspaint.exe e il servizio spoolsv.exe (spooler di stampa). Tutto scritto in C. Non ho guardato di nuovo ma sono sicuro che il codice trapelato sopravvive ancora come file torrent che potrebbero ancora essere disponibili.

4
  • finestre: C++
  • Linux: C
  • mac: Objective C
  • Android: Java, C, C++
  • Solaris: C, C++
  • iOS 7: Objective-C, Swift, C, C++
+0

Android scritto in Java? Veramente? – nirvanaswap

+1

Android: Java (UI). Fonte: https://en.wikipedia.org/wiki/Android_(operating_system) –

+1

La discussione riguarda il sistema operativo. Un sistema operativo non può essere costruito senza un linguaggio di programmazione del sistema. Non è possibile programmare il sistema con Java. – jamrizzi