Производительность зависит от многих вещей. Конечно, семантика языка должна быть сохранена, даже если мы ее компилируем - вы не можете удалить динамическую диспетчеризацию из Ruby, это ускорит процесс, но это полностью разрушит 95% всего кода Ruby в мире. Но все же большая часть производительности зависит от того, насколько умна реализация.
Я полагаю, под "высоким уровнем" вы подразумеваете "динамический"? Haskell и OCaml являются чрезвычайно высокоуровневыми, но они скомпилированы изначально и могут опережать C # или Java, даже C и C ++ в некоторых случаях, особенно если в игру вступает параллелизм. И они, конечно, не были разработаны с целью производительности # 1. Но авторы компиляторов, особенно те, которые сосредоточены на функциональных языках, очень умные люди. Если вы или я начали язык высокого уровня, даже если мы использовали, например, LLVM, как бэкэнд для нативной компиляции, мы бы не приблизились к этой производительности.
Заставить динамические языки работать быстрее сложнее - они откладывают многие решения (типы, члены класса / объекта, ...) на время выполнения вместо времени компиляции, и хотя статический анализ кода иногда может доказать, что это невозможно в строках n и м, вам все еще нужно иметь передовую среду выполнения и делать довольно много вещей, которые компилятор статического языка может делать во время компиляции. Даже динамическая диспетчеризация может быть оптимизирована с помощью более умной виртуальной машины ( Inline Cache кто-нибудь?), Но это большая работа. То есть больше, чем мог бы сделать небольшой новый фанатский язык.
Также см. Динамические языки Стива Йегге наносят ответный удар .
И, конечно, что такое значительная потеря производительности? В 100 раз медленнее, чем С, читает как много, но, как мы все знаем, 80% времени выполнения тратится на 20% кода = 80% кода не окажет заметного влияния на воспринимаемую производительность всей программы. Для оставшихся 20% вы всегда можете переписать его на C или C ++ и вызвать его из динамического языка. Для многих приложений этого достаточно (для некоторых вам даже не нужно оптимизировать). В остальном ... ну, если производительность настолько важна, вы должны написать ее на языке, предназначенном для производительности.