Я просто наткнулся на эту старую ветку, но подумал, что правильно, что я могу высказать свое мнение. (Нет, я не "угоняю" зомби-нить.)
Моя разговорная интерпретация термина "строго типизированный ™" конкретно относится к "compile time." (Что-то что многие языки сегодня, включая Ruby, «просто не имеют».
Например, простой оператор присваивания, такой как a = b;
, может быть оценен компилятором как приемлемый или нет, основываясь на его оценке "типов" a
и b
и на основе положений о преобразовании типов (если применимо) , предоставленных программистами. Если утверждение было сочтено неприемлемым, возникнет ошибка времени компиляции, и «исполняемый» файл не будет создан.
Это понятие, конечно, не совместимо с основными принципами проектирования языков, таких как Ruby, PHP, Perl, JavaScript или многих других языков, которые сегодня используются чрезвычайно широко (и чрезвычайно успешно). , (Имейте в виду, я не имею в виду это как «суждение» ни за, ни против них. Они такие, какие они есть, и они обязательно приносят домой бекон.)
Поскольку у этих языков нет «времени компиляции», к моему (!) Разговорному выражению их нельзя назвать «строго типизированным». Они обязаны принимать решения во время выполнения , которые по своей конструкции не могли быть приняты раньше.
<Ч />
(Также обратите внимание, что я специально исключаю из рассмотрения различные "lint
инструменты", появившиеся для того или иного языка, чтобы заранее выявлять больше ошибок. Это очень полезно, да, да, но не одно и то же.)
(я также намеренно исключаю различные превосходные (!) Инструменты, которые генерируют исходный код на различных целевых языках, о которых идет речь ... по тем же причинам.)
И - еще раз говорю - я делаю классификацию, , а не суждение.