> -- Alexey Veselovsky писал(а):
> Насколько я понимаю, утиная типизация в Обероне и Яве либо очень громоздка и через поддержку рантайма (через рефлекшн и другие метопрограмминговые штучки), либо невозможна, когда оный рантайм это не позволяет.
Ну что же тут громоздкого?

## Код:
```
PROCEDURE (obj: SomeObject) HandleMsg (msg: ANYREC);
BEGIN
  WITH msg: ...
END HandleMsg;

...
someObj.HandleMsg(saySomething)
```

Это - базовый механизм языка. Как Вы думаете, составные документы работают, чтобы что угодно вкладывалось во что угодно?
Динамическая проверка типа - это не метапрограмминговые штучки, а необходимейшая конструкция современного языка. В Обероне выполняется ценой трёх косвенных обращений и одного сравнения, независимо от глубины иерархии.

> -- Илья Ермаков писал(а):
> Поковырял давеча немного Eiffel. Там контракты, инварианты и проч. в полный рост. Так вот, там как раз для релизов РЕКОМЕНДУЕТСЯ отключать ВСЕ динамические проверки.
Ну, это старые предрассудки, всё за проценты быстродействия боремся ))