Замена для программирования на низком уровне C?
Итак, C явно имеет довольно доминирующую опорную точку программирования на низком уровне..... но что-то выходит, что бросает вызов/хочет его заменить?
Python/С#/и т.д. все, кажется, нацелены на очень высокий уровень, но когда дело доходит до ничтожного низкого уровня, материал C кажется королем, и я не видел много "попыток" заменить это?
Есть ли что-нибудь там, или обучение C для материала низкого уровня кажется стандартным?
Ответы
Ответ 1
Недавняя тенденция продвигается к объектно-ориентированным и управляемым языкам - например, Symbian как ОС полностью написана на С++. Также в исследовании Microsoft появилось ОС Singularity, который является моделью управляемого управления. Идея заключается в том, что управляемые языки защищают пользователей от ошибок в C-подобных утечках ресурсов, отторжения указателей и т.д., Абстрагируя эти идеи. Также объектно-ориентированная парадигма помогает при написании кода легко поддерживать код. Пока C все еще управляет внедренным миром, однако мы можем видеть, что изменение в ближайшее десятилетие с все более и более внедряемым миром, охватывающим С++ как язык выбора.
Ответ 2
Если вы имеете в виду системный уровень, то, возможно, D Language.
Ответ 3
Ну, честно говоря, это зависит от вашей потребности быть "низким уровнем" / "системным уровнем" и тем, что система.
Как справедливо отмечает Неера, наблюдается тенденция к управляемым языкам.
Итак, если вы пишете код приложения, если вы на самом деле не пишете алгоритмы и оптимизацию, идея состоит в том, что вы используете абстракции с управляемым кодом/более высоким уровнем. Потребность делать материал низкого уровня все время на общих платформах значительно сокращается. В любом месте, где у вас есть доступ к API, который находится где угодно, вы, вероятно, будете иметь более хорошие уровни абстракции.
Однако, если вы реализуете новую архитектуру, вы можете: использовать сборку для создания компилятора для этой платформы или написать компилятор, который выводит машинный код с этой платформы с другой платформы (кросс-компиляция). Затем вам нужно скомпилировать компилятор для этой платформы.
Как вы можете себе представить, на С++ сложнее иметь дело с C в этом отношении. Даже C - это действительно попытка сделать хорошо. Я слышал, что люди говорят, что им нравятся языки на основе стека, такие как FORTH, потому что для основной работы они могут получить его и работать с очень маленькой сборкой ( по сравнению с компилятором переменного тока или полным перекрестным компиляционным усилием).
Изменить (потому что мне это нравится) Здесь ссылка на JonesForth git. Взглянуть. Jonesforth - это реализация четвертой сборки i386 в комплекте с комментариями кодов, которые проходят через весь процесс.
Ответ 4
LLVM
Ответ 5
C для низкоуровневых материалов является стандартным. C работает и известна. C является быстрым, потому что он является низким уровнем и заставляет программиста делать много вещей, которые Python и С# делают для вас. Вы могли бы написать другой язык, предназначенный для замены C, но я не думаю, что он доставит вас куда угодно, кроме немного другого синтаксиса. (Если вы хотите сохранить скорость C).
Почему C так быстро? Потому что его блестящий ассемблер. Для того, что вам нужно сделать еще быстрее, вы используете YASM или встроенный ассемблер.
Ответ 6
Что бы ни случилось с Google GO?
Ответ 7
На самом деле существует довольно много вещей, которые можно использовать для программирования низкого уровня. Здесь некоторые использовали в прошлом преимущества с C.
- Варианты Pascal (используемые в GEMSOS)
- Оберон (используется в системе Оперсона и A2 Bluebottle)
- Ada (используется в критически важных для безопасности проектах и не менее трех ОС на ограниченном оборудовании)
- PL/0 (MULTICS)
- Modula (используется в CVSup и некоторых академических проектах для правильного системного программного обеспечения).
- Smalltalk и Haskell были использованы для прототипов OS или OS-замещающих слоев.
- Cyclone, Popcorn, C0 и Typed Assembly Language делают лучше, чем C, сохраняя большую часть.
Кроме того, языки со временем выполнения могут использоваться, если части нижнего уровня реализованы другим языком. Примерами являются Microsoft Verve и JX Operating System. Для старой школы, посмотрите на Genera LISP Machine и это "преимущества". Вы по-прежнему не можете многое сделать в современной разработке систем с инструментами C/С++.;)
Таким образом, даже если C не является полностью заменяемым, он в большинстве случаев сменяется в большинстве ситуаций без большой потери производительности. Получайте удовольствие от них.
Ответ 8
Я так не считаю
Мне нравится использовать мои старые сборки Rotines, но C сохраняет
Ответ 9
Я не думаю, что C достаточно низкий. Я бы предложил ассемблер. Насколько я знаю, это самый низкий уровень, который мог бы программировать программист. Но вам все равно придется иметь дело с ассемблером, компоновщиком и загрузчиками. Есть еще много деталей, связанных с целевой платформой.
Ответ 10
Существуют языки программирования на уровне платформы, такие как языки ассемблера и машинные коды. Сравнивая их с C, C - довольно высокий уровень.
Ответ 11
Что вы подразумеваете под низким уровнем?
C также используется для файлов высокого уровня, таких как пользовательские интерфейсы (весь GNOME Desktop и его библиотека GTK написаны на C).
Я бы поставил C в категорию низкого уровня, потому что он позволяет вам играть с реальной машиной (например: необработанные адреса памяти, просто чтобы процитировать что-то), добавляя только очень крошечный слой абстракции.
Также другие языки программирования предлагают чистое видение базовой машины:
-
Многие из них получены из C и совместимы с ним (С++, Objective-C). Они предоставляют некоторые инструменты для облегчения вашей жизни, абстрагируя что-то. Они могут заменить C, , но, если вы будете использовать эти языки, вы потеряете совместимость: интерфейсы ObjectiveC и С++ не могут использоваться C.
-
Другие принадлежат к совершенно другим семействам, и они, помимо вышеупомянутой проблемы, не могут даже напрямую использовать материал C.
Таким образом, на мой взгляд, главная причина, по которой C не отбрасывается, - это коммерческая причина (стоило бы слишком много писать все снова, чтобы все было совместимо с другими языками), по той же причине, почему COBOL все еще существует.
Есть и другие причины, такие как тот факт, что C голый, простой и быстрый для синтаксического анализа и компиляции и т.д., но, на мой взгляд, они являются второстепенными.
Некоторые крупные компании, которые могут позволить себе переписывать что-либо, однако, пытаются отбросить C (Apple широко использует ObjectiveC, например, в то время как другие используют С++).
Я думаю, что в будущем C будет существовать, так как нет никаких усилий при выборе конкретного стандартного языка, который будет использоваться везде вместо C (если вы напишете C-код, он будет работать как с C, так и с С++ и с системами ObjectiveC, в то время как противоположное неверно), и поскольку там имеется слишком обширная база кода кода C.