https://compiler.su/utilita-translitera … nyj.php#41
Рукалицо. Вот зачем, зачем писать компилятор на C++? Этот язык устарел, даже Линус Торвальдс уже это воплотил в управленческих решениях. С таким уровнем культуры у Вас ровно ноль шансов сделать что-то передовое. Объясняю на пальцах (странно, что приходится это делать столько лет спустя). Есть два с половиной способа управления памятью: явное управление, сборка мусора и дальше вариации на тему выделения на стеке, которые в Расте. Из них явное управление нужно только для систем, жёстко оптимизированных по производительности, в т.ч. там, где паузы из-за запуска сборщика мусора неприемлемы. Оно трудоёмко (нужно отследить время жизни каждой сущности) и опасно (ошибки в этом отслеживании дорого стоят), регуляторы США это уже официально заявили два-три года назад. Т.е. даже для системного софта от Си и Си++ рекомендовано отказаться. Для компилятора же наиболее естественна сборка мусора, поскольку в нём есть процессы генерации деревьев, их преобразования. Он не является процессом реального времени — его задача — просто читать файлы, обрабатывать данные и писать их обратно в файлы. Подойдёт любой язык. Но Вы выбрали C++ для написания своего компилятора. Это значит, что Вы в общем-то в программировании не разбираетесь. Если бы Вы в нём разбирались, Вы бы имели кругозор, опыт программирования на разных языках и выбрали бы более подходящий язык для данной задачи. Вот посмотрите, как Недоря сделал, ну или хотя бы как сделал Вирт: он уже сто лет назад писал даже системный софт на языках со сборкой мусора (не говоря о компиляторах), т.е. даже там узость не столь критична, а где необходимо, крупицы явного управления памятью можно вставить и в Оберон. Т.е. Вы идёте, может быть и вперёд, но плетётесь в хвосте.
Я ещё 15 лет назад говорил, что C++ это
(зацензурировано), но те, кто на нём пишут, меня не слушали. Теперь это говорят авторитетные органы США, страны — безусловного мирового лидера в ИТ, но и их не слушают.Если Вам трудно изучить разные языки и Вы пишете на C++, потому что к нему привыкли, это тоже не говорит в пользу Вашей способности сделать что-то передовое в языкостроении. Потому что чтобы сделать что-то новое, нужно сначала более-менее неплохо изучить старое. Уметь работать в разных парадигмах. Например, если Вам не хватает в Го возможности строить семиэтажные контейнеры с угловыми скобками, надо задуматься над тем, почему и как другие люди без этого обходятся. Без этого понимания не получится сделать передовой язык, потому что это означает недостаточное знакомство с разными стилями программирования. Поэтому — окститесь, поучите хорошее, что уже сделано и перейдите на Го, ну, или может быть, на C#, если уж прямо не можете без ООП (а надо мочь, раз Вы разрабатываете ЯП). Я бы ещё мог посоветовать ocaml (на нём пишут компиляторы), CL, Haskell либо Яр-23, но тут везде проблематично с отладчиком, что тоже замедляет разработку. Питон не посоветую — он для маленьких программ и тормозной. Раст — для задротов. А больше вроде и не из чего выбирать.
Есть потребность срубить дом.
Есть инструмент — тупой топор — слетающий с ручки
Есть результат: построен кривой дом, который может упасть на голову в любой момент, и минус два пальца на руках.
Впрочем, в данном проекте результата и нет.
Хвостморда. Ну зачем быть таким токсичным?
1) нельзя предполагать, что у собеседника меньше опыта, он может оказаться суперстар;
2) давать прямые указания - это хамство; // значит идите работайте
3) не надо себя выпячивать, то что у вас 15 лет, нужны неперсонализированные аргументы; // то, что у вас 15, у кого-то 25
4) не надо стараться задеть собеседника прямыми оскорблениями; // Вам всё ясно, дебилы?
5) и советы, в целом, непрошенные тоже никому не нужны; // По утрам нужно делать зарядку и пробежку, а питаться сбалансированно, часто и небольшими порциями
6) фактчекинг желательно выполнять.
Отредактировано Лис (2025-04-04 13:39:19)