Единственное, что ограничивало языковой дизайн, - это воображение и технические навыки языковых дизайнеров.Как вы сказали, C можно рассматривать как «переносимый язык ассемблера».Если это так, то вопрос о том, ограничил ли C дизайн, сродни вопросу о том, имеет ли сборка ограниченный дизайн языка.Поскольку весь код, написанный на любом языке, в конечном итоге выполняется как ассемблер, каждый язык будет подвергаться одинаковым ограничениям.Следовательно, сам язык C не налагает никаких ограничений, которые можно было бы преодолеть, используя другой язык.
При этом есть некоторые вещи, которые проще сделать на одном языке по сравнению с другим.Многие дизайнеры языка принимают это во внимание.Если язык разрабатывается, скажем, так, чтобы быть мощным при обработке строк, но производительность не имеет значения, то использование языка с улучшенными встроенными средствами обработки строк (например, C ++) может быть более оптимальным.
Многие разработчики выбирают C по нескольким причинам.Во-первых, C - очень распространенный язык.Проекты с открытым исходным кодом, в частности, заключаются в том, что найти опытного разработчика на языке C относительно легче, чем найти эквивалентного разработчика на некоторых других языках.Во-вторых, С обычно поддается микрооптимизации.При написании синтаксического анализатора для языка сценариев его эффективность оказывает большое влияние на общую производительность сценариев, написанных на этом языке.Для компилируемых языков более эффективный компилятор может сократить время компиляции.Многие компиляторы C очень хороши в создании чрезвычайно оптимизированного кода (что также является одной из причин того, почему многие встроенные системы запрограммированы на C), а критичный к производительности код может быть написан в виде встроенной сборки.Кроме того, C стандартизирован и обычно является статической целью.Код можно записать в стандарт ANSI / C89, и не нужно беспокоиться о его несовместимости с будущей версией C. Изменения, внесенные в стандарт C99, добавляют функциональность, но не нарушают существующий код.Наконец, C очень портативен.Если хотя бы один компилятор существует для данной платформы, это, скорее всего, компилятор Си.Использование очень переносимого языка, такого как C, позволяет максимально увеличить количество платформ, которые могут использовать новый язык.