OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 13 Декабрь, 2019 02:31

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




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

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2639
Откуда: Россия, Ярославль
Простой синтаксис проще понимать.
Минимум нюансов и частностей - проще понимать.
Граммотно составленный исходник проще понимать.

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

Если написать на ББ пошаговый отладчик? Удовлетворит ли это "поклонников" отладчика? А вот когда напишут, окажется, что нужен он будет, только как картина на стене, которая дырку закрывает, чисто для галочки... Хотя, возможно, некоторый толк от него будет.


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

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


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2933
Откуда: г. Ярославль
AVC писал(а):
Т.е. назначение пошагового отладчика может оказаться не совсем тем, какое предполагалось. :)
Вот именно. Претензия "а в ББ нет отладчика" звучит в данном контексте по-другому: "у нас есть проблема с дурно написанным кодом, и нам нужен инструмент, хоть немного облегчающий понимание такого кода".

Тут уже вопрос - откуда берётся плохо написанный текст.

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

Это оч-чень похоже на столкновении двух религий. И филиокве тут не поможет :)


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

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


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

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2639
Откуда: Россия, Ярославль
AVC писал(а):
Пётр Кушнир писал(а):
Если написать на ББ пошаговый отладчик?
Для этого прежде всего надо <...>

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


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

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
про отладчик была пара тем:
Действительно, общие вопросы
Пошаговый отладчик? - Сделаем пошаговый просмотровщик...


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

Зарегистрирован: Вторник, 18 Сентябрь, 2007 08:48
Сообщения: 108
Наколбасить трудный для понимания код можно в любом языке, даже на Обероне. Да и сам Оберон никак не способствует дисциплине программирования, это все миф, что Оберон способствует кристальной ясности кода. Все зависит от головы и рук программиста.
К примеру, на сайте у Зинна есть подсистема XY. По сути, это библиотека-обёртка для вызова графических функций, используя WinAPI. Откройте модуль XYLifeModel. Товарищ заюзал SYSTEM.Move() для быстрого копирования массивов. Смысл? Где варнинги?


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

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


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

Зарегистрирован: Вторник, 18 Сентябрь, 2007 08:48
Сообщения: 108
И что тут сложного в цикле LOOP... END, если начинающие на Обероне так долго въезжают? Это их проблема или проблема Оберона, что не могут поставить в нужном месте EXIT, чтобы разорвать цикл?


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

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Edward Ivanov писал(а):
И что тут сложного в цикле LOOP... END, если начинающие на Обероне так долго въезжают? Это их проблема или проблема Оберона, что не могут поставить в нужном месте EXIT, чтобы разорвать цикл?
LOOP - честный цикл, он не обещает какого-либо постусловия цикла. Как бы говорит: "Смотри в оба!" :)
А вот в Обероне-07 этих "поблажек" больше нет. Цикл LOOP исключен, а оператор RETURN стал часть завершения процедуры (т.е. его в цикл не вставишь).
Интересно было бы посмотреть на реальный код на O-07. Ведь, наверное, не так легко все циклы сделать правильными.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9165
Откуда: Россия, Орёл
Edward Ivanov писал(а):
И что тут сложного в цикле LOOP... END, если начинающие на Обероне так долго въезжают?

Начинающим вообще про LOOP знать не следует, также, как и про SYSTEM. И применяется LOOP в полгода раз, и только в таких случаях, которые новичку никак не встретятся.
А переходящих сразу настораживает, что конструкция полностью "ручная" (только явные выходы изнутри). На каждый день применять неудобно. Самое главное, что любимую "дубину" for+break из рук вышибли. А без for и EXIT не мил. Приходится что-то переосмыслять, земля под ногами плывёт просто :-)


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9165
Откуда: Россия, Орёл
AVC писал(а):
Интересно было бы посмотреть на реальный код на O-07. Ведь, наверное, не так легко все циклы сделать правильными.

Не знаю, я ни разу в своей практике не использовал LOOP.
Даже КА строю REPEAT ... UNTIL state # exit;


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
AVC писал(а):
... наверное, не так легко все циклы сделать правильными.

Как это?? (нервно теребя 8-ю лекцию) Нет, на самом деле, как это??


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

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Info21 писал(а):
AVC писал(а):
... наверное, не так легко все циклы сделать правильными.

Как это?? (нервно теребя 8-ю лекцию) Нет, на самом деле, как это??
Ну... (с предчувствием беды глядя на то, как info21 нервно теребит 8-ю лекцию :oops: ) ...я не говорю о линейном поиске.
Но изредка попадаются такие гадкие циклы, что хочется выйти прямо из их середины (не в дверь, так в окно). Или выйти из вложенного цикла.
Можно, конечно, попытаться преобразовать цикл. Например, повторить какой-то кусок кода дважды - до цикла и в его теле. Или завести вспомогательную переменную-флаг и проверять ее во всех вложенных циклах.
Но это как-то отягощает цикл, усложняет его понимание.
Да и пацаны будут код читать - засмеют... :roll:
(Внезапно расхрабрившись) Да что циклы... Вот в Обероне нет стандартного способа выхода сразу из нескольких вложенных вызовов процедур (речь идет не о HALT, прерывающем выполнение команды и передающем управление основному циклу системы).
Простой пример: пишу DLL с обработкой сложного запроса. В какой-то момент выясняется, что запрос некорректен (хотя бы синтаксически). Что мне делать? В DLL я хальтом не отделаюсь... Вот я и пишу на Си++, где есть исключения (если сильно повезет - на O-2 от XDS, там есть EXCEPT). А всего-то ведь нужно аккуратно вернуть управление вызывающей программе с каким-нибудь утешительным текстом (вроде "сам дурак" :D ).


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
По поводу "подсмотреть значение" - не обсуждаем, т.к. это не касается пошагового отладчика и в ББ поддерживается лучше, чем в других компилирующих средах.


Почему это не обсуждаем? В BB это можно сделать только изменив исходник. А хочется:
1) Сделать "это" в уже запущенной программе (да, я знаю, что в BB понятие "программы" отлично от общепринятого, но тем не менее оно там тоже есть).
2) Продолжить выполнение после "этого".
3) Избежать ненужной модификации исходного кода (да, это может стать ненужной проблемой).


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
AVC писал(а):
...я не говорю о линейном поиске.
Но изредка попадаются такие гадкие циклы ...

Дак... Есть же еще в лекциях и про слияние, и про инвариант цикла, и про общий цикл Дейкстры.
Не говоря про пример того, как использование паттерна "генератор" тривиализует разработку кратного цикла со сложным условием выхода...


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Пётр Кушнир писал(а):
Граммотно составленный исходник проще понимать.


Ох... Вот я совершенно недавно исправлял баг в системе ВебСервер (джаваскрипт) + виндовый сервис (C++). Все это модифицировалось последний раз 5 лет назад и как это работает уже никто не помнит (а я вообще к этой системе никакого отношения никогда не имел). Давайте представим, что там все исходники (100%) правильно составлены (хотя это, естественно, не так). И чего? Вы будете месяц(ы) изучать миллионы строк правильного кода + соответствующие технологии (я в джаваскрипте и в веб-программировании вообще ни в зуб ногой)? Только не надо рассказывать, что все это решается и без дебагера. Решается, но с дебагером быстрее. Логов меньше писать/анализировать да по исходникам прыгать...

P.S. Эх... не в правильных циклах счастье... Это все кишки, которые никому не интересны.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8215
Откуда: Троицк, Москва
Все случаи, когда у меня возникало непреодолимое желание пошагово исследовать поведение программы, в итоге решались перепроектированием (и всегда с приятным упрощением).
А рефлексия неизменно приводила к однозначному выводу: нужно просто грамотно делать программу. Грамотно -- значит, выстраивать логику, инварианты и проч.

---
Можно попытаться суммировать предыдущие годы дискуссий так.
Пошаговый инструмент нужен когда:
1) темный язык;
2) хреновый компилятор;
3) какие-то сугубо специфические ситуации типа с кросс-компилированием (AVC) или типа с чужим бинарником (Тёмный Джек) -- но тут и инструмент особый нужен.

При ясном языке и надежном компиляторе отладчик только мешает.
А уверенность в коде приходит только от логической верификации (=грамотного построения), после нахождения простейшего решения. Такую программу и тестами нагрузить приятно.


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

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Info21 писал(а):
А уверенность в коде приходит только от логической верификации (=грамотного построения), после нахождения простейшего решения. Такую программу и тестами нагрузить приятно.

А зачем грузить тестами логически верифицированную программу?


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

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1214
Geniepro писал(а):
А зачем грузить тестами логически верифицированную программу?

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


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

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


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

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


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

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