GOGI, ты нас не слушай. Сделал первую программку и молодец. А Сергей прав — надо кроме языка ещё и основы поучить.
Murkt> Я не привожу youtube или google в доказательство того, что питон - это хорошо. Я привожу их в доказательство того, что duck typing работает, причём работает без всяких проблем. И не падает, что удивительно. Десятки миллионов пользователей годами не могут эти сайты уронить. Несмотря на отсутствие статических проверок типов. А где здесь доказательство того, что он работает. Я знаю кучу проектов написанных на ассемблере. Это может быть только доказательством дисциплины разработчиков. Косвенно — технологии программирования, которые они применяли. И говорить, что google написан на питоне, это как говорить, что в машине главное — это колёса. Там за фронтэндом стоит уже куча всего всякого. Местами питоном и не пахнет.
Murkt> Слова красивые. Разверни более подробно, чем же грозит применение языков с "утиной" типизацией? В тех областях, где они сейчас применяются. И через сколько лет, ориентировочно, исчезнет оправданность? Да обычно в те сроки, когда модификация программы начинает стоить больше её первоначально разработки. Так вот при написании программ с отсутствием проверок — программа достигает такого состояни гораздо раньше.
Murkt> Выше я уже сказал, что про сайты - это не доказательство лучшести питона. Извини, они не доказательство, по хорошему, ничего.
Murkt> А что, со статической проверкой типов возможно полное тестирование? Разве что в случае программ уровня hello world. В статических языках просто отлавливаются ошибки на этапе компиляции, которые лучше вообще не делать, чем их потом искать.
Murkt> Я протестирую его на тех типах и данных, которые я буду использовать. Если он работает и на других типах - так в чём проблема? Когда мне понадобится, я протестирую, или другой человек протестирует этот метод на работу с другим типом данных. В том то и проблема, что ты протестировал, а на остально положил на авось. А функция даже не изменилась. В твоём примере огромные затраты на регрессивное тестирование. А, если фунция проверяет то, с чем она работает, то предыдущие результы полного покрытия по возможным типам параметров или объектов уже можно перенести — она от новых не зависит. ВОт, если её потрогал, то тогда надо.
Murkt> Если работает - я его повторно буду использовать. Или ты думаешь, что в динамически типизируемых программах в коде появляются переменные с неизвестно каким типом и значением, и которые могут из-за этого уронить мою программу? Ну, разве что рядом НЛО пролетать будет. Да запросто. Потому они и динамические. Пришёл человек дописал тип, а проверять надо все процедуры и методы. Потому как неизвестно, как с новым типом любая процедурка работает.