Я не думаю, что могу (или хочу) дать этому одеялу "да".Я думаю, что это вопрос прагматизма в сочетании с потребностями отдельного языка, а также зависит от того, является ли он скомпилированным языком (или скомпилированным байтовым кодом) или интерпретированным, или ...
Если вы пытаетесь писатьВ кроссплатформенном коде вы обнаружите, что наименьшим общим знаменателем обычно является компилятор C (из-за разной архитектуры ЦП ассемблеры не подходят для развертывания на многих платформах).Поскольку C ++ был написан так, чтобы располагаться на вершине большей части инфраструктуры C (например, использование распределения имен для соответствия перегрузкам типов в то, что понимает компоновщик C), это, как правило, язык ОО с наименьшим общим знаменателем, который доступен даже во встроенных системах.Это делает его популярным выбором для людей, которые хотят писать свой язык на высоком уровне и в обслуживании.
Кроме того, у большинства языков программирования есть основания для существования, они хотят решать проблемы другим способом (лучшев конце концов, обязательно означает другое), что означает, что у них есть довольно необычные потребности относительно того, что должен делать их код, и они не используют много средств поддержки, предлагаемых другим языком реализации, потому что они не будут иметь достаточного контролянад ним.Поэтому, учитывая, что вы захотите переопределить многие, например, объектную модель и типы данных, низкоуровневые аспекты C ++ на самом деле являются преимуществом.
Тем не менее, многие языки начинаются с написания их первой версии.в C ++, например, первый простой компилятор, а затем написать следующую версию в этой простой версии («начальная загрузка»).Это имеет то преимущество, что вы можете использовать свой собственный язык для его расширения.Для его переноса они затем модифицируют только свой компилятор для кросс-компиляции на нужную платформу, затем собирают компилятор с этим кросс-компилятором, и в результате получается собственная версия полного языка для новой платформы.
Языки, которые обычно этого не делают, обычно являются языками сценариев, которые, как правило, остаются интерпретированными языками, реализованными на C ++ (хотя другие упоминали популярные исключения).
Еще одна распространенная причина выбора C ++ - это существующая инфраструктура.,Например, если вы хотите привязаться к существующим системным фреймворкам, вам часто нужно перейти на C ++, или если вы хотите использовать преимущества существующих бэкэндов компилятора (таких как LLVM, который написан на C ++), или даже если они используют только C,часто C ++ является наиболее подходящим OO-подобным языком реализации, который может легко общаться с частями C системы.
Таким образом, вопрос, который вы хотите задать себе, весьма вероятен: каковы мои потребности и какой язык лучше всего подходитте?
Некоторые языки просто препроцессоры на другом языке (C ++ и Objective-C оба начинали как препроцессоры поверх C).Они добавляют свой собственный синтаксис или функции, переводят их на язык реализации, а затем компилируют этот измененный код, используя существующий компилятор.Если язык уже делает все, что вы хотите, это может быть лучшим подходом и позволит вам использовать опыт инженеров, работающих на этом другом языке, объединяя ваши рабочие часы в большее, чем вы могли бы предоставить.