Долго не мог понять разницу между статической и динамической типизацией, (что неудивительно, поскольку я нуб в программировании), все что я читал об этом, написано довольно мутно и невнятно, да и лень читать все эти матаны. Однако сегодня меня посетила крамольная мысль: никакой принципиальной разницы собственно и нет! Она сугубо условна. Вот что я имею в виду:
Возьмем некий примитивный «evaluator» лиспоподобного языка. (define eval (lambda(expr) (cond ((number? expr) expr)) (T (do-staf expr))) Здесь, хотя и в рантайме, статически проверяются типы! Вся разница лишь в том, что проверка происходит для участка программы (expr), а не для всего куска. Если это так, весь шум статическая vs динамическая яйцавыеденного не стоит, поскольку мы имеем зафиксированные на уровне компилятора/интерпретатора типы. Поправьте меня пожалуйста, если я не прав (по сути).