Какой язык Вы использовали бы в своей ОС?

Приложение React Native работает на Android медленнее. Но производительность не реальна во время вашего развития. Вы можете создать релизную версию, чтобы проверить реальную производительность, релизная версия намного быстрее, чем dev версия.

Есть также некоторые плохие коды, которые могут замедлить работу вашего приложения. Как и console.log(), приложение замедляет работу во время разработки. Избегайте ненужного повторного рендеринга вида, не используйте функцию стрелки и .bind в render и т. Д.

10
задан Marko 27 October 2010 в 21:22
поделиться

24 ответа

C, конечно.

32
ответ дан 3 December 2019 в 13:11
поделиться

Некоторые скажут, что Java.

Обратите внимание, что открытая прошивка написана частично на Forth, и это очень низкий уровень.

Будьте непредвзятыми.

0
ответ дан 3 December 2019 в 13:11
поделиться

Я бы разрывался между использованием какого-нибудь существующего низкоуровневого языка и написанием своего собственного, основанного на C #, но с гораздо лучшей поддержкой дженериков. Во втором случае я бы сделал каждый метод универсальным, но все ограничения будут разрешены компилятором - чтобы разрешить «утиный ввод», как в Scala, но язык все равно должен быть статическим. Также статические виртуальные методы снизят кодовую базу.

У меня была эта идея давно, но кажется, что она никогда не осуществима в реальном масштабе времени, так что кто знает, может быть, в будущем. : -)

0
ответ дан 3 December 2019 в 13:11
поделиться

«Ядро должно быть написано на низком уровне язык C, безусловно, лучший выбор для этого, потому что он настолько эффективен с точки зрения памяти. "

Гм ... А как насчет FORTH?

FORTH может быть низким и высоким уровнем, так что у вас может быть весь рабочий система написана на FORTH с нуля, и по-прежнему имеет приятную простую среду сценариев REPL сверху, также в FORTH.

Однако любая достойная операционная система должна поддерживать множество языков сверху, от C до Python Ruby и Javascript. Однако создание FORTH в качестве основы для всего этого имеет много преимуществ.

edit: Я бы попытался сделать это только для встраиваемой среды с одним известным набором оборудования.

0
ответ дан 3 December 2019 в 13:11
поделиться

C , по ряду причин. Другие кандидаты, такие как D, великолепны. Однако у C есть одно преимущество: имеется много доступного кода C с открытым исходным кодом, который вы можете повторно использовать в своем проекте (намного больше, чем для других языков, подходящих для системного программирования).

0
ответ дан 3 December 2019 в 13:11
поделиться

Микроядро AC или C ++ с JIT для высокодинамичного языка, такого как Ruby, или, возможно, языка с нативной поддержкой шаблона Prototype. Даже драйверы устройств на этом языке.

Не потому, что это практично, а потому, что это действительно круто. Классно в том смысле, что NeXTStep отлично подходит для использования Obj-C практически во всем.

0
ответ дан 3 December 2019 в 13:11
поделиться

http://www.dwheeler.com/sloc/redhat71-v1/redhat71sloc.html - доля языков в исходном коде Linux.

0
ответ дан 3 December 2019 в 13:11
поделиться

Оберон? Думаю, иногда я слишком скучаю по Паскалю. C оплачивал счета довольно долго, но мне это не очень нравится.

1
ответ дан 3 December 2019 в 13:11
поделиться

Если бы я собирался запустить новую ОС, я бы сделал это с подмножеством C ++, рекомендованным индустрией встраиваемых систем. Вы можете использовать такие вещи, как классы, и использовать его «как лучший C» и быть таким же быстрым. Просто избегайте вещей, которые требуют огромных накладных расходов. Вы даже можете использовать некоторые функции шаблона, если вы придерживаетесь определенного подмножества, в котором практически нет накладных расходов. Поищите на embedded.com возможности C ++, которые практически не связаны с накладными расходами, но позволят вам организовать свой код лучше, чем когда-либо в C.

1
ответ дан 3 December 2019 в 13:11
поделиться

Для ОС вам нужна скорость на самых низких уровнях. Итак, ассемблер, C, C ++, Objective-C или Java кажутся текущими вариантами. Хотя только недавно Java стала быстрой, и мне трудно представить себе ОС со сборкой мусора.

Если бы я писал свою собственную, это было бы смесью сборки и C.

0
ответ дан 3 December 2019 в 13:11
поделиться

Я бы пошел с D, чтобы посмотреть, сможет ли он это сделать.

1
ответ дан 3 December 2019 в 13:11
поделиться

Ява ?? никакая jave не запускается на виртуальной машине, на которой должна работать операционная система, возможно C и немного ASM;)

1
ответ дан 3 December 2019 в 13:11
поделиться

Ada :

Ada - это структурированный, статически типизированный, императивный, и объектно-ориентированный язык программирования высокого уровня, унаследованный от Паскаля и других языков. Первоначально он был разработан командой под руководством Джин Ичбиа из CII Honeywell Bull по контракту с Министерством обороны США с 1977 по 1983 год, чтобы заменить сотни языков программирования, которые тогда использовались Министерством обороны. Ada строго типизирована, и компиляторы проверены на надежность в критически важных приложениях, таких как программное обеспечение авионики.

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

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

Не поймите меня неправильно, C, очевидно, работает для очень многих проектов, но как только проект достиг определенного размера (например, ядро ​​Linux, gcc, GNOME), вы неизбежно оцените определенные особенности языков более высокого уровня. чтобы сделать процесс разработки менее утомительным и менее запутанным.

Однако в C эти функции обычно оказываются довольно плохо эмулированными из-за чрезмерного и почти извращенного использования препроцессора (это можно увидеть, например, в gcc code base), так что вы можете увидеть множество вложенных макросов, которые с точки зрения реализации фактически имитируют функции других языков программирования.

Кроме того, Ada - единственный язык программирования, о котором я знаю of, что фактически обеспечивает стандартизированную поддержку анализа исходного кода с использованием ASIS ,

1
ответ дан 3 December 2019 в 13:11
поделиться

Честно говоря, я бы использовал либо C, либо какую-то иерархию языков, которую я либо разработал, либо полностью согласовал вместе. Я хотел бы получить беспроблемный опыт, который начинается на уровне «голого железа», а затем я мог бы перейти на языки все более высокого уровня по мере продвижения вверх по проблемной области. Я бы, вероятно, выбрал что-то вроде:

  • C - для «голого железа», такого как драйверы, ядро ​​и т. Д.
  • Java / C # - для вещей уровня приложений, таких как консоли администрирования, приложения ОС
  • Python / PowerShell - для сценариев например, общие административные задачи (создание нового пользователя и т. д.)

Лично я считаю, что C / C # / PowerShell более тесно интегрирован, и мне нужен именно тот опыт. Конечно, если я когда-нибудь стану настолько амбициозным, чтобы написать ОС, У меня будет много свободного времени, и, вероятно, мне действительно понравится сначала заняться языковым стеком. Так что, возможно, это будет L / L # / LScript ...

2
ответ дан 3 December 2019 в 13:11
поделиться

BitC , кажется, имеет это в виду. Несмотря на название, похоже, что это середина ассемблера и шепелявости. Цель состояла в том, чтобы создать язык с сильным соответствием машинному языку, но имеющий промежуточное представление, поддерживающее более строгие выводы о правильности, чем это возможно с большинством других распространенных языков. Эти языки были созданы в рамках проекта Coyotos, операционной системы, преследующей высокие цели безопасности и надежности. Формальная проверка стала возможной благодаря ir, используемому в BitC.

2
ответ дан 3 December 2019 в 13:11
поделиться

Определенно ... C

5
ответ дан 3 December 2019 в 13:11
поделиться

Создайте базовые компоненты, такие как планировщики задач и драйверы, с помощью Assembly , затем создайте компоненты более высокого уровня, такие как приложения и инструменты, с помощью C

Я считаю, что это так же была создана Windows XP (не уверен насчет Windows Vista и Windows 7 ).

6
ответ дан 3 December 2019 в 13:11
поделиться

C, ASM, C #

Singularity

5
ответ дан 3 December 2019 в 13:11
поделиться
  • Низкоуровневое в чем-то вроде Haskell или D . На мой взгляд, производительность важнее производительности. Вы можете переписать медленные части на C ++ или даже позже, если возникнет необходимость.
  • Высокоуровневый в Python или Ruby . В идеале у меня была бы действительно быстрая виртуальная машина с поддержкой JIT для этого языка, но какое-то время этого не произойдет ни для одного из языков. Lua будет хорошей альтернативой, если скорость мешает.
3
ответ дан 3 December 2019 в 13:11
поделиться

Ядро должно быть написано на низкоуровневом языке, C, безусловно, лучший выбор для этого, поскольку он настолько эффективен с точки зрения памяти. Более высокие уровни могут быть построены с помощью комбинации Java или, в идеале, Objective-C и языков сценариев, таких как python и ruby ​​или lua.

2
ответ дан 3 December 2019 в 13:11
поделиться

D было бы интересным выбором. Из собственного описания:

D - язык системного программирования. Его основное внимание уделяется объединению мощи и высокой производительности C и C ++ с производительностью программиста современных языков, таких как Ruby и Python. Особое внимание уделяется требованиям обеспечения качества, документации, управления, переносимости и надежности.

Среда выполнения D предполагает наличие сборщика мусора, что не подходит для самых низких уровней ядра. Однако это было бы уместно для многих более высоких уровней.

8
ответ дан 3 December 2019 в 13:11
поделиться

Haskell.

После того, как вы перевернули правильные аппаратные биты, C станет ужасным языком для использования в остальной части ОС. Такие вещи, как планировщик, файловые системы, драйверы и т. Д., Являются сложными высокоуровневыми алгоритмами, и вы не хотите писать их на языке ассемблера (или C; то же самое). Это слишком сложно сделать правильно. (Подсистема виртуальных машин и диспетчер памяти, возможно, потребуется написать на чем-то низкоуровневом, так как вам нужно будет каким-то образом загрузить среду выполнения вашего высокоуровневого языка.)

В любом случае, это не просто сумасшедшая идея, которую я приду вверх с для SO. Вот ОС, написанная на Haskell: http://programatica.cs.pdx.edu/House/

Lisp - еще один хороший выбор; оригинальные Lisp-машины были бесконечно более гибкими (во время выполнения), чем «современные» ОС, такие как UNIX и Windows.

12
ответ дан 3 December 2019 в 13:11
поделиться

Я бы выбрал только следующие 3 из практических соображений.

  • C (старомодный)
  • C ++ (C с добавленными элементами. Windows частично написана на этом)
  • Java (язык среднего уровня, который может иметь способный сборщик мусора с управляемыми паузами с G1).
1
ответ дан 3 December 2019 в 13:11
поделиться

Если это не гипотетический вопрос, и вы хотите создать свою собственную ОС, я бы, вероятно, выбрал C, потому что большинство примеров написано на C.

Кроме того, (а я еще не создал ОС, так что отнеситесь к этому с недоверием), я думаю, что библиотеки времени выполнения c было бы намного проще перенести на вашу новую ОС, чем, скажем, .NET.

0
ответ дан 3 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: