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

> -- Илья Ермаков писал(а):
> Про тестирование тоже какие-то банальности - нашли панацею.
Ключевое слово -- модульное (unit) тестирование. Если покрытие полное, то дает очень хорошие результаты. Настолько, что вполне возможно уже не играет существенной разницы какой язык используется для написания каждого отдельного юнита, со статической или же с динамической типизацией.

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

Т.е. фактически предлагается делать именно то что пишет Эккель -- писать юнит-тесты с полным покрытием, в дебаг-версии их делать прогон. Убедившись что всё ок. Иварианты, контракты и проч. не нарушаются, откючить все проверки и собрать релиз, которым и пользоваться.