Всем привет! Вопрос - какие сейчас существуют языки системного программирования? Интересно что придумали на замену Си. О ржавом вкурсе. Его можно не упоминать
Например, вполне можно считать время выполнения кода и ставить ограничения на это. Функция больше 100500 тактов занимает? Получай ошибку! Вот ради таких плюх всё это тащемта и делают. Ну и ради лулзов, конечно же.
Ну так ради лулзов и я могу это сделать - нужно прост после преобразования сделать чот типа
CAT(COUNTER_, OPCODE) вместо вывода с аргументами. Подставить таблицу
OPCODE_0x00 3
OPCODE_0xA5 2
...
И дальше уже что угодно делать с тактами - считать кол-во байтов, считать количество тактов, делать ограничения (через arr[N]) там где код описывается
Типичный аргумент сишников – смотрите, в нашем недоязычке тоже можно делать магическое пердолево! Но кроме пары недоделанных хелловорлдов и кучи текущего памятью говнокода редко кто что-то показать может.
Мне наш диалог напоминает разговор глухого с немым:
Фу, какая гадость
Ну сделай лучше, удачи Делает лучше
Ого какое пердолево
Ну так работает. И даже не требует указания типа
А вот если бы автор там сделал так, то тоже не надо было б. И вообще оно такты считать умеет
Ну так поменяв вот так то, можно и тут считать
Азаза, полный код не написал - фу, сишники обосрались!
По теме есть, что сказать, клоун? Может твой хаскель отличить 0x00 (zero page pointer) от 0х0000 (absolute pointer)?
Твой хвалёный sbcl не умеет в кросскомпиляцию (chez-scheme, racket умеют). Чтобы скомпилировать приложение под другую платформу, нужно иметь эту платформу у себя в наличии. Это в 2024 году! А остальные реализации тормозные.
Библиотеки в CL тоже, не смотря на 50 лет существования ЯП, представляют собой ведро помоев (неюзабильное, неоттестированное и от васянов). Ни в какое сравнение с тем же Racket, где несколько PhD с большим количеством времени занимаются своим хобби.
А уж столько фуррей, трансвеститов и (sic!) равинов я не видел ни в одном другом сообществе ЯП.
Не знаю, возможно, стоит сначала подумать, что тебя не устраивает в Си и какие его проблемы хочешь решить.
Вижу следующие варианты:
Организация кода
Мемори сейфити
Что-то ещё (?)
Первое решают почти все приведённые варианты.
Если второе важно, то, наверное, Rust неплох. Если, при этом, не хочется пердолева с борроу чекером, можно взять что-то со сборщиком мусора. Например, Go. На нём вполне успешно пишут системные утилиты и его хватает.
У C# вон появился Native AOT, оно пока слегка экспериментальное, и имеет ограничения. Но почему нет…
Есть ещё Nim, Zig. Тоже интересные, но я как-то ими не интересовался достаточно, чтобы что-то говорить. Выглядят так-то многообещающе.
Был Vala. By design залочен на Gobject, и в этом вроде его фишка… Вообще, мне очень нравится и идея, и реализация. Грустно, что оно уже почти мёртвое.
Есть ещё Cone. Не думаю, что у него есть будущее, но потыкать вполне интересно.
У него GC, хотя в последних версиях по умолчанию он на счетчиках ссылок и с разруливателем циклов (как в питоне). В общем условно годен для околосистемного программирования.
Zig.
Безопасности по памяти нет, но в остальном наверно самая лучшая на сегодняшний момент замена си. Вообще реально сейчас только два хороших варианта есть на полноценную замену си, это zig и rust.
Еще есть D, но в контексте системного и около программирования ему тоже очень сильно мешает GC.
даже если придумали, то сишку все равно придется учить, так как без взаимодействия с ней в системщине не обойтись
так что халявы не будет
а раз все равно учить, то не лучше ли сразу на нем писать, без перемешивания с «заменой»? ну а если сишка с ассемблером и верилогом не нравятся, то не суйся в системщину, помимо нее и в других нишах задач полно, например, до сих пор нет ни одного годного бразузерного движка, и с помощью всех этих новомодных язычков так и не смогли эту задачу решить, хотя, казалось бы, тут так и просятся языки с автоматическим управлением памятью, модулями и быстрой компиляцией, но нет - продолжают хавать утечки памяти и прочее непотребство
Релизнулся язык системного программирования HARE. Синтаксис - среднее между JS, C/C++ и Pascal.
«Язык оптимизирован для решения низкоуровневых задач, таких как разработка операционных систем, компиляторов, сетевых приложений и системных утилит, для которых требуется достижение максимальной производительности и полный контроль над выполнением. В языке применяется ручное управление памятью и статическая система типов, при которой каждой переменной явно должен быть присвоен определённый тип.»