многие(но не все) проблемы крестов в том, что им приходится поддерживать обратную совместимость с С?
программисты на rust, вам вопрос, насколько больно получать ошибки от компилятора? 😢
Тайп-астронавтика на шаблонах — тоже совместимость с Си?
Предполагаю, что получать UB и рантайм ошибки больнее - но это не точно =)
есть такое, но после ноды аж больно получать ошибки при компиляции
Ну это типикал для входящих в раст из ноды\пхп\питона итд
Вопрос конкретно про С а не совместимость стандартов итд
Это были вопросы с подвохом, потому что в моем понимании проблемы не только с совместимостью с Си (:
Поэтому я написал в скобках "..что многие(но не все) проблемы .."
Не могу сказать, многие ли это проблемы, но вот какие я вижу: * Система макросов, которые протекают куда только можно, а также проектная модель на них построенная (#include). От этого сильно страдает модульность кода как таковая, а также очень грустно становится тулингу - один и тот же файл приходится парсить и компилить (+ резолвить в случае IDE) в разных контекстах (с разными дефайнами); * На мой взгляд, слишком много UB-ситуаций. Не думаю, что в языке с такими требованиями от UB вообще можно избавиться (насколько мне известно, даже из Rust полностью не смогли его изгнать), но вот то, что их настолько много - плохо. Чего только стоит история вокруг std::launder из-за УБ, пришедшего из Си, причем это УБ было сделано из-за возможности оптимизации; в итоге эту оптимизацию реализовали только в одном компиляторе, а пользы она толком и не принесла; * Схожая с предыдущей проблема: слишком многое позволяется, несмотря на то, что почти наверняка код ошибочен. Например на одном из путей управления забыть return; * Стремная грамматика языка, от которой плохо как компилятору, так и прочему тулингу.
Ясно, спасибо за ответ!
Обсуждают сегодня