Давным-давно в одном южном городе зарабатывал я свой первый миллион. Как раз перед деноминацией дело было. Работал я в конторе, которая занималась рекламой и приборостроением, в частности, разрабатывала прибор для изучения нефтяных скважин методом межскважинной томографии.
Суть метода проста. В земле бурятся две дырки, в одну спускают микрофоны, в другую кидают бомбу. Бомба бахает, микрофоны записывают колебания и передают их наверх. По скорости прохождения сигнала можно узнать много интересного о породах.
Миллион мне предлагали за программу, которая принимает данные с прибора на компьютер. Начальник, так случилось, считал, что понимает в программировании. Его понимания, однако, хватало ровно на то, чтобы в приказном порядке определить инструментом разработки ассемблер, ибо он и только он даст необходимую производительность.
Программа была написана и ловко принимала данные, записывая их в файл и попутно отображая в виде гистограммы на экране. Заняло это прилично времени (ассемблер же), но более всего запомнился один эпизод отладки.
В какой-то момент программа начала глючить вполне так конкретно; после того, как её удавалось закрыть, глючило всё остальное, пока комп не перегружался. Код, команда за командой, перебирался долго и вдумчиво. Просчитывались на пальцах сохранения регистров в стеке и корректное их оттуда извлечение. Перепроверялись отдельные куски и логика в целом. Что-то менялось и правилось.
На отладку ушли минимум три рабочих дня, в течение которых с утра до позднего вечера я искал, правил, делал контрольные запуски. Лишь когда в процессе сделали перерыв, и обнаружилось, что комп глючит и сам по себе, без запуска программы, нашлась истинная причина беды.
Кулер на процессоре сдох, сволочь.
А ведь если бы работал не спеша, с перерывами на поиграть, всё бы выяснилось в первый же день.