Re: Perl or Python?
Aleksey Cheusov -> debian-russian@lists.debian.org @ Thu, 19 Mar 2009 18:58:59 +0200:
>> AC> Имеет. Динамические языки требуют на порядок большего количества
>> AC> тестов. Это и есть "цена" динамичности.
>>
>> Из вышеизложенного следует, что нифига не большего. Ровно такого же.
AC> Читать внимательно. Проверка соответствия типов в кусках кода,
AC> который не покрыт тестами дает _минимальную необходимую_ гарантию
AC> корректности этого куска кода.
А с какого перепугу ты решил, что минимальная необходимость именно
такова? С того, что легче написать транслятор, способный это проверить?
Так задаче-то с того не легче...
Я бы скорее сказал, что с точки зрения задачи минимально необходимой
является запись контракта. И пусть транслятор из этого контракта
выведет, что сумеет, на стадии компиляции. Там в принципе можно
проверить гораздо больше, чем тип. Ну и соответственно, автоматически
зажухать лишние проверки, если есть контракт и у вызывающего, и у
вызываемого кода.
>> Потому что статического контроля для реальных задач совершенно
>> недостаточно.
AC> Надевать обувь зимой при выходе на улицу совершенно недостаточно
AC> для того, чтобы не замерзнуть, но почему-то все ее надевают. Ты же
AC> матемак, а тут элементарная логика :-)
Так обувь надевать необходимо, а тип объявлять - нет...
>> AC> То, что многие опенсорсники их не пишут, полагаяюсь исключительно
>> AC> на бетатестирование - это их проблемы.
>>
>> А вот функциональный подход - на порядок меньшего (позволяет
>> декомпозицию и тестов тоже).
AC> Угу, в проектах уровня hello world.
С хренов ли?
Собственно, самый толстый набор тестов, который я видел, написан к
проекту на языке со статической типизацией. Потому как толку там с той
типизации... А проверять надо, как искажены документы, когда устарели
ключи, и т.п., и что при этом выводится в лог... И от того, что типы
сходятся, никому не легче.
AC> И это, технологии формального доказательства правильности программ
AC> вполне развиты и для императивного подхода тоже.
Вот только не работают. Ну, то есть все бы ничего, но сложность
доказательства - экспонента от размера программы, и вероятность ошибки в
доказательстве, соответственно, тоже. Программы уровня hello world,
правда, доказывать можно...
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
/итд/почтопосылалка.нстрк (c)
Reply to: