FWIW, как только проект наберет определенный размер и импульс, не исключено, что он действительно выиграет от совместимости с C ++: даже если он не будет перенесен на C ++ напрямую, на самом деле много современные инструменты, связанные с работой / обработкой исходного кода C ++.
В этом смысле отсутствие совместимости с C ++ может фактически означать, что вам, возможно, придется придумывать свои собственные инструменты для выполнения конкретных задач. Я полностью понимаю причину предпочтения C над C ++ для некоторых платформ, сред и проектов, но, тем не менее, совместимость с C ++, как правило, упрощает проектирование в долгосрочной перспективе, и самое главное: предоставляет опции .
Кроме того, существует множество C-проектов, которые в конечном итоге становятся настолько большими, что могут на самом деле извлечь выгоду из возможностей C ++, таких как, например, улучшенная поддержка абстракции и инкапсуляции с использованием классов с модификаторами доступа.
Посмотрите, например, на проекты linux (kernel) или gcc, оба из которых в основном "только C", однако в обоих сообществах разработчиков регулярно обсуждаются потенциальные выгоды от перехода на C ++.
И на самом деле, в настоящее время продолжаются усилия gcc ( в дереве FSF!) По переносу источников gcc в допустимый синтаксис C ++ (см. gcc-in-cxx для детали), так что компилятор C ++ может быть использован для компиляции исходного кода.
Это было в основном инициировано долгосрочным хакером gcc: Ианом Лэнсом Тейлором.
Первоначально, это только для того, чтобы обеспечить лучшую проверку ошибок, а также улучшенную совместимость (то есть, когда этот шаг завершен, это означает, что вам не обязательно иметь компилятор C для компиляции gcc, вы могли бы также просто используйте компилятор C ++, если вы оказались «просто» разработчиком C ++, и это то, что вы получили в любом случае).
Но в конечном итоге эта ветвь призвана стимулировать переход к C ++ в качестве языка реализации gcc, что является действительно революционным шагом - сдвиг парадигмы, который критически воспринимается этими людьми из FSF.
С другой стороны, очевидно, насколько сильно gcc уже ограничен своей внутренней структурой, и что все, что хотя бы помогает улучшить эту ситуацию, следует приветствовать: начинать вносить вклад в проект gcc излишне сложно и утомительно, в основном из-за сложной внутренней структуры уже начали эмулировать многие функции более высокого уровня в C ++, используя макросы и специфичные для gcc расширения.
Подготовка базы кода gcc для возможного переключения на C ++ - это наиболее логичная вещь (независимо от того, когда она на самом деле сделана, хотя!), И она действительно необходима для того, чтобы оставаться конкурентоспособной, интересной и понятной просто релевантно , это применимо, в частности, из-за очень многообещающих усилий, таких как llvm, которые не несут всей этой лжи, сложности с ними.
Хотя написание очень сложного программного обеспечения на C часто возможно, оно становится излишне сложным, но многие проекты давно просто переросли C. Это не значит, что C больше не актуален, скорее наоборот. Но, учитывая определенную базу кода и сложность, C просто не обязательно является идеальным инструментом для работы.
На самом деле, вы даже можете утверждать, что C ++ не обязательно является идеальным языком для определенных проектов, но пока язык изначально поддерживает инкапсуляцию и предоставляет средства для реализации этих абстракций, люди могут обойти эти ограничения.
Только потому, что очевидно, что можно писать очень сложное программное обеспечение на языках очень низкого уровня, это не значит, что мы обязательно должны это делать или что оно действительно эффективно в первую очередь.
Я говорю здесь о сложном программном обеспечении с сотнями тысяч строк кода, срок службы которого составляет несколько десятилетий. В таком сценарии варианты приобретают все большее значение.