Приложение React Native работает на Android медленнее. Но производительность не реальна во время вашего развития. Вы можете создать релизную версию, чтобы проверить реальную производительность, релизная версия намного быстрее, чем dev версия.
Есть также некоторые плохие коды, которые могут замедлить работу вашего приложения. Как и console.log()
, приложение замедляет работу во время разработки. Избегайте ненужного повторного рендеринга вида, не используйте функцию стрелки и .bind
в render
и т. Д.
Некоторые скажут, что Java.
Обратите внимание, что открытая прошивка написана частично на Forth, и это очень низкий уровень.
Будьте непредвзятыми.
Я бы разрывался между использованием какого-нибудь существующего низкоуровневого языка и написанием своего собственного, основанного на C #, но с гораздо лучшей поддержкой дженериков. Во втором случае я бы сделал каждый метод универсальным, но все ограничения будут разрешены компилятором - чтобы разрешить «утиный ввод», как в Scala, но язык все равно должен быть статическим. Также статические виртуальные методы снизят кодовую базу.
У меня была эта идея давно, но кажется, что она никогда не осуществима в реальном масштабе времени, так что кто знает, может быть, в будущем. : -)
«Ядро должно быть написано на низком уровне язык C, безусловно, лучший выбор для этого, потому что он настолько эффективен с точки зрения памяти. "
Гм ... А как насчет FORTH?
FORTH может быть низким и высоким уровнем, так что у вас может быть весь рабочий система написана на FORTH с нуля, и по-прежнему имеет приятную простую среду сценариев REPL сверху, также в FORTH.
Однако любая достойная операционная система должна поддерживать множество языков сверху, от C до Python Ruby и Javascript. Однако создание FORTH в качестве основы для всего этого имеет много преимуществ.
edit: Я бы попытался сделать это только для встраиваемой среды с одним известным набором оборудования.
C , по ряду причин. Другие кандидаты, такие как D, великолепны. Однако у C есть одно преимущество: имеется много доступного кода C с открытым исходным кодом, который вы можете повторно использовать в своем проекте (намного больше, чем для других языков, подходящих для системного программирования).
Микроядро AC или C ++ с JIT для высокодинамичного языка, такого как Ruby, или, возможно, языка с нативной поддержкой шаблона Prototype. Даже драйверы устройств на этом языке.
Не потому, что это практично, а потому, что это действительно круто. Классно в том смысле, что NeXTStep отлично подходит для использования Obj-C практически во всем.
http://www.dwheeler.com/sloc/redhat71-v1/redhat71sloc.html - доля языков в исходном коде Linux.
Оберон? Думаю, иногда я слишком скучаю по Паскалю. C оплачивал счета довольно долго, но мне это не очень нравится.
Если бы я собирался запустить новую ОС, я бы сделал это с подмножеством C ++, рекомендованным индустрией встраиваемых систем. Вы можете использовать такие вещи, как классы, и использовать его «как лучший C» и быть таким же быстрым. Просто избегайте вещей, которые требуют огромных накладных расходов. Вы даже можете использовать некоторые функции шаблона, если вы придерживаетесь определенного подмножества, в котором практически нет накладных расходов. Поищите на embedded.com возможности C ++, которые практически не связаны с накладными расходами, но позволят вам организовать свой код лучше, чем когда-либо в C.
Для ОС вам нужна скорость на самых низких уровнях. Итак, ассемблер, C, C ++, Objective-C или Java кажутся текущими вариантами. Хотя только недавно Java стала быстрой, и мне трудно представить себе ОС со сборкой мусора.
Если бы я писал свою собственную, это было бы смесью сборки и C.
Я бы пошел с D, чтобы посмотреть, сможет ли он это сделать.
Ява ?? никакая jave не запускается на виртуальной машине, на которой должна работать операционная система, возможно C и немного ASM;)
Ada :
Ada - это структурированный, статически типизированный, императивный, и объектно-ориентированный язык программирования высокого уровня, унаследованный от Паскаля и других языков. Первоначально он был разработан командой под руководством Джин Ичбиа из CII Honeywell Bull по контракту с Министерством обороны США с 1977 по 1983 год, чтобы заменить сотни языков программирования, которые тогда использовались Министерством обороны. Ada строго типизирована, и компиляторы проверены на надежность в критически важных приложениях, таких как программное обеспечение авионики.
Ada, потому что она не только была специально разработана для таких проектов, но также обеспечивает поддержку нескольких очень полезных функций высокого уровня ( такие как поддержка строгой типизации, параллелизма и абстракции), которые просто недоступны в стандарте C.
Так что даже по мере роста проекта вам не нужно обходить языковые ограничения (подумайте об инкапсуляции, абстракции, пространства имен в C).
Не поймите меня неправильно, C, очевидно, работает для очень многих проектов, но как только проект достиг определенного размера (например, ядро Linux, gcc, GNOME), вы неизбежно оцените определенные особенности языков более высокого уровня. чтобы сделать процесс разработки менее утомительным и менее запутанным.
Однако в C эти функции обычно оказываются довольно плохо эмулированными из-за чрезмерного и почти извращенного использования препроцессора (это можно увидеть, например, в gcc code base), так что вы можете увидеть множество вложенных макросов, которые с точки зрения реализации фактически имитируют функции других языков программирования.
Кроме того, Ada - единственный язык программирования, о котором я знаю of, что фактически обеспечивает стандартизированную поддержку анализа исходного кода с использованием ASIS ,
Честно говоря, я бы использовал либо C, либо какую-то иерархию языков, которую я либо разработал, либо полностью согласовал вместе. Я хотел бы получить беспроблемный опыт, который начинается на уровне «голого железа», а затем я мог бы перейти на языки все более высокого уровня по мере продвижения вверх по проблемной области. Я бы, вероятно, выбрал что-то вроде:
Лично я считаю, что C / C # / PowerShell более тесно интегрирован, и мне нужен именно тот опыт. Конечно, если я когда-нибудь стану настолько амбициозным, чтобы написать ОС, У меня будет много свободного времени, и, вероятно, мне действительно понравится сначала заняться языковым стеком. Так что, возможно, это будет L / L # / LScript ...
BitC , кажется, имеет это в виду. Несмотря на название, похоже, что это середина ассемблера и шепелявости. Цель состояла в том, чтобы создать язык с сильным соответствием машинному языку, но имеющий промежуточное представление, поддерживающее более строгие выводы о правильности, чем это возможно с большинством других распространенных языков. Эти языки были созданы в рамках проекта Coyotos, операционной системы, преследующей высокие цели безопасности и надежности. Формальная проверка стала возможной благодаря ir, используемому в BitC.
Создайте базовые компоненты, такие как планировщики задач и драйверы, с помощью Assembly , затем создайте компоненты более высокого уровня, такие как приложения и инструменты, с помощью C
Я считаю, что это так же была создана Windows XP (не уверен насчет Windows Vista и Windows 7 ).
Ядро должно быть написано на низкоуровневом языке, C, безусловно, лучший выбор для этого, поскольку он настолько эффективен с точки зрения памяти. Более высокие уровни могут быть построены с помощью комбинации Java или, в идеале, Objective-C и языков сценариев, таких как python и ruby или lua.
D было бы интересным выбором. Из собственного описания:
D - язык системного программирования. Его основное внимание уделяется объединению мощи и высокой производительности C и C ++ с производительностью программиста современных языков, таких как Ruby и Python. Особое внимание уделяется требованиям обеспечения качества, документации, управления, переносимости и надежности.
Среда выполнения D предполагает наличие сборщика мусора, что не подходит для самых низких уровней ядра. Однако это было бы уместно для многих более высоких уровней.
Haskell.
После того, как вы перевернули правильные аппаратные биты, C станет ужасным языком для использования в остальной части ОС. Такие вещи, как планировщик, файловые системы, драйверы и т. Д., Являются сложными высокоуровневыми алгоритмами, и вы не хотите писать их на языке ассемблера (или C; то же самое). Это слишком сложно сделать правильно. (Подсистема виртуальных машин и диспетчер памяти, возможно, потребуется написать на чем-то низкоуровневом, так как вам нужно будет каким-то образом загрузить среду выполнения вашего высокоуровневого языка.)
В любом случае, это не просто сумасшедшая идея, которую я приду вверх с для SO. Вот ОС, написанная на Haskell: http://programatica.cs.pdx.edu/House/
Lisp - еще один хороший выбор; оригинальные Lisp-машины были бесконечно более гибкими (во время выполнения), чем «современные» ОС, такие как UNIX и Windows.
Я бы выбрал только следующие 3 из практических соображений.
Если это не гипотетический вопрос, и вы хотите создать свою собственную ОС, я бы, вероятно, выбрал C, потому что большинство примеров написано на C.
Кроме того, (а я еще не создал ОС, так что отнеситесь к этому с недоверием), я думаю, что библиотеки времени выполнения c было бы намного проще перенести на вашу новую ОС, чем, скажем, .NET.