На яких мовах написані Windows, Mac OS X та Linux?


273

Мені було просто цікаво, хто знає, з яких мов програмування створені Windows, Mac OS X та Linux та які мови використовуються для кожної частини ОС (тобто: ядро, архітектура плагінів, компоненти графічного інтерфейсу тощо).

Я припускаю, що для кожної мови існує кілька мов, і явно знаю, що ядро ​​Linux написано на C.

Тут я повністю здогадуюсь, що Mac OS X містить багато коду Objective-C, оскільки це мова Apple, похідна від NeXT.

Я чув, що Windows містить C, C ++ та Intel Assembly. Чи містять Linux чи Mac OS якийсь код складання?

Крім того, чи існують такі мови сценаріїв, як Ruby, Python тощо, які використовуються розробниками ОС для створення сценаріїв частин ОС? Які частини ОС писалися б кожною мовою?



Цей обмін SO може допомогти відповісти на останню частину вашого питання.
Bikramjeet Singh

Відповіді:


269
  • Windows: C ++, ядро ​​в C
  • Mac: Завдання C, ядро ​​знаходиться в C (вбудована підсистема IO PnP C ++)
  • Linux: Більшість речей знаходяться на C, багато додатків у програмі - у Python, KDE - все на C ++

Усі ядра також використовуватимуть деякий код складання.


13
Я мушу додати, що Gnome є також значною мірою також C.
Натан Осман

17
Gnome також фліртував з C # (Mono).
Христо Ілієв

6
Ядро Linux має також асемблер.
GL2014

9
Щоправда, у кожному ядрі буде хоча б якийсь асемблер
Ана Беттс

4
Щоб зробити речі чіткими - підсистема IOKit ядра Apple (для драйверів) використовує (обмежений підмножина) C ++. І на всіх 3, тобто Windows, Mac та Linux, багато найважливіших додатків користувача написані на C або C ++. Нібито, наприклад, MS намагалася переробити Office у .NET, але повернулася до C ++. І ядро ​​linux використовує багато ідіом, схожих на C ++, але вручну готується разом у C, наприклад, успадкування коду драйвера.
Ерік Алапя

94

Linux: C. Деякі частини в зборі.

[...] Це здебільшого в С, але більшість людей не називатиме те, що я пишу C. Він використовує всі можливі функції 386, які я міг би знайти, оскільки це також був проект, який навчає мене про 386. Як уже згадувалося , він використовує MMU, як для підкачки (ще не на диску), так і для сегментації. Саме сегментація робить її НАДАЛЬНО 386 залежною (кожне завдання має 64Mb сегмент для коду та даних - максимум 64 завдання в 4Gb. Кожен, кому потрібно більше 64Mb / завдання - жорсткі файли cookie). [...] Деякі з моїх файлів "C" (зокрема mm.c) майже такі ж асемблери, як і C. [...] На відміну від minix, у мене також трапляються переривання LIKE, тому переривання обробляються, не намагаючись приховати причина за ними. (Джерело)

Mac OS X: Какао в основному в Objective-C. Ядро написано на С, деякі частини в зборі.

Mac OS X на рівні ядра - це в основному старіша, вільна операційна система під назвою BSD (конкретно, це Дарвін, свого роду гібрид BSD, Mach та ще декількох речей) ... майже цілком C, з трохи закинутого асемблера. (Джерело)

Значна частина какао реалізована в Objective-C, об'єктно-орієнтованій мові, складеній для роботи з неймовірною швидкістю, але використовує по-справжньому динамічний час виконання, що робить її унікальною гнучкістю. Оскільки Objective-C - це супернабір C, легко змішувати C і навіть C ++ у ваших програмах з какао. (Джерело)

Windows: C, C ++, C #. Деякі частини в асемблері.

Ми майже повністю використовуємо C, C ++ та C # для Windows. Деякі області коду налаштовані вручну / написані вручну. (Джерело)

Unix: C. Деякі деталі в зборі. (Джерело)


3
Підсистема драйверів у Дарвіні (IOKit) значною мірою покладається на COM-подібну об'єктну модель, записану в підмножині C ++.
Христо Ілієв

@Tahlor так. Як ви можете написати річ на низькому рівні, як ядро ​​в VB, якщо у нього немає навіть оператора для переміщення бітів? Про це сказав Реймонд Чен . Програми для Windows різні
phuclv

15

Mac OS X використовує велику кількість C ++ всередині деяких бібліотек, але це не піддається впливу, оскільки вони бояться порушення ABI.


13
Що? Половина програм так чи інакше припиняє роботу над кожним новим випуском.
kinokijuf

7
Чи можете ви надати якесь цитування для заяви "Mac OS X використовує велику кількість C ++ всередині деяких бібліотек" ? Мені важко просто взяти на це слово! Мені шкода, що я скептично ставлюсь.
Аніш Рамасвамі

5
@AnishRamaswamy Подивіться на IOKit, WebKitі GLKit. Також погляньте dyld. Вони дуже важкі на C ++.
Макшон Чан

1
Я впевнений, що KerX OSX - це C, а не C ++, адже всі операційні системи, на які я потрапив, мають
ядро

10

Я розумію, що це стара публікація, але Windows точно не написано на C ++. У ньому багато C ++, але те, що ми технічно визначаємо як операційну систему, не є в C ++. API Windows, ядро ​​Windows (обидва вони по суті є тим, що є операційною системою) написані у C. Роки тому мені дали деякий протікаючий код для Windows 2000 та Windows XP. Код був недостатньо повним для компіляції ядра чи API, але ми змогли зібрати окремі програми та сервіси. Наприклад, нам вдалося скомпілювати Notepad.exe, mspaint.exe та службу spoolsv.exe (шпулер друку). Все написано в C. Я не переглянув ще раз, але впевнений, що витік код все ще зберігається як торент-файли, які там ще можуть бути доступними.


9

Windows: переважно C і C ++, деякі C #


1
.NET постачається з Windows. Багато .NET є в C #.
Джонатан Паркер

Ходять чутки, що в майбутніх версіях (можливо, для Windows 8) вікон буде замінено код C ++ на C # /. NET.
Джонатан Паркер

Вони вже керували робочою ОС (майже) повністю в C #. Це називається Сингулярність. research.microsoft.com/en-us/projects/singularity
Рандольфо

Люк М: Так, у Windows існує код C #. Киньте навколо, і ви знайдете його. .Net поставляється разом з ОС, але це не означає, що ОС пишеться за допомогою .Net. І Windows - це не сингулярність. Існує величезна різниця між дослідним прототипом і реальною операційною системою.
ReinstateMonica Ларрі Остерман

2
@ 1800Information - C # компілює машинний код звідти JIT компілює машинний код при запуску? Я думаю, ти такий розгублений. Є байт-код IS і є віртуальна машина: en.wikipedia.org/wiki/Common_Intermediate_Language
Brock Woolf

9
  • windows: C ++
  • linux: C
  • mac: Мета C
  • android: JAVA, C, C ++
  • Solaris: C, C ++
  • iOS 7: Objective-C, Swift, C, C ++

Android написаний на Java? Дійсно?
nirvanaswap

3
Android: Java (інтерфейс користувача). Джерело: en.wikipedia.org/wiki/Android_(operating_system)
Нітеш Борад

3
Дискусія ведеться про операційну систему. Операційна система не може бути побудована без мови програмування системи. Неможливо виконати системне програмування з Java.
Джем Ріссер

Так. Деякі частини системи можна вбудувати в Java, а деякі приклади вже є, наприклад, JavaOS, хоча це не було успішним. Я не кажу, що ви можете створити ОС зі 100% java.
Shukant Pal

2
@JamRisser Android використовує ядро ​​Linux, яке знаходиться в C. Система, майже до найглибших шарів, написана на Java. Dalvik VM, що є віртуальною машиною Java, написаною Google, знаходиться на C або C ++.
петерх

7

Ого!!! 9 років питання, але я щойно наткнувся на серію внутрішньої статті про історію командного рядка Windows, і я думаю, що частина цього питання може бути відповідна стороні питання Windows:

Для тих, хто переймається такими речами: Багато хто запитував, чи Windows написана на C чи C ++. Відповідь полягає в тому, що - незважаючи на об'єктовий дизайн NT - як і більшість ОС », Windows майже повністю написана на« C ». Чому? C ++ вносить вартість з точки зору пам’яті пам’яті та накладного виконання коду. Навіть сьогодні приховані витрати коду, написані на C ++, можуть бути дивовижними, але ще в кінці 1990-х років, коли вартість пам'яті становила ~ 60 $ / МБ (так ... $ 60 за MEGABYTE!), прихована вартість пам'яті Vtables тощо була значною. Крім того, вартість виправлення викликів у віртуальному методі та перенаправлення об'єктів може призвести до значних штрафних санкцій щодо продуктивності та масштабу на той час для коду C ++. Хоча потрібно бути обережними, ефективність роботи сучасного C ++ на сучасних комп’ютерах викликає менше занепокоєння, і часто є прийнятним компромісом з огляду на переваги його безпеки, читабельності та ремонту. стабільно модернізуючи код консолі до сучасного C ++.


6

Ви маєте рацію, що MacOSX має ядро ​​Objective-C.

Windows C ++

Linux C

Щодо мов сценаріїв, ні, вони досить високий рівень.


7
Windows на C: ядро, драйвери, API. Думаю, лише системні програми та інструменти в C ++. Тож зрозуміліше сказати просто С
абатищев

5

Я читав або чув, що Mac OS X написано здебільшого в Objective-C з деякими частинами нижнього рівня, такими як ядро ​​та драйвери апаратних пристроїв, написаними в C. Я вважаю, що Apple "їсть (-ла) власну собачу їжу" ", що означає, що вони пишуть Mac OS X за допомогою власних інструментів розробника Xcode . GCC (GNU Compiler Collection) компілятор-линкер інструмент командного рядка Unix , яка Xcode використовується для більшості його складання і / або посилання на виконувані файли. Серед інших можливих мов, я знаю, що GCC компілює вихідний код із мов C, Objective-C, C ++ та Objective-C ++.


4

Ядро Linux здебільшого написано на мові С (і я трохи уявляю мову монтажу), але деякі важливі утиліти (програми) простого сценарію - це сценарії оболонки, написані на мові сценаріїв Bash. Крім цього, важко визначити "Linux", оскільки ви в основному будуєте систему Linux, вибираючи потрібні шматочки та шматочки та складаючи їх, і залежно від того, що хоче окремий користувач Linux, ви можете отримати майже будь-яку мову. (Як сказав Пол, Python та C ++ грають важливі ролі)


3

Як додаток про ядро ​​Mac OS X, Finder не був написаний в Objective-C до Snow Leopard. У "Snow Leopard" написано в "Какао", "Objective-C"



1

Windows, очевидно, не написано на C # (!)

Просто перегляньте вихідний код Windows, і ви побачите ...


36
"Просто перегляньте вихідний код Windows", якщо ви один з небагатьох, кому це дозволено / зможе зробити ...
Йоахім Зауер,

1
У Torrents є багато частин вихідного коду Windows, також кілька відгуків про нього
абатищев

4
Частини коду Windows просочилися років тому. Дивіться, наприклад, цю стару тему: < kuro5hin.org/story/2004/2/15/71552/7795 >. :)
розмотуємось
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.