Всё когда-нибудь случается в первый раз.
Сегодня я в совершенно официальной (хотя и очень внутренней) инструкции по запуску программы написал пункт «Pray».
Если кто-то скажет, что есть язык более дикий и система разработки более поганая, чем DOORS/DXL, не верьте. По сравнению с этим то, что пишут студенты в качестве курсовой по компиляторам, является образцом логичности и изящества, а Турбо-Си, который я использовал в прошлом веке на операционной системе DOS, прекрасен и недостижим как вершины Гималаев.
Самый распространённый тул. Стандарт для многих отраслей. Мощная парадигма. Возможность расширений, настройки и адаптации под внутренние задачи и процессы...
Массивы создавали какие-то извращенцы. А реализация хеша (который associative array) настолько бредова, что я минут десять рылся в Reference Manual не в силах поверить, что ключ можно получить только в цикле, перебирающем значения элементов.
Специально ходил по форумам, искал как выяснить размер хеша. Только честно. Только циклом. И в первый раз, и в десятый, и в сотый. Так что придётся запастись долготерпением. Или как некоторые делать Паскаль, пряча размер в особый элемент и не забывать прибавлять и убавлять единичку при изменениях.
Первый раз в жизни ставил комментарии
// L.125
Да. Номера строк. Потому что чудесная среда разработки не умеет даже это. И место, где произошла ошибка, приходится высчитывать вручную.
Насчёт же дебаггинга и тестирования...
Это происходило примерно так.
- Задача простенькая. Сделаем рекурсию. Запускаем... Умерло или думает? Вроде что-то происходит... Ну ладно, можно чай попить... Так. Что там у нас?.. Да. Можно было и пообедать... О! Сообщение. Так-с..
- «Скрипт работал слишком долго. Ждём дальше или убиваем?»
- Хм. Вроде что-то в файлы пишет. Значит продолжаем... Ничего нового?.. Ничего нового?.. Всё ещё ничего нового?.. О! Ожил. И что это такое?
- «Произошло что-то интересное. Отошлите лог в ИБМ для проверки и улучшений.»
- Ничего удивительного. Стек переполнился. Что там у нас за кнопочки в диалоге?
- «Close»
- Небогатый выбор. Интересно, как предполагается посылать? Ладно, закрываем. Впрочем, надо бы на всякий случай закрыть программу и запустить по-новой. Опа! Что это за диалог?
- «Произошло что-то интересное. Отошлите лог в ИБМ для проверки и улучшений.»
- Нафиг. Закрываем программу.
- «Произошло что-то интересное...»
- Так, закрываем все открытые окна. Всё? Вроде всё. Давим на «Exit»
- «Произошло что-то интересное...»
- Попробуем из таск-менеджера.
- «Произошло что-то интересное...»
...
Конечно, удалось найти пути кривые и извращённые, хоть и не лёгкие, но зато работающие. Конечно, в конце концов оно запустилось, заработало и выдало результат. Только ушёл я из офиса в ноль ноль часов, ноль ноль минут. Первый раз у этого клиента.
.