В попытках перекодировать вручную доходят до частотного анализа, благо перекодировка идёт простой заменой символов. Проходит часа полтора-два, но пока безрезультатно. Вдруг один из студентов тычет пальцем в мануал на принтер и заявляет: «Мы идиоты». Принтер отлично знает о существовании разных кодовых страниц. Мало того, он умеет на них печатать, только перед подачей самого текста надо переключиться на соответствующую кодовую страницу специальной эскейп-командой.
Распечатка у меня до сих пор где-то валяется. Только я не пошёл по программистской части, и многие интересные сведения из неё мне оказались без надобности.
#10796: Иксы и игреки
12:15 04.04.2013, IT happens
Глаза слипаются. Четвёртый час ночи. Нужно дописать прогу и идти спать. Делов-то на пять минут — и о чём раньше думал? А всё эта лень. Ей нормально, а ты страдай потом.
Ну что уж там демагогию разводить… Накидал форму, написал код. Всё работает. Правда, как всегда, по-индусски: куча ненужных переменных, кривой код. Ну да ладно, зато форма яркая: всевозможные плюшки типа кнопочек, эдитов, лейблов и других никому не сдавшихся блэкджеков. Напоследок глянул форму. О, лишняя кнопка «Button 5». Удалил. Закрыл прогу. И перед самым выходом из системы мне на глаза попалась эта самая кнопка прямо в центре рабочего стола. Она яростно стучала в экран монитора с обратной стороны. Я наклонился к ней и отчётливо услышал вопрос.
— Для чего? — страдальчески кричала она. — Скажи мне, для чего всё это?
— Мне нужно было умножить X на Y, — ответил я.
Кнопка потупила взор и медленно скатилась по экрану вниз.
— Как же так? — прошептала она. — Икс и игрек? Не может быть.
Её глаза налились слезами, и сквозь них она продолжила:
— Я родилась в семье простых рабочих кнопок. Мать рано умерла, отец пил. И чтобы прокормить своих младших братьев, я рано устроилась на работу. После погиб отец. Его переехал двумерный массив, когда тот в пьяном бреду выбежал в исходный код. Братьев у меня отобрали. Один повторил судьбу отца, второго посадили за хищение переменных. Мне было трудно, часто я подумывала о суициде. Но мне встретились добрые лейблы, которые дали мне надежду, уверили в том, что жизнь не так уж и плоха, что есть оборотная её сторона, что всё это не зря, я живу не зря, понимаешь? Я стала усердно работать, добивалась всего сама, потом и кровью. Построила собственную кнопочную империю, занималась благотворительностью. Я стала Стивом Джобсом этой долбаной программы! — срывая голос, кричала кнопка. — И сейчас ты мне говоришь, что это всё ради каких-то вонючих иксов и игреков?
Всё это время я как загипнотизированный смотрел в монитор и только по завершении монолога кнопки выпрямился и протёр глаза. Но когда снова посмотрел в синий экран, кнопки уже не было. Глянул на часы. Четыре часа утра. Похоже, засиделся сегодня. Выключил компьютер, погасил свет в комнате и погрузился в сон.
#10797: Полёт плюс-минус нормальный
12:45 04.04.2013, IT happens
Подводный истребитель, говорите? Ладно, протестировали, нашли багу с отрицательной высотой, спешно исправили, летаем дальше.
Другой истребитель (F-16) на автопилоте должен был переворачиваться брюхом вверх (http://catless.ncl.ac.uk/Risks/3.44.html) при пересечении экватора. Хорошо, нашли багу с отрицательной широтой (слава богу, при тестировании софта на симуляторе, до реальных полётов), исправили второпях, опять летаем.
Какие бишь там ещё у нас координаты остались? Ага, долгота! И вот уже совсем недавно, в 2007 году, целая эскадрилья новейших истребителей (опять истребителей!) F-22 не смогла перелететь (http://it.slashdot.org/story/07/02/25/2038217/software-bug-halts-f-22-flight) из США в Японию из-за непреодолимого препятствия — линии смены дат посреди Тихого океана.
Мораль: если программу можно написать неправильно, рано или поздно кто-нибудь обязательно её так и напишет, да ещё и продаст глупому заказчику. Почему глупому? А потому что умный сразу заказал бы вычисления в декартовых координатах, которые меняют знак, не противореча здравому смыслу, не имеют искусственных особых точек на полюсах, да и вычисления в них проще.