Ні - це, безумовно, можливо складати динамічні мови.
Існують навіть деякі динамічні мови, які завжди складаються дизайном (наприклад, Clojure).
Питання, однак, стосується важливого спорідненого моменту: хоча динамічні мови можуть бути складені, часто трапляється так, що динамічні мови не можуть бути складені до коду, який є настільки ж ефективним, як і статично набрана мова . Це пояснюється тим, що в динамічних мовах є деякі притаманні функції, які вимагають перевірки виконання, які були б непотрібними в статично складеному мові.
Приклад цього: мови, які дозволяють виконувати виправлення часу виконання об'єктів (наприклад, Ruby), часто вимагають перевірки об'єкта (за допомогою пошуку хештибу чи подібного), коли ви викликаєте метод на об'єкті. Навіть якщо це компілюється, компілятору доведеться генерувати код, щоб здійснити пошук методу під час виконання. Певною мірою пошук цього методу не відрізняється від того, що повинен був зробити перекладач.
Це додає суттєвих накладних витрат у порівнянні з викликом методу на такій мові, як Java, де правильний метод може статично визначити компілятор з визначення класу і звести до простого виклику функції в рідному коді.
Я вважаю, що саме цей ефект більше, ніж усе інше, призводить до того, що динамічні мови мають в середньому повільнішу ефективність, ніж їхні статистично складені аналоги. Як видно з хибних орієнтирів , статично набрані мови (C, Java, Fortran тощо), як правило, найшвидші з динамічними мовами (Perl, Python, Ruby, PHP тощо) в нижній частині рейтингу.