[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: