Goodvin писал(а): ↑10.04.2008 14:35
Думаю, что знает.
Человек порядка 10 лет пишет серьезное ПО для управления технологическими процессами на производстве.
Ну, спорить не стану, почему он не выдал рецепта с подробным развёрнутым ответом на вопрос "Что делать" - не знаю.
Ваш советчик конечно прав... но !
в сложно-в*****нутой системе автором которой не обязательно являюсь я исправить что-либо весьма проблемно.
конкретный пример - правда из 1С - "технолоия конвертации данных". как первая так и вторая.
принцип заложенный при выгрузке данных - рекурсия, в стиле выгрузить_документ() - это последовательный вызов выгрузить_реквизит() для каждого из реквизитов - а реквизит при этом может быть ещё и документом и "наша песня хороша - начинай с начала" - выгрузить_документ() и дт......
- сложно сказать плохо это или хорошо "спроектированно"... думаю я бы маловероятно что лучше сделал...
и попытка избавиться от рекурсии сделала бы код куда более сложным и тяжело-подъемным при развитии и модификации.
"оно есть, и с этим надо работать". и отмахнуться от проблемы одним проектированием и алгоритмизацией не получится. имхо, конечно...
проектировать конечно будем, но откуда мне представить что "вставит" заказчик на вход моей программе на своем компьютере? тем более я не могу быть уверенным в 100% что не допустил ошибок при реализации каких-либо условий или что все комбинации условий могут и будут обработаны корректно. тестирование - это конечно важно. но тестирование жестко завязано на людскую фантазию... не всегда удается придумать тесты на все случаи жизни.
тут не "технологические" решения, область и сложность логики другая...
имхо, в ряде случаев нужен "трейсер", и при этом удобный в работе.
да даже будет достаточно научиться _автоматизированно_ встраивать в исходник "классические логи", плоские... - не часто вставишь во все-возможные места куски сообщений типа "
контрольная точка NNNN пройдена. дамп значений переменных чч=сс вв=ыы ".и.т.д.
я хочу создать/получить инструмент который позволит из обычного исходника делать программу которая будет
"трассировать" свою работу и позволит собрать информацию для "офф-лайнового моделирования" работы программы - и позволит без дебаггера ответить на вопрос в такой момент времени, какие значения переменных были зафиксированы и какая строка кода при этом выполнялась.
что бы по этому "следу" можно было лазить "вперед и назад во времени".
А "рассовывание" записей по веткам дерева - не более чем для удобства разбора и восприятия.
Это задача с которой вполне справится машина - "понавставлять" в исходник кучу отладочных сообщений, при этом не нарушив синтаксической корректности и логики работы системы.
вот такой инструмент я и хочу получить/создать.
PS: технологические процессы на производстве - конечно сложны, но в "системном плане", имхо; но как минимум одна область обладает гораздо большим геморроем: "оборот документов" - это вещь куда более замороченная и "зачастую с неясной человеческой (и нечеловеческой) логикой", которую практически никогда не удается "спроектировать нормально". тому кто алгоритмизирует так что бы "не было геморроя" "ни сейчас ни при дальнейшем развитии" вещи такого плана - можно памятник поставить. и нобелевскую присудить.
PPS: .... и наверное придется ещё и не пускать к такой системе людей - что бы она не сломалась.. <_<
Думается, что нужно дружить с разработчиками языка, для которого требуется сделать подобный автоматический рефакторинг, или просто очень хорошо знать спецификацию языка и уметь пользоваться yacc/Bison и lex/flex...
язык-то C++, с QT-шными "приблудами"...
ладно... посмотрю что за инструменты вы перечислили, немного "порою вокруг" и попробую потихоньку писать свой "парсер исходника с/с++"...
когда-то меня хватило на обсфукатор 1С-ного кода.. думаю есть шансы подружиться и с с++....