Существует целый ряд статей, в которых утверждается, что постепенная печать по своей сути медленная. Наиболее шокирующее утверждение исходит от Takikawa et al (2016) , которые сообщают о 100-кратном замедлении на постепенно набираемых программах.
Я просто не верю в это и хочу точно знать , откуда замедление. Я могу поверить, что реализация постепенной типизации в Typed Racket идет медленно, но в целом постепенная типизация не будет такой медленной.
Возьмем, к примеру, эту постепенно набираемую программу на Python:
x = some_fun()
y: int = x
Это неправильно, потому что x
может быть другого типа, чем int. Однако, если умный компилятор вставляет эквивалент assert
x = some_fun()
assert type(x) == int
y: int = x
тогда проверка типа становится обоснованной. Ясно, что даже если вы вставляете сотни утверждений повсюду в программе, замедление в 100 раз нереально. Что мне здесь не хватает?