Скажу сразу, я не программист. Пожалуйста, не надо сыпать сложными специфическими терминами. Но любопытство никто не отменял. Мне интересно. Да и другие могут заинтересоваться вопросом и обнаружат эту тему в Кью. Так что, польза будет.
Скажите, какие языки пригодны для написания ядра операционной системы и её графической оболочки? Помимо используемых - Ассемблер, C, C++, C#. Если кто-то захочет создать альтернативу и Виндовс, и Линукс, но не на языках семейства С. Этот не вопрос "зачем это нужно, если есть Виндовс и Линукс". Это вопрос - возможно ли и как?
Какие языки у меня на слуху? К примеру, развивающийся Питон. Можно ли на нем создать ядро и графическую оболочку? Или Java, позволяющий создавать и приложения, и графику. Или, к примеру, JavaScript. Для программирования графики и ВЭБ приложений. Говорят, на нем работает операционная система космических кораблей Dragon SpaceX. Или, к примеру - HTML 5. На HTML 5 пишут приложения, воспроизводят графику, фильмы и т.д.
Пожалуйста, продолжите список. Будет интересно узнать.
Вот мне любопытно. Представим, что кто-то реально захочет создать ОС на этих языках, или ещё на каких альтернативных, на уровне последних Виндовс. Как это можно реализовать?
Какие языки подойдут ядру? А какие для графической оболочки? Взять к примеру, тот же HTML 5. Предполагаю, что на нем можно создать и графическую среду, привычных ОС. Да и сами приложения для этой ОС. Ведь он же вполне может управлять портами, дисками, видеокартами, и тд. Ведь можно же сделать ядро, воспринимающее ВЭБ язык?
Было бы интересно узнать ваше мнение. Возможно ли это? Можно ли написать полностью функциональную ОС на одном из чистых языков, без примесей остальных. Или в комбинации нескольких.
А также, какие бы ещё языки вы видели как альтернативу семейству языков C. Если мой вопрос немного странный для специалистов программирования, прошу не злиться. Ведь интересуется человек "не в теме".
возможно ли и как?
Возможно.
Операционная система состоит из нескольких важных частей (или слоёв абстракций):
Теоретически, написать операционную систему можно практически на любом языке (не беря во внимание время, которое придётся затратить).
Загрузчики чаще всего пишу на ассемблере, подходящем для процессора, на котором будет запускаться ОС.
Драйвера лучше писать на системном языке программирования (так как большая часть работы драйверов — перекладывание данных с места на место / в шину из шины + работа с необходимыми структурами). Такие языки чуть ближе к железу, дают чуть больший контроль, но сложнее для понимания, написания и отладки (поиска ошибок).
Набор абстракций можно писать уже на более широком классе языков программирования.
На данный момент из всех относительно популярных языков программирования самым многообещающим в этом плане видится 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. У них нет такого груза обратной совместимости + у них проще компилятор (программа, превращающая исходный код на человеческом языке в код, понятный машине) + многие вещи в них сделаны куда более удобно.