Оптимизация и языки программирования

На любых языках программирования пишутся программы, но почему-то говорят, что один более оптимизированный, другой менее, на одном программы быстрее, на другом медленее.

И вот тут возник вопрос. Вот есть у нас например тот же C# или Java. Языки по сути своей и не сильно сложные, и функционала хватает. Почему же тогда при всём этом люди продолжают писать программы на том же С и тд?

Начнём с того что низкоуровневые языки, за счёт своей "непосредственной" работы с памятью по-умолчанию оптимизированы лучше чем их высокоуровневые собраться с сокрытием основной реализации и высоким уровнем абстракции.

С другой стороны, высокоуровневые языки очень упрощают разработку и сопровождение кода, опять таки, за счёт своего высокого уровня абстракции. Также другим программистам намного понятнее разбираться в высокоуровневом коде. быстро "набросать" какую-то программку на том же C# намного проще чем на плюсах)

Также разница в том, что высокоуровневые языки как правило являются интерпретируемыми, так что код вначале компилируется в последовательность байтов, а уже потом выполняется виртуальной машиной, что также вызывает какие-то задержки. Но благодаря такой "прослойке" этот код выполняется на любой платформе.

Компилируемые языки компилируются в родной код для определённой платформы, по этому в данном случае оптимизация получается более проработанная, но тут нужна отдельная компиляция для каждой платформы.