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

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

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

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

Windows, я слышал, содержит C, С++ и Intel Assembly. У Linux или Mac OS есть код сборки?

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

Ответ 1

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

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

Ответ 2

Linux: C. Некоторые части сборки.

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

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

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

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

Windows: в основном C и С++, некоторые С#

Ответ 6

  • windows: С++
  • linux: C
  • mac: Objective C
  • android: JAVA, C, С++
  • Solaris: C, С++
  • iOS 7: Objective-C, Swift, C, С++

Ответ 7

Вы правы MacOSX имеет Objective-C в ядре.

Windows С++

Linux C

О языках сценариев нет, они довольно высокого уровня.

Ответ 8

Я читал или слышал, что Mac OS X написана в основном на Objective-C с некоторыми компонентами нижнего уровня, такими как ядро и драйверы аппаратных устройств, написанными на C. Я считаю, что Apple "ест" свою собачью еду "Это означает, что они пишут Mac OS X, используя свои собственные инструменты разработчика Xcode. Компилятор-компоновщик GCC (GNU Compiler Collection) - это инструмент командной строки unix, который xCode использовал для большей части своей компиляции и/или компоновки исполняемых файлов. Из других возможных языков я знаю, что GCC компилирует исходный код из языков C, Objective-C, C++ и Objective- C++.

Ответ 9

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

Ответ 10

В качестве дополнения к ядру Mac OS X Finder не был написан в Objective-C до Snow Leopard. В Snow Leopard это было написано в Cocoa, Objective-C

Ответ 12

Вот это да!!! 9 лет вопроса, но я только что натолкнулся на серию внутренних статей по истории командной строки Windows, и я думаю, что какая-то ее часть может иметь отношение к стороне вопроса Windows:

Для тех, кому небезразличны такие вещи: многие спрашивают, написана ли Windows на C или C++. Ответ заключается в том, что, несмотря на объектно-ориентированный дизайн NT, как и большинство ОС, Windows почти полностью написана на "C". Зачем? C++ вводит стоимость с точки зрения объема памяти и накладных расходов на выполнение кода. Даже сегодня скрытая стоимость кода, написанного в C++, может удивлять, но еще в конце 1990-х годов, когда стоимость памяти составляла ~ 60 долларов США/МБ (да… 60 долларов США за МЕГАБАЙТ!), Стоимость скрытой памяти для таблиц vtables и т.д. Была значительной., Кроме того, стоимость косвенного обращения к виртуальному методу и разыменования объекта может привести к очень значительным потерям производительности и масштаба для кода C++ в то время. Несмотря на то, что нужно быть осторожным, накладные расходы на производительность современных C++ на современных компьютерах представляют собой гораздо меньшую проблему и часто являются приемлемым компромиссом, учитывая его преимущества в плане безопасности, читаемости и удобства обслуживания... именно поэтому мы постоянно обновляю код Консолей до современного C++.

Ответ 13

Windows явно не написана на С# (!)

Просто посмотрите исходный код Windows, и вы увидите...