Страницы

Утиная типизация обманывает

Считается, что неявная типизация позволяет связать слабо связанные типы, поскольку не требует указывать воплощаемые интерфейсы. Но для того, чтобы связывание через интерфейс работало, необходимо, чтобы тот, кто создаёт его воплощение, хотя и не прописывал бы явно включение самого интерфейса, но всё равно чётко бы следовал его описанию. Иначе даже похожие системы могут легко оказаться несовместимыми, хотя бы и по другому порядку параметров или их названиям, и что намного важнее — по деталям ожидаемого поведения.

Это значит, что в правильном коде прямая связь между интерфейсом и воплощением всё равно существует, но присутствует лишь в голове, и, возможно, документации, но не в самом коде. Хорошая формальная система не должна прятать важные детали, а наоборот, должна выносить их в явную схему[0].

Единственная задача, которую решает утиная типизация — это отказ автора языка програмиирования от создания хорошей формальной системы в расчёте на то, что автор кода сам как-нибудь порешает без лишнего сопротивления языка, но также и без его помощи. Это слабость, которая нередко преподносится как преимущество.


[0] Смотрите также заметку про ложную идею программирования с помощью языка, а не на языке.

Комментариев нет:

Отправить комментарий