Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Какие языки программирования пригодны для создания операционной системы?

Скажу сразу, я не программист. Пожалуйста, не надо сыпать сложными специфическими терминами. Но любопытство никто не отменял. Мне интересно. Да и другие могут заинтересоваться вопросом и обнаружат эту тему в Кью. Так что, польза будет.

Скажите, какие языки пригодны для написания ядра операционной системы и её графической оболочки? Помимо используемых - Ассемблер, C, C++, C#. Если кто-то захочет создать альтернативу и Виндовс, и Линукс, но не на языках семейства С. Этот не вопрос "зачем это нужно, если есть Виндовс и Линукс". Это вопрос - возможно ли и как?

Какие языки у меня на слуху? К примеру, развивающийся Питон. Можно ли на нем создать ядро и графическую оболочку? Или Java, позволяющий создавать и приложения, и графику. Или, к примеру, JavaScript. Для программирования графики и ВЭБ приложений. Говорят, на нем работает операционная система космических кораблей Dragon SpaceX. Или, к примеру - HTML 5. На HTML 5 пишут приложения, воспроизводят графику, фильмы и т.д.

Пожалуйста, продолжите список. Будет интересно узнать.

Вот мне любопытно. Представим, что кто-то реально захочет создать ОС на этих языках, или ещё на каких альтернативных, на уровне последних Виндовс. Как это можно реализовать?

Какие языки подойдут ядру? А какие для графической оболочки? Взять к примеру, тот же HTML 5. Предполагаю, что на нем можно создать и графическую среду, привычных ОС. Да и сами приложения для этой ОС. Ведь он же вполне может управлять портами, дисками, видеокартами, и тд. Ведь можно же сделать ядро, воспринимающее ВЭБ язык?

Было бы интересно узнать ваше мнение. Возможно ли это? Можно ли написать полностью функциональную ОС на одном из чистых языков, без примесей остальных. Или в комбинации нескольких.

А также, какие бы ещё языки вы видели как альтернативу семейству языков C. Если мой вопрос немного странный для специалистов программирования, прошу не злиться. Ведь интересуется человек "не в теме".

ПрограммированиеОперационные системы+3
Анонимный вопрос
  · 6,7 K
Лучший
Разработчик в Яндексе, Аспирант  · 27 апр 2021

возможно ли и как?

Возможно.

Операционная система состоит из нескольких важных частей (или слоёв абстракций):

  • Загрузчик
  • Взаимодействие с «железом» (драйвера)
  • Набор абстракций, упрощающий и унифицирующий работу с ресурсами ОС (среда выполнения)

Теоретически, написать операционную систему можно практически на любом языке (не беря во внимание время, которое придётся затратить).

Загрузчики чаще всего пишу на ассемблере, подходящем для процессора, на котором будет запускаться ОС.

Драйвера лучше писать на системном языке программирования (так как большая часть работы драйверов — перекладывание данных с места на место / в шину из шины + работа с необходимыми структурами). Такие языки чуть ближе к железу, дают чуть больший контроль, но сложнее для понимания, написания и отладки (поиска ошибок).

Набор абстракций можно писать уже на более широком классе языков программирования.

На данный момент из всех относительно популярных языков программирования самым многообещающим в этом плане видится Rust (и некоторые умельцы даже пишут на нём операционные системы: https://www.redox-os.org) — он, в отличие от C языков, (практически всегда) гарантирует безопасность при работе с памятью; это является серьёзным преимуществом, т.к. большинство уязвимостей — это именно последствия некорректной работы с памятью.

Пример ОС на Python для микроконтроллера можно найти тут: https://micropython.org.

Здесь в качестве среды выполнения выступает модифицированный интерпретатор Python (который, однако, написан на C), который позволяет взаимодействовать с микроконтроллером без явной операционной системы.

К примеру, развивающийся Питон. Можно ли на нем создать ядро и графическую оболочку?

Можно (см. MicroPython). Однако всё равно будет слой интеграции с железом на С + сам Python написан на C.

Или, к примеру, JavaScript. Для программирования графики и ВЭБ приложений. Говорят, на нем работает операционная система космических кораблей Dragon SpaceX.

Всё несколько сложнее — если я ничего не путаю, там используется модификация ядра Linux, на котором запущена платформа Chromium (проще говоря браузер), рядом запущен сервер, который генерирует страничку, которая показывается в браузере и взаимодействует с веб-приложением. Конечно же, все важные пункты управления дублируются физическими кнопками.

Или, к примеру - HTML 5. На HTML 5 пишут приложения, воспроизводят графику, фильмы и т.д.

HTML не является языком программирования, это язык разметки. Писать на нём программы нельзя. Он лишь контролирует, где и как будут выглядеть блоки с текстом, картинками и прочим.

Взять к примеру, тот же HTML 5. Предполагаю, что на нем можно создать и графическую среду, привычных ОС. Да и сами приложения для этой ОС.

Эту идею воплотили ребята из Google в своих Chromebook. Но там тоже модифицированное ядро Linux, на котором запущен локальный сервер и веб приложение.

Просто, чтобы вы понимали — браузеры по сложности и объёму кода сопоставимы с операционными системами.

чистых языков

Что такое чистый язык? =)

А также, какие бы ещё языки вы видели как альтернативу семейству языков C.

Как я и говорил, самые многообещающие — Rust и D. У них нет такого груза обратной совместимости + у них проще компилятор (программа, превращающая исходный код на человеческом языке в код, понятный машине) + многие вещи в них сделаны куда более удобно.

2 эксперта согласны
Комментарий был удалён за нарушение правил
Программист, математик, инженер.  · 26 апр 2021
Операционная система - очень многоуровневая штука. В ней есть элементы ядра, работающие напрямую на железке и с железкой. В ней есть сервисы-службы-демоны, системы интерфейсов (включая пользовательский) и куча системных и не только приложений, которые могут быть написаны на чём угодно, используя API ядра. И в целом, любая современная операционная система - это огромный... Читать далее
> разве что в асме несколько бОльший контроль и простор для оптимизаций Довольно часто компилятор генерирует более... Читать дальше
Шаманю в сфере IT, СМИ, мультимедиа. В основном по теме минеральных ресурсов. По...  · 23 янв 2021  · altside.ru
На самом деле единственный язык, понимаемый компьютерным железом - язык машинных команд. Исходный код програмы на любом языке программирования - это по сути просто текст. Для его выполнения требуется инструментарий (по факту - ранее созданный машинный код), переводящий этот текст в машинные команды. В этом смысле теоретически для написания любых программ, в том числе... Читать далее
Информация — кислород современного мира.Перейти на altside.ru
3 эксперта согласны
Разработчик встроенных систем, немного радиолюбитель.   · 23 янв 2021  · vladimir-coslow.narod.ru/index.html
Для создания операционных систем пригодны любые языки программирования, компиляторы которых способны создавать выполняемые файлы требуемого формата. Но это зависит только от компилятора, а никак не от языка программирования. То есть интерпретаторы Бейсика, Луа или Джаваскрипта точно не годятся. Ассемблер используется исключительно ради увеличения быстродействия, но... Читать далее
Чтобы ни дня в жизни не работать, на практике совмещаю работу с хобби.Перейти на vladimir-coslow.narod.ru/index.html
1 эксперт согласени2 эксперта не согласны
Серьёзно? Вы представляете как работает Qt? Qt позволяет комплирировать программы для каждой конкретной... Читать дальше