[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



Mikhail Gusarov -> debian-russian@lists.debian.org  @ Mon, 23 Mar 2009 14:52:52 +0600:

 AC>>> Строгая типизация создает ту проблему, что ее надо указывать.
 MG>> Необязательно.

 MG> Необязательно в том смысле, что в языках с определёнными классами
 MG> системами типов подавляющая часть типов может быть выведена
 MG> компилятором.

Когда необязательно - она уже нестрогая...

Собственно, если считать, как принято у ООшников, что тип есть, по сути,
набор разрешенных операций - мы получаем duck typing.  И, как принято в
Scheme, при необходимости неявное преобразование, скажем, из машинного
целого в длинное.  После чего становится непонятно, зачем объявлять тип
- нехай компилятор сам и разберется, что ему там удобнее, если он такой
умный.

А если считать, что тип - это область определения, то получаем
контракты, причем проверяемые только в рантайме.  Потому что sqrt(x-y).

Причем, заметим, при традиционной строгой типизации мы, как правило, на
раз получаем ошибку вычислений.  Потому что ни одну традиционную строгую
типизацию напрочь не интересует, не было ли переполнения машинного
представления типа.  Потому что за деревьями не видно леса, а типизация
делается в целях ускорения выполнения путем подавления проверок в
рантайме.  И чтобы работало, приходится контракт проверять вручную.
Зачастую - там, где компилятор мог бы, проанализировав теоретически
возможный граф вызовов, проверку убрать.

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru

Реляционная база данных - это не единственный способ сделать дурацкий поиск.
	Victor Wagner


Reply to: