Я хочу лучше C. Позвольте мне объяснить:
Я делаю много программирования на C, что требуется для приложений, которые имеют потребности в реальном времени, такие как аудиопрограммирование, робототехника, драйверы устройств и т.д.
Пока я люблю C, одна вещь, которая нервничает после того, как я провела много времени с Haskell, - это отсутствие надлежащей системы типов. То есть, как только вы захотите написать более универсальную функцию, скажите что-то, что манипулирует общим указателем (например, общий список ссылок), вы должны отличать вещи от void*
или что угодно, и вы теряете весь тип Информация. Это система "все или ничего", которая не позволяет писать общие функции, не теряя при этом всех преимуществ проверки типов.
С++ не решает этого. И я вообще не хочу использовать С++. Я нахожу классы и шаблоны OO головной болью.
Haskell и его классы классов действительно решают это. Вы можете иметь семантически полезные типы и использовать ограничения типа для записи функций, которые работают с классами типов, которые не зависят от void
.
Но в домене, в котором я работаю, я не могу использовать Haskell, потому что он не работает в режиме реального времени - в основном из-за сбора мусора. GC необходим, потому что очень сложно выполнять функциональное программирование, которое является распределенным, без автоматического управления памятью. Тем не менее, нет ничего конкретного в идее классов типов, которая идет против семантики C. Я хочу C, но с надежной системой типов Haskell, чтобы помочь мне написать хорошо типизированные системы. Тем не менее, я действительно хочу, чтобы C: я хочу контролировать управление памятью, я хочу знать, как выкладываются структуры данных, я хочу использовать (хорошо типизированную) арифметику указателя, я хочу изменчивость.
Есть ли такой язык? Если да, то почему он не более популярен для низкоуровневого программирования?
Кроме того: я знаю, что в этом направлении есть эксперименты на небольшом языке, но меня интересуют вещи, которые действительно могут использоваться в реальных проектах. Мне интересны развивающиеся языки, но не так много "игрушечных" языков.
Я должен добавить, я слышал о Cyclone, что интересно, но я не смог его собрать для компиляции (Ubuntu), и я не слышал о каких-либо проектах, которые действительно используют его. Любые другие предложения в этом ключе приветствуются.
Спасибо!