OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 12:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 09:06 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Trurl писал(а):
Geniepro писал(а):
А зачем грузить тестами логически верифицированную программу?

Как зачем? Удовольствие получать.

Да, но это означает, что ещё есть какое-то недоверие к логической верификации программ. А раз так, то зачем вообще верифицировать программы? :lol:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 09:45 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Geniepro писал(а):
Да, но это означает, что ещё есть какое-то недоверие к логической верификации программ. А раз так, то зачем вообще верифицировать программы? :lol:
Характерно для абсолютизированной логики: либо все, либо ничего.
А ведь суть сказанного info21 проста: если вы правильно строите программу, ее и отлаживать легче, и тестировать приятнее.
Необходимость в тестировании остается, т.к. человек несовершенен, ему свойственно ошибаться. Но найти потерянный винтик легче на чистом полу, чем в большой куче мусора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 10:13 

Зарегистрирован: Понедельник, 05 Июнь, 2006 09:49
Сообщения: 327
Откуда: Ленинград, Емельянов Алексей Николаевич
Лично моя основная претензия к пошаговой отладке заключается в следующем: - это очень утомительное занятие. С другой стороны, соглашусь, что использование пошагового отладчика как анализатора чужого кода имеет смысл. В этой связи, есть-ли принципиальная возможность в ББ использовать "трап", вернее его отладочный дамп, без выхода из процедуры? Ну чтобы можно было после останова и получения дампа возобновить исполнение?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 10:16 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Geniepro писал(а):
Да, но это означает, что ещё есть какое-то недоверие к логической верификации программ.

Вообще говоря, не означает. ;) Может я просто хочу насладиться списком сообщений "Test #1 - OK".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 10:30 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Geniepro писал(а):
Trurl писал(а):
Как зачем? Удовольствие получать.
Да, но это означает, что ещё есть какое-то недоверие к логической верификации программ. А раз так, то зачем вообще верифицировать программы? :lol:
Ха-ха! Вы получаете удовольствие только от того, чему не доверяете? % ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 10:46 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Axcel писал(а):
Лично моя основная претензия к пошаговой отладке заключается в следующем: - это очень утомительное занятие.
Согласен. IMHO, именно этот этап можно и нужно максимально автоматизировать ("пусть ошибка расскажет о себе сама").
Впрочем, иногда задумчивое многочасовое щелкание мышкой в отладчике - хороший предлог для небольшой релаксации на работе ("Как что я делаю?! Не видишь разве - багу правлю!!"). Наденешь наушники, включишь плеер и - дрожите, ошибки! Сейчас я до вас доберусь, сейчас... сей-час... сей... хр-р...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 10:50 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Trurl писал(а):
Может я просто хочу насладиться списком сообщений "Test #1 - OK".

По-моему, такой момент удовольствия реально присутствует.

<это для Geniepro, если кто не понял:>
Создание батареи тестов есть часть разработки.
Чтобы обеспечить будущее развития.

Успешно прогнать батарею тестов на тщательно построенной программе -- значит, убедиться в правильности тестов (тесты = форма кодификации требований).


Последний раз редактировалось Info21 Понедельник, 13 Октябрь, 2008 15:18, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 11:16 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Info21 писал(а):
Trurl писал(а):
Может я просто хочу насладиться списком сообщений "Test #1 - OK".

По-моему, такой момент удовольствия реально присутствует.
Кент Бек. Экстремальное программирование. (Глава 9. Обратно к истокам)
Цитата:
... если мы хотим работать сообразно с человеческой природой и при этом мы хотим обеспечить тестирование, мы должны найти для тестирования краткосрочную эгоистическую причину.
К счастью, такая краткосрочная причина существует. Программирование, в случае, если вы используете тесты, - это более приятный процесс, чем программирование без тестов. Вы кодируете со значительно большей уверенностью.
Там большой хороший отрывок о том, почему тесты и полезны, и приятны. Рекомендую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 14:17 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Vlad писал(а):
P.S. Эх... не в правильных циклах счастье... Это все кишки, которые никому не интересны.

Может быть, если кишки изначально делать как-то модульно-компонентно-интерфейсно, то поиск багливых кусков будет проще? (это мысль вообще, а не про конкретную уже кем-то написанную систему, которую без отладчика отлаживать очень трудно)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 14:29 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Vlad писал(а):
P.S. Эх... не в правильных циклах счастье... Это все кишки, которые никому не интересны.
Кишки не интересны, если они работают как положено. Чему сильно способствуют правильные циклы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 15:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Geniepro писал(а):
А зачем грузить тестами логически верифицированную программу?

От опечаток. Доп. проверка граничных ситуаций. И т.п.
Верный расчёт любой инженерной конструкции не отменяет приёмо-сдаточных испытаний.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 15:37 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
AVC писал(а):
А чтобы прояснить для себя подобные вопросы.
Вот, к примеру, моя ситуация. Я делаю систему программирования для некоторых еще "неокученных" процессоров. При этом вынужден кроме компиляторов и ассемблеров делать также отладчик. Сам я отладчиком не пользуюсь, и меня беспокоит, что я недостаточно хорошо понимаю ожидания пользователей. Так что я заинтересован.


Боюсь, что мои ожидания будут отличаться от ожиданий ваших пользователей, так как опускаться к железке мне приходится очень редко. Но если интересно, то вот основные сценарии, для которых я использую отладчик:
1) Точки останова с изучением того, как программа дошла до этих точек.
2) Останов программы по исключительной ситуации. В BB это уже есть в виде трапа по всяким ASSERT.
3) Выяснение какая зараза поганит стэйт. Этот сценарий, к счастью, появляется крайне редко - при ковырянии в чужих сишных либах. Тем не менее, что делать в таких случаях без дебагера я не знаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 15:54 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Евгений Темиргалеев писал(а):
Кишки не интересны, если они работают как положено. Чему сильно способствуют правильные циклы.


Наверное мне повезло :) Мне не приходилось ловить баги в неправильных циклах, поэтому мне непонятна вся эта шумиха вокруг правильных циклов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 16:07 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Кузьмицкий писал(а):
Может быть, если кишки изначально делать как-то модульно-компонентно-интерфейсно, то поиск багливых кусков будет проще? (это мысль вообще, а не про конкретную уже кем-то написанную систему, которую без отладчика отлаживать очень трудно)


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 16:19 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Но где гарантия, что бага будет исправлена, если изначально нет уверенности, что алгоритмы строились правильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 16:31 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Но где гарантия, что бага будет исправлена, если изначально нет уверенности, что алгоритмы строились правильно?


Гарантию вам никто не даст, даже оберон :) Но вот максимальную уверенность, лично мне, дают тесты. И если будет код с кучей break'ов и покрытый тестами, и код с "правильными" циклами от самого Вирта, но без тестов - то мой выбор будет однозначно в пользу тестов :)

P.S. Я уже говорил, 99% алгоритмов придуманы до нас, отлажены и положены в библиотеку. Можетет не верить, но я уже давно не писал циклов на C++. Потому что есть std::for_each (с успехом заменеят for), std::find_if (с успехом заменяет while) и еще сколько-то простых алгоритмов, к которым сводятся самые наворочные и непонятные циклы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 17:19 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я прекрасно Вас понимаю. Я сам работаю с программами, в которых подавляющее большинство циклов тривиально. Так же, как Вы используете итерирование foreach и поиск search, так и я - полный проход линйеный поиск. И "наворочные и непонятные" циклы в этом случае строит только тот, кто не видит этих паттернов ("для каждого" и "существует-найдём"). Поэтому применительно к данным задачам воспринимайте фразы о правильном построении как то, что человек не клепает "неповторимые велосипеды", а чётко различает и реализовывает эти паттерны.

Но в задачах с нетривиальной алгоритмикой используются циклы, которые к этим схемам не сводятся. Без умения обосновать их никакой уверенности в их правильности быть не может.

Касательно тестов - никто их не отменяет. Просто сами по себе они ничего не гарантируют.

В программах даже нашего с Вами типа можно быть уверенным только в том случае, если они разработаны постепенным разбинием "сверху вниз", где суть каждого уровня очевидна. В частности, вышеназванный поиск и проход иногда раскручивается от сформулированного мат. предиката с кванторами E(xists) и A(ny). Типа, из одного алгоритма с матрицами (студенты у меня решали сегодня) - это одна из "листовых" процедур, до которых доразбили задачу:

Код:
PROCEDURE МаксВСтолбце (i, j: INTEGER): BOOLEAN;
(* Проверяет, что элемент m[i, j] является максимальным в своём столбце *)
   VAR k: INTEGER;
BEGIN
   (* !E k: (k # i) & (m[k, j] >= m[i, j]) *)
(* Коммент для форума: т.е. не существует такого элемента в столбце, который был бы больше m[i, j]
 Квантор E отображается тривиально в линейный поиск, показывающий либо опровергающий это утверждение: *)
   k := 0;
   WHILE (k < dim) & ~( (k # i) & (m[k, j] >= m[i, j])  ) DO
      INC(k)
   END;
   IF k < dim THEN
      RETURN FALSE
   ELSE
      RETURN TRUE
   END
END МаксВСтолбце;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Понедельник, 13 Октябрь, 2008 17:55 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
AVC писал(а):
Для выдачи значений переменных, вероятно, можно использовать существующий отладчик ББ или его слегка модифицированную копию.
После возврата из отладчика продолжить выполнение программы до следующей точки останова.
Если кто-то вознамерится его делать просьба не ограничиваться выдачей значений переменных, но предусмотреть возможность остановки по выполнении условий, задаваемых в самом процессе отладки. Как раз для понимания пригодится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Вторник, 16 Октябрь, 2012 11:24 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 519
Откуда: Украина, Днепропетровская обл.
Вместо:
Илья Ермаков писал(а):
Код:
   IF k < dim THEN
      RETURN FALSE
   ELSE
      RETURN TRUE
   END
Код:
   RETURN k >= dim

Хотя, кажется, так слегка менее наглядно... Зато "правильно", по-Обероновски-07. :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О пошаговой отладке
СообщениеДобавлено: Вторник, 16 Октябрь, 2012 12:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Oleg N. Cher писал(а):
Вместо:
Илья Ермаков писал(а):
Код:
   IF k < dim THEN
      RETURN FALSE
   ELSE
      RETURN TRUE
   END
Код:
   RETURN k >= dim

Хотя, кажется, так слегка менее наглядно... Зато "правильно", по-Обероновски-07. :wink:
По-моему, как раз это более наглядно.

(А И.Е. позор за такой код.)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB