Автор Тема: Модульного тестирования недостаточно...  (Прочитано 10542 раз)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #15 : Июль 18, 2012, 02:37:20 pm »
Тем не менее, преимущества не избавляют от недостатков.
А какие недостатки у статической типизации? Какие преимущества даёт динамическая?

Разжевано уже сто раз... Какие конкретно недостатки ты не считаешь недостатками и какие конкретно преимущества ты не считаешь преимуществами?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #16 : Июль 18, 2012, 07:40:39 pm »
Разжевано уже сто раз... Какие конкретно недостатки ты не считаешь недостатками и какие конкретно преимущества ты не считаешь преимуществами?
Самое главное достоинство статической типизации -- больше проверок делает компилято, а не я. Чем сильнее типизация -- тем меньше мне работы по отлову ошибок. Юнит-тесты мало кто делает -- их ещё уметь делать надо, я не умею, например.
Пока я делал небольшую программу на Эрланге эта чортова динамическая типизация мне все нервы вымотала, а ведь в Эрланге она реализована весьма неплохо по утверждениям эрлангеров...
Так что даже если эта динамическая типизация и даёт какие-то бонусы, статическая типизация их с лихвой перекрывает...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #17 : Июль 19, 2012, 04:22:48 am »
Разжевано уже сто раз... Какие конкретно недостатки ты не считаешь недостатками и какие конкретно преимущества ты не считаешь преимуществами?
Самое главное достоинство статической типизации -- больше проверок делает компилято, а не я. Чем сильнее типизация -- тем меньше мне работы по отлову ошибок.

Это все известно. Я спрашивал про недостатки статической типизации про достоинства динамической, с которыми ты не согласен. Иначе мы имеем то, что имеем - определенный паритет в общем случае и преимущество того или иного в зависимости от конкретных обстоятельств.

Юнит-тесты мало кто делает -- их ещё уметь делать надо, я не умею, например.

Юнит тесты надо учится делать. Я про это уже писал (может даже на оборонкоре, давно дело было). Статическая типизация позволяет жить без юнит тестов там, где динамическая уже не живет. Но это не не жизнь ;) Все равно все отваливается и смелый рефакторинг невозможен.

Пока я делал небольшую программу на Эрланге эта чортова динамическая типизация мне все нервы вымотала, а ведь в Эрланге она реализована весьма неплохо по утверждениям эрлангеров...
Так что даже если эта динамическая типизация и даёт какие-то бонусы, статическая типизация их с лихвой перекрывает...

У тебя типичный парадокс Блаба ;) Либо у тебя была задача специфическая (куча разнотипных сущностей в одном месте и нельзя спутать). Но таких задач маленького размера практически не бывает.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #18 : Июль 19, 2012, 01:01:09 pm »
Либо у тебя была задача специфическая (куча разнотипных сущностей в одном месте и нельзя спутать). Но таких задач маленького размера практически не бывает.
В основном постоянное изменение одних и тех же типов данных, их добавление/удаление.
У меня такое постоянно.
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #19 : Июль 19, 2012, 02:18:57 pm »
Либо у тебя была задача специфическая (куча разнотипных сущностей в одном месте и нельзя спутать). Но таких задач маленького размера практически не бывает.
В основном постоянное изменение одних и тех же типов данных, их добавление/удаление.
У меня такое постоянно.

Возможно, что в случае динамического языка эта же задача может быть выражена не изменением типа,  а как-то по-другому.

adva

  • Sr. Member
  • ****
  • Сообщений: 385
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #20 : Июль 20, 2012, 03:48:52 am »
А посоветуйте что нибудь почитать про модульное тестирование. На 1С оно применимо?

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #21 : Июль 20, 2012, 04:04:19 am »
А посоветуйте что нибудь почитать про модульное тестирование. На 1С оно применимо?

Конкретную литературу не посоветую, сам разбирался не планомерно, а по ходу дела. Но начать стоит с TDD (с идеологии).

P.S. Прикольное обсуждение: http://forum.vingrad.ru/forum/topic-327169.html

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Модульного тестирования недостаточно...
« Ответ #22 : Декабрь 11, 2012, 08:49:32 am »
"Исследование отношения популярных языков программирования к случайным ошибкам"
Цитировать
Группа греческих учёных под руководством Диомидиса Спинеллиса провела интересное исследование чувствительности десяти популярных языков программирования к ошибкам и опечаткам при наборе текста программы.
...
Скрипт на Perl вносил в исходный код тестовых задач ошибки, имитирующие естественные ошибки при наборе программ — случайную замену одних символов, ключевых слов и идентификаторов на другие, увеличение или уменьшение числовых литералов на единицу. Всего было протестировано 136 реализаций тестовых задач, на основе которых было сгенерировано 280 000 программ, содержащих ошибки. 32% из них прошли компиляцию или проверку синтаксиса без ошибок и предупреждений. 23% успешно завершились, при этом 6,5% выдали корректный результат, а 16% — некорректный.

 Таким образом, можно сказать, что каждая шестая бессмысленная ошибка или опечатка в коде программы может быть обнаружена только при должном покрытии тестами и инспекции кода — компилятор и среда исполнения не смогут её отловить. Естественно, разные языки проявили себя по-разному.

 Языки со статической и/или строгой типизацией, что вполне ожидаемо, проявили себя наилучшим образом — C#, Java, С и C++ показали очень похожие результаты — около 10% не замеченных компилятором, лучший результат (8%) у C++. Немного хуже проявил себя Haskell — около 15%. У динамических языков разброс гораздо больше. Абсолютным антилидером стал PHP — в 36% случаев интерпретатор без возражений запустил некорректную программу. За ним с заметным отрывом идёт Perl с 22%, а строже всех ведут себя Ruby (16%) и Python (15%).
С++ удивил, конечно, Хаскелл тоже, хотя и в обратном смысле.
Питон оказался таким же устойчивым к опечаткам, как и Хаскелл, тоже удивительно...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems