В 2014 году проблема уже не так ясна. Движок Google V8 JS делает довольно тяжелые вещи, чтобы оптимизировать ад из js.
PyPy может быть намного быстрее, если будет доступно только достаточно денег.Скорость выполнения Python в основном не имеет значения, поэтому никто не вкладывает большие средства в PyPy.
Это больше не техническая проблема.Посмотрите на инструкцию Java InvokeDynamic.Конечно, эти вызовы стоят дороже при первом вызове, но JVM может делать магические вещи, как только эти вызовы запускаются.То есть: JVM может делать предположения и узнавать о коде во время его выполнения.Если метод всегда возвращает int, возможно, этот метод всегда возвращает int.На самом деле JVM делает гораздо больше.
В 2014 году она действительно не динамична, а статична с точки зрения производительности.Конечно, C ++ всегда будет самым быстрым инструментом в мире, но динамические языки с джитами не медленнее, чем они были несколько лет назад.
Подождите еще несколько лет, держу пари, что статический анализ намного сильнее в2016 или 2017. В настоящее время выполняется несколько очень интересных исследовательских проектов.
В теории: В принципе, вы можете вывести каждый тип, используя статический анализ типов, вы должны понять что код делает до того, как это сделает.Это не невозможно.
Когда статический анализ становится более мощным, вам действительно больше не нужна система статических типов.Все системы статических типов, даже haskell, ограничивают количество правильных программ.Итак, по сути: если у вас есть анализатор, который может доказать правильность программы, анализируя ее, она намного мощнее системы статического типа, которая может действовать только в пределах границ.А что касается повторного использования кода: ничто не может сравниться с динамической типизацией.
Некоторые считают, что динамическая типизация вредна для больших приложений, но , если статический анализ становится более мощным, вы могли бына самом деле имеют ту же или, может быть, гораздо более проверенную правильность, какую может предложить система статических типов.Конечно, статически типизированные языки также могут быть статически проанализированы, но чем статическая система типов будет бесполезна.
Итак, по сути: вот много если, я знаю.Но 10 лет назад люди бы рассмеялись, если бы вы сказали им, что js становится настолько быстрым, что вы можете легко писать в нем тяжелые 3d-приложения opengl.
Никогда не стоит недооценивать будущее.