Bahasa apa yang ditulis dalam Windows, Mac OS X dan Linux?

273

Saya hanya ingin tahu siapa yang tahu bahasa pemrograman apa yang terdiri dari Windows, Mac OS X dan Linux dan bahasa apa yang digunakan untuk setiap bagian dari OS (yaitu: Kernel, arsitektur plug-in, komponen GUI, dll).

Saya berasumsi bahwa ada beberapa bahasa untuk masing-masing dan jelas saya tahu kernel Linux ditulis dalam C.

Saya benar-benar menebak di sini bahwa Mac OS X berisi banyak kode Objective-C karena bahasa Apple berasal dari NeXT.

Windows, saya telah mendengar mengandung C, C ++ dan Intel Assembly. Apakah Linux atau Mac OS mengandung kode Majelis?

Juga, apakah ada bahasa skrip seperti Ruby, Python, dll yang digunakan oleh pengembang OS untuk membuat skrip bagian OS? Bagian OS apa yang akan ditulis dalam setiap bahasa?

Brock Woolf
sumber
Pertukaran SO ini dapat membantu menjawab bagian terakhir dari pertanyaan Anda.
Bikramjeet Singh

Jawaban:

269
  • Windows: C ++, kernel ada di C
  • Mac: Objective C, kernel ada di C (subsistem IO PnP adalah Embedded C ++)
  • Linux: Kebanyakan hal ada di C, banyak aplikasi userland menggunakan Python, KDE semuanya C ++

Semua kernel juga akan menggunakan beberapa kode assembly.

Ana Betts
sumber
13
Saya harus menambahkan bahwa Gnome cukup banyak C juga.
Nathan Osman
17
Gnome juga main mata dengan C # (Mono).
Hristo Iliev
6
Kernel linux memiliki assembler juga saya percaya.
GL2014
9
Benar, setiap kernel memiliki setidaknya beberapa assembler
Ana Betts
4
Untuk membuatnya lebih jelas - subsistem IOKit kernel Apple (untuk driver) menggunakan (subset terbatas dari) C ++. Dan pada ketiga, yaitu Windows, Mac dan Linux, banyak aplikasi userland yang paling penting ditulis dalam C atau C ++. Diduga, misalnya, MS mencoba untuk mengulang Office di .NET tetapi kembali ke C ++. Dan kernel linux menggunakan banyak idiom mirip C ++ - tetapi buatan tangan bersama dalam C, misalnya pewarisan dalam kode driver.
Erik Alapää
94

Linux: C. Beberapa bagian dalam perakitan.

[...] Sebagian besar dalam bahasa C, tetapi kebanyakan orang tidak akan menyebut apa yang saya tulis C. Itu menggunakan semua fitur yang mungkin dari 386 yang bisa saya temukan, karena itu juga sebuah proyek untuk mengajari saya tentang 386. Seperti yang telah disebutkan , ia menggunakan MMU, untuk paging (belum ke disk) dan segmentasi. Ini adalah segmentasi yang menjadikannya BENAR-BENAR 386 bergantung (setiap tugas memiliki segmen 64 MB untuk kode & data - maks 64 tugas dalam 4Gb. Siapa pun yang membutuhkan lebih dari 64 Mb / tugas - cookie sulit). [...] Beberapa file "C" saya (khususnya mm.c) hampir sama dengan assembler C. [...] Tidak seperti minix, saya juga suka LIKE interupsi, jadi interupsi ditangani tanpa berusaha menyembunyikan alasan di belakang mereka. (Sumber)

Mac OS X: Kakao kebanyakan di Objective-C. Kernel ditulis dalam C, beberapa bagian dalam perakitan.

Mac OS X, pada lapisan kernel, sebagian besar adalah sistem operasi bebas yang lebih tua yang disebut BSD (khususnya Darwin, semacam hibrida BSD, Mach, dan beberapa hal lainnya) ... hampir seluruhnya C, dengan sedikit assembler dilemparkan. (Sumber)

Sebagian besar Kakao diimplementasikan dalam Objective-C, bahasa berorientasi objek yang dikompilasi untuk berjalan pada kecepatan luar biasa, namun menggunakan runtime yang benar-benar dinamis sehingga membuatnya fleksibel secara unik. Karena Objective-C adalah superset dari C, mudah untuk mencampurkan C dan bahkan C ++ ke dalam aplikasi Kakao Anda. (Sumber)

Windows: C, C ++, C #. Beberapa bagian assembler.

Kami menggunakan hampir seluruhnya C, C ++, dan C # untuk Windows. Beberapa area kode adalah hand tuned / hand tertulis assembly. (Sumber)

Unix: C. Beberapa bagian dalam perakitan. (Sumber)

Pacerier
sumber
3
Subsistem driver di Darwin (IOKit) sangat bergantung pada model objek seperti COM yang ditulis dalam subset dari C ++.
Hristo Iliev
@ Tanlor ya. Bagaimana Anda bisa menulis hal tingkat rendah seperti kernel di VB ketika tidak memiliki operator untuk pengalihan bit? Ini yang dikatakan Raymond Chen . Aplikasi Windows berbeda
phuclv
15

Mac OS X menggunakan sejumlah besar C ++ di dalam beberapa pustaka, tetapi tidak terpapar karena mereka takut akan kerusakan ABI.

alex aneh
sumber
13
Apa? Setengah dari program berhenti bekerja pada setiap rilis baru.
kinokijuf
7
Bisakah Anda memberikan semacam kutipan untuk pernyataan "Mac OS X menggunakan sejumlah besar C ++ di dalam beberapa perpustakaan" ? Saya merasa sulit untuk hanya mengambil kata-kata Anda untuk itu! Saya minta maaf karena skeptis.
Anish Ramaswamy
5
@AnishRamaswamy Lihat ke dalam IOKit, WebKitdan GLKit. Juga melihat sekilas dyld. Itu sangat berat C ++.
Maxthon Chan
1
Saya yakin OSX Kernal adalah C dan bukan C ++, pada kenyataannya semua sistem operasi yang saya temui memiliki C kernal
twigg
10

Saya mengerti bahwa ini adalah posting lama tetapi Windows jelas tidak ditulis dalam C ++. Ada banyak C ++ di dalamnya tetapi apa yang kami definisikan secara teknis sebagai sistem operasi tidak ada dalam C ++. API Windows, kernel Windows (keduanya pada intinya adalah sistem operasi) ditulis dalam C. Bertahun-tahun yang lalu saya diberi kode yang bocor untuk Windows 2000 dan Windows XP. Kode hampir tidak cukup lengkap untuk mengkompilasi kernel atau API tetapi kami dapat mengkompilasi program dan layanan individual. Misalnya, kami berhasil mengompilasi Notepad.exe, mspaint.exe, dan layanan spoolsv.exe (print spooler). Semua ditulis dalam C. Saya belum melihat lagi tetapi saya yakin bahwa kode yang bocor masih bertahan sebagai file torrent di luar sana yang mungkin masih tersedia.

Duke Bishop
sumber
9

Windows: Kebanyakan C dan C ++, beberapa C #

ReinstateMonica Larry Osterman
sumber
1
.NET dikirimkan bersama Windows. Banyak. NET di C #.
Jonathan Parker
Ada rumor bahwa versi masa depan (Windows 8 mungkin) windows akan memiliki beberapa kode C ++ diganti dengan C # /. NET.
Jonathan Parker
Mereka sudah mengelola OS yang berfungsi (hampir) sepenuhnya dalam C #. Ini disebut Singularity. research.microsoft.com/en-us/projects/singularity
Randolpho
Luc M: Ya, ada kode C # di Windows. Cari-cari dan Anda akan menemukannya. .Net dikirimkan bersama OS tetapi tidak berarti OS tersebut ditulis menggunakan .Net. Dan Windows bukan Singularitas. Ada perbedaan besar antara prototipe penelitian dan sistem operasi nyata.
ReinstateMonica Larry Osterman
2
@ 1800Information - C # mengkompilasi ke kode mesin dari sana JIT mengkompilasi ke kode mesin saat dijalankan? Saya pikir kamu yang bingung. Ada IS bytecode dan ADA mesin virtual: en.wikipedia.org/wiki/Common_Intermediate_Language
Brock Woolf
9
  • windows: C ++
  • linux: C
  • mac: Tujuan C
  • android: JAVA, C, C ++
  • Solaris: C, C ++
  • iOS 7: Objective-C, Swift, C, C ++
sonsha
sumber
Android ditulis dalam Java? Betulkah?
nirvanaswap
3
Android: Java (UI). Sumber: en.wikipedia.org/wiki/Android_(operating_system)
Nitesh Borad
3
Pembahasannya tentang sistem operasi. Sistem operasi tidak dapat dibangun tanpa bahasa pemrograman sistem. Tidak mungkin melakukan pemrograman sistem dengan Java.
Jam Risser
Yah. Beberapa bagian dari sistem dapat dibangun di Jawa dan beberapa contoh sudah ada seperti JavaOS, meskipun tidak berhasil. Saya tidak mengatakan Anda dapat membangun OS dengan 100% java.
Shukant Pal
2
@JamRisser Android menggunakan kernel Linux, yang ada di C. Sistem, hampir sampai lapisan terdalam, ditulis dalam Java. Dalvik VM, yang merupakan mesin virtual java yang ditulis oleh Google, ada dalam C atau C ++.
peterh
7

Wow!!! 9 tahun pertanyaan tetapi saya baru saja menemukan serangkaian artikel internal tentang sejarah Baris Perintah Windows dan saya pikir beberapa bagian dari itu mungkin relevan dengan sisi Windows dari pertanyaan:

Bagi mereka yang peduli tentang hal-hal seperti itu: Banyak yang bertanya apakah Windows ditulis dalam C atau C ++. Jawabannya adalah bahwa - meskipun desain berbasis Objek NT - seperti kebanyakan OS ', Windows hampir seluruhnya ditulis dalam' C '. Mengapa? C ++ memperkenalkan biaya dalam hal jejak memori, dan overhead eksekusi kode. Bahkan hari ini, biaya tersembunyi kode yang ditulis dalam C ++ dapat mengejutkan, tetapi kembali pada akhir 1990-an, ketika biaya memori ~ $ 60 / MB (ya ... $ 60 per MEGABYTE!), biaya memori tersembunyi dari vtables dll signifikan. Selain itu, biaya tidak langsung panggilan metode-virtual dan objek-dereferencing dapat menghasilkan kinerja yang sangat signifikan & skala hukuman untuk kode C ++ pada saat itu. Sementara kita masih harus berhati-hati, kinerja overhead C ++ modern pada komputer modern jauh dari perhatian, dan sering merupakan trade-off yang dapat diterima mengingat keamanannya, keterbacaan, dan manfaat rawatan ... itulah sebabnya kami terus meningkatkan kode Konsol ke C ++ modern.

adem
sumber
6

Anda benar, MacOSX memiliki Objective-C pada intinya.

Windows C ++

Linux C

Tentang bahasa scripting, tidak, mereka cukup banyak level tinggi.

OscarRyz
sumber
7
Windows di C: kernel, driver, API. Hanya aplikasi sistem dan alat dalam C ++, saya kira. Jadi lebih jelas untuk mengatakan hanya C
abatishchev
5

Saya telah membaca atau mendengar bahwa Mac OS X sebagian besar ditulis dalam Objective-C dengan beberapa bagian yang lebih rendah, seperti kernel, dan driver perangkat keras yang ditulis dalam C. Saya percaya bahwa Apple "memakan makanan anjingnya sendiri ", artinya mereka menulis Mac OS X menggunakan Alat Pengembang Xcode mereka sendiri . The GCC (GNU Compiler Collection) compiler-linker adalah alat baris perintah unix yang Xcode digunakan untuk sebagian besar yang kompilasi dan / atau menghubungkan executable. Di antara bahasa lain yang mungkin, saya tahu GCC mengkompilasi kode sumber dari bahasa C, Objective-C, C ++ dan Objective-C ++.

Patrick Cassell
sumber
4

Kernel Linux sebagian besar ditulis dalam bahasa C (dan sedikit bahasa assembly, saya kira), tetapi beberapa utilitas (program) pengguna yang penting adalah skrip shell yang ditulis dalam bahasa skrip Bash. Di luar itu, agak sulit untuk mendefinisikan "Linux" karena pada dasarnya Anda membangun sistem Linux dengan memilih potongan-potongan yang Anda inginkan dan menyatukannya, dan tergantung pada apa yang diinginkan setiap pengguna Linux, Anda bisa mendapatkan cukup banyak bahasa apa pun yang terlibat. (Seperti kata Paul, Python dan C ++ memainkan peran penting)

David Z
sumber
3

Sebagai tambahan tentang inti Mac OS X, Finder belum ditulis di Objective-C sebelum Snow Leopard. Dalam Snow Leopard itu ditulis dalam Cocoa, Objective-C

Çağatay Gürtürk
sumber
1

Windows jelas tidak ditulis dalam C # (!)

Cukup lihat kode sumber Windows dan Anda akan melihat ...


sumber
36
"Cukup melihat kode sumber Windows" jika Anda salah satu sedang dari sedikit yang diperbolehkan / mampu melakukan itu ...
Joachim Sauer
1
Ada banyak bagian kode sumber Windows di Torrents, juga beberapa ulasan tentang hal itu
abatishchev
4
Sebagian kode Windows telah bocor, bertahun-tahun lalu. Lihat misalnya utas lama ini: < kuro5hin.org/story/2004/2/15/71552/7795 >. :)
bersantai