OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 09 Ноябрь, 2018 20:12 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Прочитал срач по поводу необходимости отладчика в ББ: viewtopic.php?f=1&t=6236
Поделюсь своим опытом.

Мне СИЛЬНО повезло, что пришлось работать с перфокартами и в отсутствии интерактивных средств.
Отладкой вполне занимались и на перфокартах.

Элементарно, Ватсон!
Расставляешь принты в нужных местах - это и есть контрольные точки.
Они сразу и выводят значения проверяемых переменных
Это и есть обучение отладке - отладчик здесь АБСОЛЮТНО не нужен!

Мне в ту пору не пришло в голову, что вместе с принтами можно ставить сразу и проверяющий код типа assert().
Не было в PL/1 assert()... :shock:

Потом перешли на дисплеи. Как сейчас помню, работали в ДУВЗ - Диалоговый Удаленный Ввод Заданий.
Мой мозг не чужд рефлексии, и заметил еще тогда:
- программисты (и я в том числе) стали гораздо меньше анализировать код при наличии ошибки.
А зачем? Надо просто немного поправить код, где (КАК КАЖЕТСЯ) имеется ошибка, и запустить НА ПРОБУ.
Не угадали? Не беда, попробуем новую догадку...

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

Если говорить конкретно об отладчике, то мне он фактически не нужен.
Имею интересный опыт, когда отладчик в IDE фактически вредил, а не помогал.
Писал я тогда в Турбо С++ 2.0...
В отладочном режиме трансляции все прекрасно работало и значения всех переменных были вполне корректны.
Проверял и по шагам, и по контрольным точкам...
Делаю релиз - не работает.
Причем, при запуске из-под среды - работает, а без нее - нет.

Мне потребовался независимый отладчик, причем отлаживал я покомандно.
Обнаружил хитрую ошибку, которая в исходном коде была не видна.

ИМХО, обучать школьников инструменту отладки - не нужно.
Вредно.
Методике отладки - обучать обязательно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Ноябрь, 2018 09:08 

Зарегистрирован: Вторник, 27 Февраль, 2018 09:18
Сообщения: 73
Валерий Лаптев писал(а):
.

Если говорить конкретно об отладчике, то мне он фактически не нужен.
Имею интересный опыт, когда отладчик в IDE фактически вредил, а не помогал.

Мне потребовался независимый отладчик, причем отлаживал я покомандно.


Вы интересно пишете: начинаете с того, что отладчик вам не нужен, а заканчиваете тем, что он вам понадобился. И, по вашим словам, ошибку вы нашли именно с помощью отладчика.

Так всё-таки, отладчик вреден или полезен?
И что вы вообще понимаете под отладчиком?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Ноябрь, 2018 10:28 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Владимир Ситников писал(а):
Вы интересно пишете: начинаете с того, что отладчик вам не нужен, а заканчиваете тем, что он вам понадобился. И, по вашим словам, ошибку вы нашли именно с помощью отладчика.

Так всё-таки, отладчик вреден или полезен?
И что вы вообще понимаете под отладчиком?

1. В интегрированной среде для начинающих отладчик не только не нужен, но и ВРЕДЕН. Здесь я абсолютно солидарен с Ткачевым.
В среде для начинающих нужен ВИЗУАЛИЗАТОР - надо показывать ход выполнения программы. Для лучшего усвоения.

2. В интегрированной среде для профессиональных программистов отладчик почти бесполезен.
Ибо профессиональный программист:
а) пишет маленькие классы-методы-функции - там отлаживать-то нечего, все сразу работает
б) пишет программу ПОСТЕПЕННО - после добавления ОДНОЙ функции-метода-класса программа проверяется на работоспособность (тестированием). Так как функции-методы-классы маленькие, то отладчик здесь практически не требуется.
в) Unit-тесты фактически заменяют отладчик.

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

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


Но еще раз подчеркну: в средах для начинающих отладчик вреден - воспитывает вредные привычки.
Нужен визуализатор выполнения. Но и его нужно использовать НЕ БЕСКОНТРОЛЬНО.
Он может быть помощником для научения учня представлению и анализу хода выполнения программы в уме.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Ноябрь, 2018 13:03 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Валерий Лаптев писал(а):
Элементарно, Ватсон!
Расставляешь принты в нужных местах - это и есть контрольные точки.
Они сразу и выводят значения проверяемых переменных
Это и есть обучение отладке - отладчик здесь АБСОЛЮТНО не нужен!

Очень смешно)))) Поставил контрольную точку в отладчике получил тот же принт))), только намного удобней, да и инфы больше, да и поиграть со значениями можно, да ... да много чего.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 10 Ноябрь, 2018 16:28 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Kemet писал(а):
Очень смешно)))) Поставил контрольную точку в отладчике получил тот же принт))), только намного удобней, да и инфы больше, да и поиграть со значениями можно, да ... да много чего.

Не смешно. Мне не нужно "играть" со значениями.
Мне нужно понять, почему эти значения не равны правильным.
Мозги надо включать, а не отладчик.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 00:40 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
Валерий Лаптев писал(а):
Мне, как квалифицированному программисту он практически не нужен - я пишу сразу правильный код.
И никогда не пишу всю программу сразу целиком.
Только порциями, причем небольшими.
И у меня чрезвычайно редко возникает ситуация, когда программа сразу не работает.


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 10:16 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Валерий Лаптев писал(а):
Ибо профессиональный программист:
а) пишет маленькие классы-методы-функции - там отлаживать-то нечего, все сразу работает
б) пишет программу ПОСТЕПЕННО - после добавления ОДНОЙ функции-метода-класса программа проверяется на работоспособность (тестированием). Так как функции-методы-классы маленькие, то отладчик здесь практически не требуется.
в) Unit-тесты фактически заменяют отладчик.
Я бы очень хотел посмотреть на опыт разработки ОС промышленного контроллера, где такой подход был бы возможен!
Особенно в условиях существенной зависимости от входных сигналов (включая помехи), многопоточной среды, нетривиальных проблем с железом при казалось бы допустимой замене комплектующих, интеграции сторонних библиотек, реализующих хитрые и ресурсоёмкие протоколы и т.д. и т.п.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 11:30 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Валерий Лаптев писал(а):
Мне, как квалифицированному программисту
И кто же выдал справку о присвоении квалификации? Остальное вообще на уровне фантастики)
Цитата:
Не смешно. Мне не нужно "играть" со значениями.
Мне нужно понять, почему эти значения не равны правильным.
Мозги надо включать, а не отладчик.
Со включенными мозгами становится сразу очевидно, что значения равны правильным, именно поэтому происходит "игра" со значениями. В общем я вижу что уровень понимания отладки где-то так начальный.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 15:24 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Alexey_Donskoy писал(а):
Я бы очень хотел посмотреть на опыт разработки ОС промышленного контроллера, где такой подход был бы возможен!
Вы про seL4? Там, правда, не полумеры с модульными тестами, а полноценное доказательство корректности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 15:55 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Alexey_Donskoy писал(а):
Я бы очень хотел посмотреть на опыт разработки ОС промышленного контроллера, где такой подход был бы возможен!
Особенно в условиях существенной зависимости от входных сигналов (включая помехи), многопоточной среды, нетривиальных проблем с железом при казалось бы допустимой замене комплектующих, интеграции сторонних библиотек, реализующих хитрые и ресурсоёмкие протоколы и т.д. и т.п.

Ну, современные контроллеры писать не приходилось, но "мастерство не пропьешь"" :D :D :D
Опыт разработки и написания бортовой оси с отладкой в восьмеричных кодах вас устроит?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 15:57 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Madzi писал(а):
Просто вам повезло писать программы одному.
А вот в ситуации когда в вашей ветке всё работает, а при объединении с мастер веткой - накрывается медным тазом (причём тесты проходят и у вас и в мастер ветке, просто функционал конфликтующий) - отладчик практически незаменим. Причём он даёт вам возможность получить некоторое состояние программы и провести как эксперимент, так реверсивный анализ, т.е. как вы попали в данное состояние. Я уже не говорю про задачи с DEAD/LIVE блокировками потоков и т.п.

Вы правы. В Астрахани я писал программы только в одиночку.
Только вы и правы.
:D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 16:00 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Кемет, вы слишком эмоциональны и ваши суждения о моей квалификации - сильно поверхностны.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 18:22 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Comdiv писал(а):
Вы про seL4? Там, правда, не полумеры с модульными тестами, а полноценное доказательство корректности.
Нет, я вообще.
Как бы те вопросы, которые там в микроядре решаются, худо-бедно и в других местах решены, а проблемы, занимающие более 90% времени, от этого базового уровня не зависят никак...


Валерий Лаптев писал(а):
Ну, современные контроллеры писать не приходилось, но "мастерство не пропьешь"" :D :D :D
Опыт разработки и написания бортовой оси с отладкой в восьмеричных кодах вас устроит?
У меня есть аналогичный опыт с тех же времён, кстати.
Но современные задачи всё-таки не в пример сложнее, чтобы вот так юнит-тестами их взять и покрыть.
Поэтому повторю, что интересен именно реальный опыт разработки в условиях, описанных выше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 19:07 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Alexey_Donskoy писал(а):
Как бы те вопросы, которые там в микроядре решаются, худо-бедно и в других местах решены, а проблемы, занимающие более 90% времени, от этого базового уровня не зависят никак...
Правильно ли я понимаю, что по ходу дела "хотелось бы увидеть" превратилось в "у других это тоже худо-бедно решено", и было снабжёно уверенностью, что подход, применённый для разработки микроядра, не применим для того, что занимает 90% времени?

Кстати, можете рассказать, как это должно решаться по правильному?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 20:35 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Comdiv писал(а):
Правильно ли я понимаю, что по ходу дела "хотелось бы увидеть" превратилось в "у других это тоже худо-бедно решено", и было снабжёно уверенностью, что подход, применённый для разработки микроядра, не применим для того, что занимает 90% времени?
Не так.
Я задал выше конкретные вопросы и хотел бы увидеть подход к их решению.
По приведённой ссылке я увидел несколько другие задачи, и у меня не получается с ходу экстраполировать их подходы на мои задачи.

Цитата:
Кстати, можете рассказать, как это должно решаться по правильному?
Я первый спросил! :wink:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 21:19 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Alexey_Donskoy писал(а):
Цитата:
Кстати, можете рассказать, как это должно решаться по правильному?
Я первый спросил! :wink:
Так ответ был представлен, но он Вас не устраивает, так как вы не можете его экстраполировать на свой опыт. Так представьте же его(как надо правильно), чтобы было понятно, на что Вы не можете экстраполировать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 21:48 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Comdiv писал(а):
Так ответ был представлен
Напомню, мой вопрос начался с тезиса "Unit-тесты фактически заменяют отладчик".
И я поинтересовался, как могут помочь юнит-тесты в комплексной системе, где интенсивная работа с железом во множестве потоков и т.д.
Другими словами, когда требуется системное тестирование, от юнит-тестов проку мало.
Даже из идеальных кирпичиков не факт что удастся сложить рабочую систему.
На что, собственно, Лаптеву и указали.
Да, собственно, и он сам далее писал про один из частных случаев:
Цитата:
3. Профессиональному программисту отладчик может понадобиться в очень редких случаях, когда обнаруживается невоспроизводимая ошибка при пользовании динамическими ресурсами (например, динамической памятью)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 22:00 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Alexey_Donskoy писал(а):
И я поинтересовался, как могут помочь юнит-тесты в комплексной системе, где интенсивная работа с железом во множестве потоков и т.д.
Другими словами, когда требуется системное тестирование, от юнит-тестов проку мало.
На мой взгляд, с этого стоило начать, а не "напоминать". По опыту общения с людьми, могу сказать, что все понимают модульное тестирование по-своему, и не все отделяют его от системных тестов. Вот только какое отношение системные тесты имеют к пошаговому отладчику?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 22:23 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Comdiv писал(а):
какое отношение системные тесты имеют к пошаговому отладчику?
Полагаю, такое, что сей отладчик зачастую является единственным результативным инструментом, когда в системе "что-то идёт не так"...

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Ноябрь, 2018 22:49 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Alexey_Donskoy писал(а):
Напомню, мой вопрос начался с тезиса "Unit-тесты фактически заменяют отладчик".
И я поинтересовался, как могут помочь юнит-тесты в комплексной системе, где интенсивная работа с железом во множестве потоков и т.д.
Другими словами, когда требуется системное тестирование, от юнит-тестов проку мало.
Даже из идеальных кирпичиков не факт что удастся сложить рабочую систему.
На что, собственно, Лаптеву и указали.
Да, собственно, и он сам далее писал про один из частных случаев:
Цитата:
3. Профессиональному программисту отладчик может понадобиться в очень редких случаях, когда обнаруживается невоспроизводимая ошибка при пользовании динамическими ресурсами (например, динамической памятью)

Поправлю свой ответ.
На тех задачах, которые я писал, отладчик не нужен.
То есть МНЕ он действительно не нужен.
Вполне понятно, что есть задачи, не покрываемые unit-тестами.
Но как я понял срач про отладчик, речь-то шла об IDE для обучения и программирования достаточно типовых задач.
Для таких задач - отладчик не нужен.
А для обучения начинающих - вреден.
Еще раз повторю - в этом я с Ткачевым абсолютно солидарен.
Отладчик вреден для неокрепших мозгов.


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

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


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

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


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

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