К дню программиста

Sep 12, 2012 13:42

256-й день года - день программиста. Это одна из тех профессий, в которых, как в спецслужбах, полностью бывших не бывает. Что-то в образе мышления все равно остается. Вот несколько реальных историй в тему. Возможно, кто-то уже слышал, но все же...

1. Самый тупой юзер.

Середина 90-х. Заказчик получает диск с исправленной программой, но через день-два жалуется, что все ошибки остались. Позже выяснилось, что он ничего никуда не устанавливал, а просто положил диск в ящик стола.
История в целом типовая, если бы не одна деталь. Заказчик - не какой-то чайник, впервые увидевший компьютер, и не "блондинка" из анекдотов. Дело происходило... барабанная дробь... в вычислительном центре при аэропорте города-миллионника.


2. Самая дурацкая ошибка программиста.

В работе некоей программы долгое время имелся странный глюк, проявлявшийся всякий раз по-разному. Автор изначально писал через одно место, и все поиски причины напоминали попытки составить слово "вечность" из 4 букв, одна из которых - "Ж". Со временем случайно обнаружили нечто странное, там и пряталась ошибка.

Вот это место в коде.

if (какое-то условие) then
begin
  S := 'х$$ня';
  (куда-то перейти);
end

И немного ниже, после проверки нескольких подобных условий:

if (S='х$$ня') then
begin
  (что-то сделать);
  Exit;
end

Смысл простой. Сначала при выполнении условия выставляется признак ошибки. После всех проверок при наличии этого признака следует реакция на ошибку и завершение.
Для программиста присвоение признаку текстового значения, а не числового, уже само по себе странно, но спишем это на качество выкуренной им травы. Все бы ничего: разница - всего лишь несколько лишних байтов исполняемого модуля и потеря скольких-то микросекунд при их исполнении. Но оказалось, что не все так просто.
Дело в том, что в слове "х$$ня" две пропущенные буквы можно вставить двумя способами. Так вот, в верхнем и нижнем фрагментах оно оказалось написано по-разному. В результате вторая проверка не срабатывала, обработка продолжалась, несмотря на ошибочные данные, и последствия были непредсказуемые.

3. Обмануть телефон.

Всем хорош чехол для мобильного телефона, кроме одного: часто бывают самопроизвольные нажатия "большой кнопки" вплоть до ее залипания. А надо сказать, что лично у меня такая ситуация вызывает циклическую отправку пустого сообщения на первый номер в списке контактов каждые 3-5 секунд вплоть до обнуления счета. При этом не спасает и блокировка, т.к. в отдельных случаях она отключается.
Выход нашел не окончательно умерший во мне программист. Может, еще кому поможет. Мой список контактов пополнился неким фиктивным "А А А" с номером из одного символа "#", который и занял первую строку. Нежелательный цикл как был, так и остался, но с тех пор он завершается ошибкой при попытке отправки на тот самый несуществующий номер.

программирование, казусы

Previous post Next post
Up