On Tue, 3 Dec 2019 at 13:31, Александр Коновалов a.v.konovalov87_AT_mail.ru <refal@botik.ru> wrote: > > Бойко назвал Рефал _слаботипизированным_ языком, имея в виду то, > что базовых типов мало и пользователь не может создавать новые > типы. Но термин _слабая типизация_ (weak typing, синоним: нестрогая > типизация) уже занят, означает, что компилятор допускает неявные > преобразования между типами
Уточню, что я не совсем то сказал. Цитирую написанное мной раньше: «Слабо типизированным я называю язык, в котором, грубо говоря, типы данных имеют небольшую роль. Например, их мало и нельзя определять новые.» Итак, суть этого свойства не в том, что количество типов малое, а в том, что типы данных имеют в целом слабое, малозаметное присутствие в языке, они не настолько существенны, как в других языках. В большинстве случаев это действительно идёт вместе с малым количеством типов, но это не обязательно. В языке REBOL, например, довольно большое количество встроенных типов, однако на программирование это несильно сказывается, так как у большинства этих типов узко прикладной характер; например, имеется тип «имя файла» — особый вид текстовой строки. Это для программиста может и удобно, но несущественно. А для написания программ он так или иначе создаст удобные ему структуры из блоков (как в Рефале — из последовательностей). В итоге REBOL всё-таки слабо типизирован. Многие языки, в том числе Рефал, предоставляют средства создавать сколько угодно сложные структуры данных, но не позволяют определять новые типы в формальном смысле. Для таких языков типы мало существенны, в них они малозаметны, поэтому я их считаю слабо типизированными. Впрочем, вне зависимости от того, как называть то, что я называю слабым, мне кажется ошибочным одно и то же называть словами строгое/нестрогое и сильное/слабое (ошибочно это и в английском языке).