Архив

Archive for Апрель 2009

Доктор Домашних Компьютеров

Как же задолбали люди, которые…

  • …мало того, что не могут поменять картридж в принтере, так ещё и гордятся этим.
  • …ищут волшебное средство посещать с работы одноклассников и тому подобную хрень вопреки начальству и админам.
  • …полагают, будто Доктор Домашних Компьютеров обязан знать, как делается XXX в игре YYY.
  • …обчитавшись книжек для чайников, при помощи тамошних советов и прилагаемого к ним софта доводят свои компьютеры до состояния эпического срача.
  • …пишут компьютерные книжки для чайников. Этих вообще ненавижу.
  • ставят линукс и потом вопят о том, что у них диски накрылись.
  • …купив фотоаппарат, требуют, чтобы им всенепременно поставили идущий с ним в комплекте быдлософт. И ладно бы просто поставили, а ещё и научили в нём фотошопить.
  • …пригласив Доктора Домашних Компьютеров, неотлучно стоят за спиной и бдят, чтобы Доктор, боже упаси, не заглянул в папку с их коллекцией порнухи.
  • …в качестве благодарности за выполненную работу предлагают познакомиться с их коллекцией порнухи.
  • …помещают временно ненужные файлы в корзину — с тем, чтобы восстанавливать их оттуда, когда они опять понадобятся. (Не верите, что существуют такие придурки? Тысячи их!)
  • …антивирус последний раз не обновляли никогда. Или вообще его не ставили. Что, в общем-то, мало отличается.
  • …кликают где попало и открывают что попало.
  • …обламывают флэшки и приёмники беспроводных мышей, торчащие из ноутбуков, и спрашивают, как это починить. В особо эпических случаях — ломая ещё и разъём ноутбука.
  • …стригут ногти над клавиатурой.
  • …отправляя мылом JPEG-файлы, архивируют их. А равно и те, кто потом не знает, что с этим делать.
  • …пытаются спорить о том, что Им Гораздо Виднее Как Надо, демонстрируя в качестве аргумента журналы типа «][акер».
  • …поклоняются своим домашним животным до такой степени, что позволяют ломать им свои компьютеры. Физически ломать.
  • …объясняют состояние эпического срача, в котором находится компьютер, тем что «кот на клавиатуре полежал».
  • …на вопрос «что ты сделал, обнаружив проблему?» отвечают «виндовс переустановил».
  • …доказывают лицензионность своего софта путём демонстрации копии чека какого-нибудь «ИЧП Шайтан-ларёк» на диск «Лучший софт-2008».
  • …начинают описание проблемы словами «понимаешь, я ничего не делал, а оно само вдруг…»
  • …обращаются с проблемами типа «ребёнок поставил игрушку, а потом…»
  • …хотят на свою WinXP интерфейс как у Висты.
  • …хотят на свою Висту интерфейс как у WinXP.
  • …хотят, чтобы им с новенького ноутбука снесли Висту и поставили пацанскую WinXP.
  • …просят дать им волшебную программу, которая поломала бы домашний компьютер начальнику по его E-mail адресу.

Песня о точке не на своём месте

Эта история — живая легенда из истории вычислительной математики и связанного с ней программирования. Сейчас, правда, уже изрядно подзабытая, но ей-же-ей, она стоит того, чтобы её рассказывали и помнили. 🙂

Итак, дело было в конце далёких 1960-х годов. Группа баллистиков из NASA считала какие-то очередные небесные траектории. Ничего, в общем-то, особенного.

Ан нет! Случилось почему-то так, что у них получалось нечто вовсе невообразимое. Ну то есть вообще ни уму, ни сердцу. Не могло быть таких результатов, просто потому, что не могло быть никогда!

Дело-то как бы тоже довольно обыденное для компьютерщиков. Поскольку математическая модель была уже неоднократно опробована и хорошо себя зарекомендовала, собака явно порылась где-то в её реализации. В программе то есть. Ну, стали отлаживать, разумеется.

Здесь, конечно, надо пояснить, что в те годы отладка была совершенно не похожа на нынешнюю. 🙂 Там, где нынешний программист легко прыгает отладчиком по точкам останова, имея возможность в любой момент посмотреть значения переменных, тогдашним программистам приходилось вставлять отладочную печать и искать ошибки по анализу её результатов.

Сами представьте, каково это было в эпоху перфокарт. (Вот вам, кстати, и повод для использования карт разных цветовых оттенков. Отладочные вставки гораздо легче было выбрасывать из программы, если они пробивались на картах другого цвета.) Медленно получалось, даже при том, что баллистики NASA никаких проблем с компьютерным временем и прочими ресурсами не имели.

А результаты-то нужны были к конкретным срокам! А программа не отлаживается никак…

В условиях жёсткого цейтнота было принято отчаянное решение: писать всю программу заново с нуля! Написали — и ведь заработало! Но кто-то из тех программистов из принципа решил найти-таки ошибку в первом варианте. И нашёл потом, спустя некоторое время.

Ошибка была, выражаясь по-нынешнему, совершенно аццкая. Из тех, которые допускаются элементарно, а ищутся и устраняются с невообразимыми трудностями. Особенно на перфокартах и листингах с невысоким качеством печати.

Да вот, сами сравните две строчки на Фортране:

DO 10 I=1,5
DO 10 I=1.5

Они обе имеют смысл и отличаются только в одном-единственном знаке препинания. А делают совершенно разные вещи. 🙂

Зелёная строчка повелевает выполнять с повторением кусок кода отсюда и до метки 10, последовательно придавая переменной I значения от 1 до 5. А красная присваивает значение 1.5 переменной с именем DO10I. В тогдашних стандартах Фортрана пробелы вне строк игнорировались, а предварительное объявление переменных в этом языке не является обязательным и сейчас.

Вот примерно такая фигня — точка вместо запятой — и была допущена в тексте первоначального варианта. Почувствуйте, как говорится, разницу. 🙂

Ошибка была столь эпически-дивно-аццкой, что про неё ещё очень и очень долго предупреждали будущих математиков. 🙂 Нас, например, предупреждали. А в конце 1990-х на какой-то конференции, где я присутствовал, эта тема была мельком упомянута в разговоре во время перерыва, и куча народу засвидетельствовала, что их также предупреждали. Хотя учились все в разные времена и в разных местах.

По-моему, байка стоит того, чтобы рассказать её и сегодня… 🙂

Перфокарта

Перфокарта — это, в сущности, уникальная штука. 🙂 С одной стороны, это один из несомненных IT-символов. С другой стороны, при стремительном развитии IT-отрасли символ этот относится к её додревним временам (я ещё скажу об этом). С третьей же стороны, несмотря на всю свою древность, перфокарты не только мгновенно узнаются (в том числе и людьми, которые родились уже годы спустя после того, как их перестали выпускать), но и активно используются по сей день. Хоть и не по прямому назначению. 🙂

Куча народу благополучно продолжает пользоваться перфокартами — как карточками для заметок, как закладками (есть нечто стильное в том, чтобы закладывать ими книги по вычислительной математике), как поделочным картоном, наконец! 🙂 Это ж даже страшно подумать, сколько их было выпущено, что запасы не иссякают до сих пор. Никто, конечно, не назовёт точных тиражей, но можно абсолютно уверенно утверждать: в этом плане любой книжный бестселлер нервно курит в сторонке. 🙂

То, что вы видите справа — это самый распространённый стандарт перфокарт, IBM-овский образца 1928 года. Да-да! Компьютеров ещё не было, а такие перфокарты уже использовались в чисто механических устройствах. Начало их промышленного применения относится к середине 1929, так что где-то как раз сейчас перфокарта празднует свой 80-летний юбилей. Находясь, как и положено, на заслуженной пенсии.

Студенты периодически расспрашивают меня о том, как же пользовались перфокартами. Нынче это помнит лишь старшее поколение компьютерщиков, так что почему бы и не рассказать…

Давайте рассмотрим перфокарту подробнее.

Срезанный уголок — это, понятно, средство правильного позиционирования карты. За рубежом выпускались карты разных цветовых оттенков (что позволяло легче различать, например, карты с программой и карты с данными), но в СССР такое, насколько я знаю, не практиковалось.

Сама карта содержит 80 позиций и представляет собой текстовую строку из, соответственно, 80 символов. Они пронумерованы мелкими цифрами вдоль верхнего и нижнего краёв. А каждая позиция, в свою очередь, содержит вертикально расположенные пробивочные места. Десять из них пронумерованы цифрами от 0 до 9.

Здесь компьютерная молодёжь обычно спрашивает: а зачем десять-то? В байте ж восемь бит. 🙂

Ну, во-первых, пробивочных мест в каждом столбце не десять, а двенадцать. 🙂 Ещё два ненумерованных располагаются на широкой белой полосе вдоль верхнего края. Во-вторых, пробивки отнюдь не соответствуют битам в байте.

Дело в том, что к перфокартам предъявлялись требования определённой механической прочности, которая не должна была нарушаться пробивками. Поэтому исходная IBM-овская кодировка предусматривала, что каждый столбец содержит три пробивки максимум. Вот она, эта кодировка:

     ________________________________________________________________
    /&-0123456789ABCDEFGHIJKLMNOPQR/STUVWXYZ:#@’="[.<(+|]$*);^\,%_>?
12 / X           XXXXXXXXX                        XXXXXX
11|   X                   XXXXXXXXX                     XXXXXX
 0|    X                           XXXXXXXXX                  XXXXXX
 1|     X        X        X        X
 2|      X        X        X        X       X     X     X     X
 3|       X        X        X        X       X     X     X     X
 4|        X        X        X        X       X     X     X     X
 5|         X        X        X        X       X     X     X     X
 6|          X        X        X        X       X     X     X     X
 7|           X        X        X        X       X     X     X     X
 8|            X        X        X        X XXXXXXXXXXXXXXXXXXXXXXXX
 9|             X        X        X        X
  |__________________________________________________________________

 

Как и показано на этом рисунке, вдоль верхнего длинного края могло надпечатываться содержимое карты, если перфоратор поддерживал такую возможность.

Технология применения перфокарт была довольно простой. Программист писал текст программы на специальном бланке. Бланк отдавался на перфорацию. К получившейся колоде добавлялись карты со входными данными, и всё это перемежалось картами с командами операционной системы. Итоговый продукт заряжался в устройство загрузки, обрабатывался компьютером, а результат выдавался либо на печать, либо тоже на перфокарты, либо (в значительно более поздние времена) в файл на ленте или диске.

Вот, собственно, и всё. Можно лишь добавить, что рассыпать колоду было кошмаром оператора ЭВМ. 🙂 Если одна карта представляет одну строку программы — сами прикиньте, какие объёмы имели колоды у серьёзных программистов-вычислителей. 🙂

Иногда мне становится очень интересно: когда именно завершилась эпоха перфокарт, когда их прекратили изготовлять и когда перестал работать последний мэйнфрейм на перфокартах? Вряд ли это можно точно установить, однако я могу с полной уверенностью утверждать три факта:

  • В середине 1988 года перфокарты ещё выпускались в СССР. (На одном из снимков сбоку видно надпечатку «VII 1988».)
  • В конце 1989 в СССР ещё были действующие компьютеры на перфокартах. (У нас самая первая лабораторная работа по программированию была именно на таком мэйнфрейме. Чисто как посвящение в профессию.)
  • В 1992 в России ещё выходили книги по программированию с упоминанием перфокарточной технологии. (Пара подтверждений до сих пор стоит у меня в недрах шкафов.)