История про кабель навеяла. Прямо дежавю. Мой коллега по одной конторе ваял софт к какой-то измерительной штуке. Ну не работает и все. Методом тыка понял, что в соединительном кабеле командную шину и шину данных поменяли местами а биты в шине данных перекрутили в обратном порядке. Ну да ладно - месяц убит не напрасно, ПЗУ в железке перепрописано новым микрокодом и все работает. И тут приходит электрик.
Это паялово обнаружило что спаяло кабель не по спецификации и принесло новый. Коллега побелел, потом покраснел и сунул электрику тетрадный листок со своими каракулями. Вот твоя новая спецификация, паять будешь так и документацию перепишешь.
Потом этим железом испытывали ракетные двигатели...
Институт. Пятый курс. Лабораторная по параллельному программированию. Студент защищает работу: - Таким образом, полным перебором вариантов мы находим все возможные ответы. Преподаватель: - Но для четырехбайтной переменной мы получаем четыре миллиарда значений, а их все в цикле перебирать очень долго. Как вы решили эту проблему? - Путем организации параллельного вычисления.
Препод довольно кивает - студент закончил лить воду и сейчас начнет рассказывать, как он распараллеливал потоки, искал узловые точки алгоритма и т.д. - Так как же вы организовали это параллельное вычисление? В ответ студент показывает на четыре компа в аудитории: - Компьютер №4 проверяет значения от нуля до миллиарда, компьютер №5 - от миллиарда до двух...
После окончания института многие мои однокурсники, как и я, работали веб-программистами. Ну, а поскольку две головы - это сила, мы часто по аське спрашивали друг у друга совета или жаловались на особо непокорные нюансы.
А потом в преддверии отмечания дня рождения я решила проконсультироваться с подругой-вебмастером о содержимом праздничного стола.
Разговор получился таким: я: Привет! Ты сильно занята? Вопрос есть. она: Нормально, давай. я: Вот думаю, что с меню делать... она: На javascript? Высылай код, посмотрю! я: Нет, я о другом - горячее там, салатики...
Я как-то написал программку для проверки таблицы умножения.
Меня попросили знакомые, у которых ребенок после школы первым делом за комп садится, а уже потом, с хорошего пинка, начинает учить уроки.
И вот, сделал я так, что компьютер, пока не прорешаешь ему всю таблицу умножения, вообще ничего запустить не дает. Дописал прогу и выложил на работе в общую папку с названием "Запусти меня".
Через полчаса все менеджеры повторяли таблицу умножения.
Работаю программистом по автоматизации производства. Есть большой проект, который уже несколько лет хорошо и стабильно работает, но в него регулярно нужно вносить небольшие изменения в связи с модернизацией оборудования. И был в свое время у меня помошник, в образовании которого есть ряд существенных пробелов.
Итак, одно из таких изменений было внесено и шел процесс финального тестирования на экспериментальном стенде - все отлично, все работает и радует глаз. И тут понадобилось мне отлучиться. Прихожу - оборудование стоит, никаких аварийных сообщений нет. Ненормально и совершенно непригодно для реальной эксплуатации. Пробую еще несколько раз: оборудование останавливается в произвольные моменты времени без всяких на то причин! А надо сказать, что проект сделан в среде UltraLogik, у которой с возможностями отладки большие проблемы. Поэтому самый верный способ поиска ошибок - это медленное и вдумчивое курение исходников. И вот при очередной итерации этого увлекательного процесса я обнаруживаю следующую процедуру, написанную моим горе-помошником.
procedure FBD_BLOCK(var Input : integer; var FromValue : integer; var ToValue : integer; var Output : boolean); var prev_value : integer; begin Output:=false; if (Input=ToValue) and (prev_value=FromValue) then Output:=true; prev_value:=Input; end;
Фанфары, мат и желание дать в репу! У него оборудование выключается, когда на систему снизойдёт вселенская благодать и случайное значение неинициализированной переменной совпадёт с нужным!
Хорошо, что это был первый раз, когда эта процедура реально использовалась.
Учился я на факультете математики и информатики. И всегда делал все задания вместе с друзьями (ну, если честно, то я делал, остальные списывали). Нас даже препод бригадой называл, а меня бригадиром.
Так вот, сдавали на ASM-е какое-то задание. Мой друг (назовем его Петькой) сдает первым. Препод смотрит на текст программы (рукописный), спрашивает: "что это?" и указывает на строчку:
mov ax, 13; int 10h;
Петька отвечает: "intion - иншион по нашему!". В рукописном варианте пробел был как-то незаметен, единица на английскую "i" смахивала, ну а "h" была похожа на "n", Петька, видимо, очень спешил переписать мое задание, поэтому сделал кучу ошибок, да еще вместо точки с запятой он поставил двоеточие.
Петька смотрит на текст - ну "иншион", да еще две точки в конце стоят... Ну точно иншион. Препод вдруг меня спрашивает, что там написано. Я всматриваюсь, ну "иншион"... Всматриваюсь еще - ну точно "иншион"! Чего он к Петьке придирается! Всё это я думаю про себя, потом беглым взглядом анализирую код выше и вижу "mov ax, 13;".
И тут меня осеняет! Что это никакой не "иншион", а int 10h! В общем, с того самого дня и до конца учебы препод Петьку иначе как "Иншион" не называл.
Живу в Израиле. Делаю сайты. Заказываю некий модуль для %frameworkname% у местного ивритоязычного фрилансера. Через месяц получаю готовый, проверяю, вроде работает, расплачиваюсь. Через пару дней обнаруживаю глюк, решаю починить сам. Читаю код и вдруг вижу:
Впадаю в ступор, ибо знаю, что фрилансер по-русски не знает ни слова. Звоню ему. Он мнётся, мнётся, но в конце концов признаётся, что модуль сделал не сам, а нашёл другого фрилансера на каком-то сайте. Я, собственно, так и думал - но тут он мне сообщает, что второй фрилансер - индус!
Я опять в шоке. Правдами и неправдами вымаливаю у него контакт индуса и начинаю того расспрашивать. Выясняется, что и он тоже передал проект другому. Но, не русскому, а китайцу! И только китаец вывел меня на конечного программиста. На этот раз уже белорусского.
А я-то ещё удивлялся, почему такой простой проект у первого отнял месяц.