Термин "строго типизированный" не имеет согласованного определения.
Это приводит к "великому" аргументу в огненной войне, потому что, когда кто-то оказывается неправ, он может просто переопределить его, чтобы обозначить то, что он хочет. Кроме этого, этот термин не имеет смысла.
Лучше просто не использовать термин или, если вы его используете, сначала строго определить его. Если вы видите, что кто-то другой использует его, попросите его определить термин.
У каждого свое определение. Вот что я видел:
- строго типизированный = статически типизированный
- строго типизированный = явно типизированный
- строго типизированный = номинально
- строго типизированный = типизированный
- строго типизированный = не имеет неявных типов, только явные
- строго типизированный = не имеет типов вообще
- строго напечатано = что я понимаю / слабо напечатано = что я не понимаю
- строго типизированный = C ++ / слабо типизированный = все остальное
- строго типизированный = Java / слабо типизированный = все остальное
- строго типизированный = .NET / слабо типизированный = все остальное
- строго типизированный = мой язык программирования / слабо типизированный = ваш язык программирования
В теории типов существует понятие, что одна система типов сильнее , чем другая. В частности, если существует выражение e1
такое, что оно принимается системой типов T1
, но отклоняется системой типов T2
, то говорят, что T2
на сильнее , чем T1
. Здесь следует отметить две важные вещи:
- это сравнительный, а не абсолютный: нет сильных или слабых , только сильнее и слабее
- нет значения, подразумеваемого этим термином; сильнее не значит лучше