На каких языках написаны Windows, Mac OS X и Linux?


273

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

Я предполагаю, что есть несколько языков для каждого, и, очевидно, я знаю, что ядро ​​Linux написано на C.

Я полностью предполагаю, что Mac OS X содержит много кода Objective-C, поскольку это язык Apple, полученный из NeXT.

Я слышал, что Windows содержит C, C ++ и Intel Assembly. Linux или Mac OS содержат какой-либо ассемблерный код?

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



Этот обмен SO может помочь ответить на самую последнюю часть вашего вопроса.
Бикрамджит Сингх

Ответы:


269
  • Windows: C ++, ядро ​​в C
  • Mac: Цель C, ядро ​​в C (подсистема IO PnP - Embedded C ++)
  • Linux: большинство вещей на C, многие пользовательские приложения на Python, KDE - это C ++

Все ядра также будут использовать некоторый ассемблерный код.


13
Я должен добавить, что Gnome тоже в значительной степени C.
Натан Осман

17
Гном также заигрывал с C # (моно).
Христо Илиев

6
Я считаю, что в ядре Linux есть ассемблер.
GL2014

9
Правда, у каждого ядра будет хотя бы какой-нибудь ассемблер
Ана Беттс

4
Для ясности - подсистема IOKit ядра Apple (для драйверов) использует (ограниченное подмножество) C ++. И на всех трех, то есть Windows, Mac и Linux, многие из наиболее важных пользовательских приложений написаны на C или C ++. Предположительно, например, MS пыталась переделать Office в .NET, но вернулась к C ++. И ядро ​​Linux использует много идиом, подобных C ++, но готовится вручную в C, например, наследование в коде драйвера.
Эрик Алапяя,

94

Linux: C. Некоторые детали в сборке.

[...] Это в основном на C, но большинство людей не стали бы называть то, что я пишу C. Он использует все мыслимые возможности 386, которые я смог найти, так как это был также проект, чтобы рассказать мне о 386. Как уже упоминалось он использует MMU как для подкачки (пока не на диск), так и для сегментации. Это сегментация, которая делает его ДЕЙСТВИТЕЛЬНО 386 зависимым (каждая задача имеет 64-мегабайтный сегмент для кода и данных - максимум 64 задачи в 4 ГБ. Любой, кому нужно более 64 МБ / задача - жесткие файлы cookie). [...] Некоторые из моих "C" -файлов (в частности, mm.c) являются почти таким же ассемблером, что и C. [...] В отличие от minix, я также сталкиваюсь с LIKE-прерываниями, поэтому прерывания обрабатываются без попыток скрыть причина, стоящая за ними. (Источник)

Mac OS X: какао в основном в Objective-C. Ядро написано на C, некоторые части в сборке.

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

Большая часть Cocoa реализована в Objective-C, объектно-ориентированном языке, который скомпилирован для работы с невероятной скоростью, но использует действительно динамическое время выполнения, что делает его уникально гибким. Поскольку Objective-C является надмножеством C, легко смешивать C и даже C ++ в ваших приложениях Cocoa. (Источник)

Windows: C, C ++, C #. Некоторые детали на ассемблере.

Мы используем почти полностью C, C ++ и C # для Windows. Некоторые области кода настроены вручную или написаны вручную. (Источник)

Unix: C. Некоторые детали в сборке. (Источник)


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

@ Тахлор да. Как вы можете написать низкоуровневую вещь, такую ​​как ядро ​​в VB, когда у него нет даже оператора для сдвига битов? Это то, что сказал Раймонд Чен . Приложения для Windows отличаются
phuclv

15

Mac OS X использует большое количество C ++ в некоторых библиотеках, но это не раскрывается, так как они боятся взлома ABI.


13
Какой? В любом случае половина программ перестает работать на каждом новом выпуске.
киноюф

7
Не могли бы вы привести какую-то цитату для выражения «Mac OS X использует большое количество C ++ внутри некоторых библиотек» ? Мне просто сложно поверить на слово! Прошу прощения за скептическое отношение.
Аниш Рамасвами

5
@AnishRamaswamy Посмотри IOKit, WebKitи GLKit. Также взглянуть на dyld. Это очень тяжелый C ++.
Maxthon Chan

1
Я уверен, что OSX Kernal - это C, а не C ++, на самом деле все операционные системы, с которыми я сталкивался, имеют C kernal
twigg

10

Я понимаю, что это старый пост, но Windows определенно не написана на C ++. В нем много C ++, но то, что мы технически определяем как операционную систему, отсутствует в C ++. Windows API, ядро ​​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 (возможно, Windows 8) код C ++ будет заменен на C # / .NET.
Джонатан Паркер

Они уже почти полностью управляют работающей ОС на C #. Это называется Сингулярность. research.microsoft.com/en-us/projects/singularity
Randolpho

Люк М: Да, в Windows есть код C #. Посмотри вокруг, и ты найдешь это. .Net поставляется с ОС, но это не значит, что ОС написана с использованием .Net. И Windows не Сингулярность. Существует огромная разница между исследовательским прототипом и реальной операционной системой.
Восстановить Монику Ларри Остермана

2
@ 1800Information - C # компилируется в машинный код оттуда JIT компилируется в машинный код при запуске? Я думаю, что вы в замешательстве. Байт-код IS и виртуальная машина IS: en.wikipedia.org/wiki/Common_Intermediate_Language
Брок Вульф,

9
  • Windows: C ++
  • Linux: C
  • Mac: цель C
  • Android: JAVA, C, C ++
  • Солярис: C, C ++
  • iOS 7: Objective-C, Swift, C, C ++

Android написан на Java? В самом деле?
нирванасвап

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

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

Ях. Некоторые части системы могут быть встроены в Java, а некоторые примеры уже присутствуют, например, в JavaOS, хотя это не было успешным. Я не говорю, что вы можете собрать ОС со 100% Java.
Шукант Пал

2
@JamRisser Android использует ядро ​​Linux, которое находится на C. Система, почти до самых глубоких слоев, написана на Java. Виртуальная машина Dalvik, которая является виртуальной машиной 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 в основном написано на C (и немного на ассемблере, я бы подумал), но некоторые из важных утилит (программ) пользовательского пространства - это сценарии оболочки, написанные на языке сценариев 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, а также несколько обзоров
abatishchev

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