Мудрость древных

Feb 07, 2013 00:52

Я всегда скептически относился шуткам типа обнаружения в коде строк вида if(i==1) i=i; и им подобных. На то две причины: это сильно избитая шутка и, даже если они появляются, они чаще всего произрастают из упрощения логики. То есть раньше там было нечто вроде i=i+1; или i=i*2; реализовывавшие исключительные стартовые или заключительные шаги алгоритма, но в последствии при переписывании выродилось в это. Ладно, это всё присказка была. Счас байку расскажу.

Начну с вопроса: чем по вашему мнению можно отвлечь окончательно и бесповоротно всю проектную команду от их дел не применяя административного насилия? Ответ оказался внезапно прост - дать им в руки программу, на смену которой должен прийти их проект.
Сегодня мы раскопали на одном из дисков приехавших вместе доками от заказчика текущую версию системы планирования. ДОСовскую. На Паскале. Там 4-5 дестятов exe-шкиов с именами типа D_PLAN.EXE (этот мы кстати запускали, имя оказалось логичным. В том смысле, что оно соответствует назначению программы, а не в том, что из названия можно понять назначение). Ради этого вся команда собралась вокруг одного компа и смотрела как в DOSBox открываются окошки с возгласами "ух ты!" или "так вот какого хрена они эту ересь нам в ТЗ прописали". Не забвенное шоу. Надо ли говорить, что рабочий день не был продолжен? Завтра или когда там надо будет продолжить, как только пароль от оператора выясним: часть программ требовала аутентификации.
Но ведь мы люди ушлые. Когда часть народу разошлась, мы втроём начали активные поиски файла, отвечающего за аутентификацию. Не нашли. Зато… В одной из папок мы нашли часть исходников. Ну вы поняли. Да, давненько мне не приходилось читать паскалевский код, да ещё с такими именами переменных и таким форматированием. TParGr, сплошной TParGr, я бы даже сказал что полный. В какой-то момент нам попался этот участок кода:
фрагмент паскалевского кода
...
var nada: byte;
...

if (( {всякая логика флагов через сравнение строк, штук 5 через OR} ) AND (nada=1)) then
begin
nada:=nada;

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

SwapVectors;
Exec({что-нибудь и как-нибудь});
SwapVectors;
В коде также были обнаружены комментарии с датами вида ДДММГГГГ, последняя отметка датировалась 25-ым января 2004 года (никто не заметил, а я похихикал, да-да, 2501). В целом код про код скажу: его писали три и больше авторов, он написан на грани возможностей системы, хотя определённо кое-что могло быть и оптимальней, он сейчас выглядит страшно, он полностью не поддерживаем.
Тут и сказочки конец, кто дослушал… может попробовать сделать предположения о сфере ответственности упомянутого мной exe-ника D_PLAN.EXE в системе:P Подсказка - не служебный и выполняет роль пользовательского UI к одной задаче.

PS. Название имеет некоторое отношение к этому комиксу

байки, позитив, работа

Previous post Next post
Up