Windows, Mac OS X ve Linux hangi dillerde yazılmıştır?


273

Sadece Windows, Mac OS X ve Linux'un hangi programlama dillerinden oluştuğunu ve işletim sisteminin her bir parçası için hangi dillerin kullanıldığını kimin bildiğini merak ediyordum (yani: Çekirdek, eklenti mimarisi, GUI bileşenleri, vb.).

Her biri için birden fazla dil olduğunu ve Linux çekirdeğinin C ile yazılmış olduğunu biliyorum.

Tamamen burada Mac OS X'in, NeXT'den türetilen Apple'ın dili olduğu gibi bir sürü Objective-C kodu içerdiğini tahmin ediyorum.

Windows, duydum C, C ++ ve Intel Meclisi içerir. Linux veya Mac OS'de Meclis kodu var mı?

Ayrıca, OS geliştiricileri tarafından işletim sisteminin parçalarını yazmak için kullanılan Ruby, Python vb. Gibi komut dilleri var mı? İşletim sisteminin hangi bölümleri her dilde yazılır?



Bu SO değişimi , sorunuzun son kısmının yanıtlanmasına yardımcı olabilir.
Bikramjeet Singh

Yanıtlar:


269
  • Windows: C ++, çekirdek C
  • Mac: Amaç C, çekirdek C'de (IO PnP alt sistemi Gömülü C ++)
  • Linux: Çoğu şey C, birçok kullanıcı alanı uygulaması Python'da, KDE hepsi C ++

Tüm çekirdeklerde bazı montaj kodları da kullanılır.


13
Gnome'un da hemen hemen C olduğunu eklemeliyim.
Nathan Osman

17
Gnome ayrıca C # (Mono) ile flört etti.
Hristo Iliev

6
Linux çekirdeğinde de montajcı var.
GL2014

9
Doğru, her çekirdeğin en azından bir montajcısı olacak
Ana Betts

4
İşleri daha net hale getirmek için - Apple çekirdeğinin IOKit alt sistemi (sürücüler için) C ++ 'ın (sınırlı bir alt kümesi) kullanır. Ve her üçünde, yani Windows, Mac ve Linux'ta, en önemli kullanıcı alanı uygulamalarının çoğu C veya C ++ ile yazılmıştır. İddiaya göre, MS, .NET'te Office'i yeniden yapmaya çalıştı ancak C ++ 'a geri döndü. Ve linux çekirdeği birçok C ++ benzeri deyim kullanır ancak C'de birlikte pişirilir, örneğin sürücü kodunda kalıtım.
Erik Alapää

94

Linux: C.Montajdaki bazı parçalar.

[...] Çoğunlukla C, ama çoğu insan C yazdığım şeyi çağırmazdı. Bu, bulabildiğim 386'nın akla gelebilecek her özelliğini kullanıyor, çünkü aynı zamanda bana 386'yı öğretmek için bir proje oldu. , hem disk belleği (henüz diske değil) hem de segmentasyon için bir MMU kullanır. GERÇEKTEN 386'yı bağımlı yapan bölümleme (her görevin kod ve veri için 64Mb'lik bir segmenti vardır - 4Gb'de maksimum 64 görev. 64Mb / görevden fazla zor çerezlere ihtiyaç duyan herkes). [...] Bazı "C" dosyalarım (özellikle mm.c) neredeyse C kadar birleştirici. [...] Minix'in aksine LIKE kesintilerine de rastladım, bu yüzden kesilmeler gizlemeye çalışmadan işleniyor arkasındaki sebep. (Kaynak)

Mac OS X: Kakao çoğunlukla Objective-C'de. Çekirdek C ile yazılmış, montajdaki bazı bölümler.

Çekirdek katmanındaki Mac OS X, çoğunlukla BSD olarak adlandırılan daha eski, ücretsiz bir işletim sistemidir (özellikle, Darwin, bir çeşit BSD, Mach ve diğer birkaç melez) ... neredeyse tamamen C, biraz atılan montajcı. (Kaynak)

Kakaoların çoğu, inanılmaz bir hızda çalışmak için derlenmiş, ancak benzersiz bir esneklik sağlayan gerçekten dinamik bir çalışma zamanı kullanan nesne yönelimli bir dil olan Objective-C'de uygulanmaktadır. Objective-C, C'nin bir üst kümesi olduğundan, C ve hatta C ++ 'ı Kakao uygulamalarınıza karıştırmak kolaydır. (Kaynak)

Windows: C, C ++, C #. Montajcıdaki bazı parçalar.

Windows için neredeyse tamamen C, C ++ ve C # kullanıyoruz. Bazı kod alanları elle ayarlanmış / elle yazılmış montajlardır. (Kaynak)

Unix: C. Montajdaki bazı parçalar. (Kaynak)


3
Darwin (IOKit) sürücü alt sistemi büyük ölçüde C ++ alt kümesinde yazılan COM benzeri bir nesne modeline dayanır.
Hristo Iliev

@Tahlor evet. Bit kaydırma için bir operatöre sahip olmadığında VB'de çekirdek gibi düşük düzeyli bir şeyi nasıl yazabilirsiniz? Raymond Chen böyle söyledi . Windows uygulamaları farklı
phuclv

15

Mac OS X, bazı kütüphanelerde büyük miktarlarda C ++ kullanır, ancak ABI kırılmasından korktukları için gösterilmez.


13
Ne? Programların yarısı zaten her yeni sürümde çalışmayı bırakıyor.
kinokijuf

7
"Mac OS X bazı kütüphanelerde büyük miktarlarda C ++ kullanıyor" ifadesi için bir tür alıntı verebilir misiniz? Sadece sözünü almakta zorlanıyorum! Şüpheci olduğum için üzgünüm.
Anish Ramaswamy

5
@AnishRamaswamy Bakın IOKit, WebKitve GLKit. Ayrıca bir bakış var dyld. Bunlar çok C ++ ağır.
24:14 Maxthon Chan

1
Eminim OSX Kernal C + değil C ++, aslında karşılaştığım tüm işletim sistemleri bir C çekirdeğine sahip
twigg

10

Bunun eski bir yazı olduğunu anlıyorum ama Windows kesinlikle C ++ ile yazılmamış. İçinde çok fazla C ++ var ama teknik olarak bir işletim sistemi olarak tanımladığımız şey C ++ 'da değil. Windows API, Windows çekirdeği (her ikisi de aslında bir işletim sisteminin ne olduğu) C ile yazılmıştır. Yıllar önce hem Windows 2000 hem de Windows XP için sızdırılmış bir kod verildi. Kod, çekirdeği veya API'yi derlemek için neredeyse tam değildi, ancak bireysel programları ve hizmetleri derleyebildik. Örneğin, Notepad.exe, mspaint.exe ve spoolsv.exe hizmetini (yazdırma biriktiricisi) başarıyla derleyebildik. Hepsi C ile yazılmış. Tekrar bakmadım ama sızan kodun hala mevcut olabilecek torrent dosyaları olarak hayatta kaldığından eminim.


9

Windows: Çoğunlukla C ve C ++, bazı C #


1
.NET, Windows ile birlikte gelir. C # bir çok .NET var.
Jonathan Parker

Gelecekteki Windows sürümlerinin (Windows 8 belki) C # /. NET ile değiştirilen bazı C ++ koduna sahip olacağı söylentileri var.
Jonathan Parker

Zaten tamamen C # ile çalışan bir işletim sistemini (neredeyse) yönettiler. Buna Tekillik denir. Research.microsoft.com/tr-tr/projects/singularity
Randolpho

Luc M: Evet, Windows'ta C # kodu var. Etrafında dürt ve onu bulacaksın. .Net işletim sistemi ile birlikte gönderilir, ancak işletim sisteminin .Net kullanılarak yazıldığı anlamına gelmez. Ve Windows Tekillik değil. Bir araştırma prototipi ile gerçek bir işletim sistemi arasında büyük bir fark vardır.
ReinstateMonica Larry Osterman

2
@ 1800Information - C # oradan makine kodu derler JIT çalıştırılırken makine kodu derler? Bence şaşkınsın. Bayt kodu var ve sanal bir makine var: en.wikipedia.org/wiki/Common_Intermediate_Language
Brock Woolf

9
  • Windows: C ++
  • linux: C
  • mac: Amaç C
  • android: JAVA, C, C ++
  • Solaris: C, C ++
  • iOS 7: Objective-C, Swift, C, C ++

Android Java ile mi yazılmış? Gerçekten mi?
nirvanaswap


3
Tartışma işletim sistemi ile ilgilidir. İşletim sistemi, sistem programlama dili olmadan oluşturulamaz. Java ile sistem programlaması yapmak mümkün değildir.
Jam Risser

Yah. Bir sistemin bazı bölümleri Java'da oluşturulabilir ve başarılı olmasa da bazı örnekler JavaOS gibi zaten mevcuttur. % 100 java ile işletim sistemi kurabileceğinizi söylemiyorum.
Shukant Pal

2
@ JamRisser Android, C'de bulunan Linux çekirdeğini kullanır. Sistem, neredeyse en derin katmanlara kadar Java ile yazılır. Google tarafından yazılmış bir java sanal makinesi olan Dalvik VM, C veya C ++ 'dadır.
peterh - Monica'yı geri döndür

7

Vay!!! 9 yıllık bir soru ancak Windows Komut Satırı geçmişi ile ilgili bir dizi dahili makaleye rastladım ve bunun bir kısmının sorunun Windows tarafı ile ilgili olabileceğini düşünüyorum:

Bu tür şeyleri önemseyenler için: Birçoğu Windows'un C veya C ++ ile yazılmış olup olmadığını sordu. Cevap - NT'nin Nesne Tabanlı tasarıma rağmen - çoğu işletim sistemi gibi, Windows neredeyse tamamen 'C' ile yazılmıştır. Neden? C ++, bellek alanı ve kod yürütme yükü açısından bir maliyet getirmektedir. Bugün bile, C ++ ile yazılan kodun gizli maliyetleri şaşırtıcı olabilir, ancak 1990'ların sonlarında, belleğin ~ 60 $ / MB (evet ... MEGABYTE başına 60 $) maliyeti olduğunda.), vtables vb. gizli bellek maliyeti önemliydi. Ek olarak, sanal yöntem çağrısı dolaylı aktarma ve nesne silme işleminin maliyeti, o sırada C ++ kodu için çok önemli performans ve ölçek cezalarına neden olabilir. Birinin hala dikkatli olması gerekirken, modern C ++ 'ın modern bilgisayarlardaki performans yükü çok daha az endişe vericidir ve güvenlik, okunabilirliği ve sürdürülebilirlik faydaları göz önüne alındığında genellikle kabul edilebilir bir değiş tokuştur ... Konsolun kodunu sürekli olarak modern C ++ 'a yükseltin.


6

Haklısın MacOSX'in merkezinde Objective-C var.

Windows C ++

Linux C

Senaryo dilleri hakkında, hayır, oldukça yüksek bir seviyeye sahipler.


7
Windows C: çekirdek, sürücüler, API. Sadece C ++ sistem uygulamaları ve araçları sanırım. Yani sadece C
abatishchev

5

Mac OS X'in çoğunlukla Objective-C ile yazıldığını, Cern'de yazılmış çekirdek ve donanım aygıtı sürücüleri gibi bazı alt düzey parçalarla okuduğumu veya duydum. Apple'ın kendi köpek mamasını "yediğine" inanıyorum. ", yani Mac OS X'i kendi Xcode Geliştirici Araçlarını kullanarak yazarlar . GCC (GNU derleyicisi Koleksiyonu) derleyici-bağlayıcı XCODE çoğu için kullanılan Unix komut satırı aracı onun derleme ve / veya yürütülebilir bağlama. Diğer olası diller arasında, GCC'nin kaynak kodunu C, Objective-C, C ++ ve Objective-C ++ dillerinden derlediğini biliyorum.


4

Linux çekirdeği çoğunlukla C (ve hayal edebileceğim bir takım montaj dili) ile yazılmıştır, ancak bazı önemli kullanıcı alanı yardımcı programları (programları) Bash komut dosyası dilinde yazılmış kabuk komut dosyalarıdır. Bunun ötesinde, "Linux" un tanımlanması zordur, çünkü temelde istediğiniz bitleri ve parçaları seçip bir araya getirerek bir Linux sistemi inşa edersiniz ve bireysel bir Linux kullanıcısının ne istediğine bağlı olarak, hemen hemen her dili dahil edebilirsiniz. (Paul'un dediği gibi, Python ve C ++ önemli roller oynamaktadır)


3

Mac OS X'in çekirdeği hakkında ek olarak, Finder Snow Leopard'dan önce Objective-C'de yazılmamıştı. Snow Leopard'da Kakao, Objective-C ile yazılmıştır.



1

Windows açıkça C # (!)

Windows'un kaynak kodunu görmeniz yeterlidir ...


36
İzin verilen / yapabileceğiniz birkaç kişiden biriyseniz "Windows'un kaynak koduna bakın"
Joachim Sauer

1
Torrents içinde çok fazla Windows kaynak kodu parçası var, ayrıca bir kaç yorum var
abatishchev

4
Windows kodunun bölümleri yıllar önce sızdırıldı. Örneğin şu eski konuya bakın: < kuro5hin.org/story/2004/2/15/71552/7795 >. :)
gevşeyin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.