Динамические языки программирования работают иначе, чем статические. 4
Статические языки проверяют типы в программе во время компиляции, ещё до запуска программы. 1 Переменная сохраняет свой тип из объявления, и ей не может быть присвоено никакое значение, кроме значений из её типа объявления. 4
Динамические языки применяют проверку типов во время выполнения. 4 Это означает, что любая переменная может содержать любое значение в любой точке программы. 4 Среда выполнения языка проверяет типы в разные моменты времени. 1 Например, если попробовать сложить два значения, то она может проверить, являются ли они числами, строками или массивами. 1 Потом она сложит эти значения, склеит их или выдаст ошибку, в зависимости от типа. 1
В результате код на динамическом языке проще и быстрее писать (не надо думать заранее о типах переменных), но он получается менее надёжным и намного (в среднем, раз в 10) более медленным, чем аналогичный код на статическом языке. 3