Найти в Дзене
Pochinka_blog

Одна ошибка и минус неделя работы. Как перфокарты стали символом раннего программирования

Представьте: вы пишете код, и каждая строчка существует физически. Можете взять её в руки, пощупать, уронить на пол. Если ошиблись в синтаксисе, придётся выбросить карточку и пробить новую. А если коллега случайно перепутал порядок ваших листочков с кодом, программа превратится в бессмысленный набор команд. Добро пожаловать в эпоху перфокарт, когда программирование напоминало работу архивариуса, а потеря одной карточки могла обнулить недели труда. Перфокарта выглядела обманчиво просто: прямоугольник из плотного картона размером с долларовую купюру, расчерченный сеткой. Стандартная карта IBM вмещала 80 колонок и 12 рядов. Информация кодировалась отверстиями, пробитыми перфоратором в строго определённых позициях. Наличие дырки означало единицу, отсутствие — ноль. Примитивная двоичная логика, которая стала фундаментом цифровой эры. Одна карта могла хранить одну строку программы или одну запись данных. Для серьёзной задачи требовались сотни, а то и тысячи карт, сложенных в коробки и пронум
Оглавление

Когда программы пробивали дырками

Представьте: вы пишете код, и каждая строчка существует физически. Можете взять её в руки, пощупать, уронить на пол. Если ошиблись в синтаксисе, придётся выбросить карточку и пробить новую. А если коллега случайно перепутал порядок ваших листочков с кодом, программа превратится в бессмысленный набор команд. Добро пожаловать в эпоху перфокарт, когда программирование напоминало работу архивариуса, а потеря одной карточки могла обнулить недели труда.

Дырки вместо байтов

Перфокарта выглядела обманчиво просто: прямоугольник из плотного картона размером с долларовую купюру, расчерченный сеткой. Стандартная карта IBM вмещала 80 колонок и 12 рядов. Информация кодировалась отверстиями, пробитыми перфоратором в строго определённых позициях. Наличие дырки означало единицу, отсутствие — ноль. Примитивная двоичная логика, которая стала фундаментом цифровой эры.

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

Процесс создания программы превращался в ритуал. Сначала вы писали код на бумаге карандашом. Затем несли эти листы оператору перфоратора, который переводил символы в дырки. Через несколько часов, а то и дней, получали стопку карт. Относили её к компьютеру, передавали технику, который загружал колоду в считыватель. Ждали своей очереди — машинное время стоило дорого и делилось между десятками пользователей. Наконец программа запускалась, и если где-то закралась опечатка, всё начиналось сначала.

От ткацких станков до ракет

История перфокарт началась задолго до компьютеров. В 1801 году французский изобретатель Жозеф Мари Жаккар создал автоматический ткацкий станок, управляемый картами с отверстиями. Каждая карта определяла, какие нити поднимать, формируя сложный узор. Это была первая программируемая машина в истории, хотя слово "программа" тогда ещё не существовало.

Жаккаровы станки совершили революцию в текстильной промышленности, но их истинный потенциал раскрылся столетием позже. Герман Холлерит, инженер американского бюро переписи, понял: принцип Жаккара можно применить для обработки данных. В 1890 году его табулирующие машины с перфокартами обработали результаты переписи населения США за рекордные сроки. То, что раньше занимало годы ручного труда, заняло месяцы. Холлерит основал компанию, которая позже превратилась в IBM и сделала перфокарты стандартом индустрии на полвека.

К середине XX века перфокарты проникли всюду. Банки вели счета клиентов на картах. Университеты хранили студенческие записи. Военные рассчитывали баллистические таблицы. NASA использовало миллионы перфокарт для программ Apollo, отправивших людей на Луну. Космическая эра строилась на картонных прямоугольниках с дырками.

-2

Считыватель не прощает ошибок

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

Ранние считыватели работали медленно — десятки карт в минуту. К 1960-м технология шагнула вперёд: скорость выросла до тысячи карт в минуту, но это всё равно была черепашья скорость по современным меркам. Загрузка программы из тысячи карт занимала минуты, в течение которых программист стоял рядом, молясь, чтобы считыватель не зажевал карту.

А зажёвывало часто. Картон изнашивался, дырки разрывались, карты мялись. Если считыватель застревал, приходилось останавливать весь процесс, извлекать повреждённую карту, перфорировать новую и начинать сначала. Опытные программисты всегда держали запасные копии критических карт, но полное дублирование колоды было роскошью.

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

Кошмары перфокартной эры

Легенды программистов тех лет полны ужасающих историй. Студент уронил коробку с дипломным проектом в лестничном пролёте, и тысяча карт рассыпалась по ступенькам. Восстанавливал порядок двое суток, сверяясь с нумерацией, которую, к счастью, проставил заранее.

Лаборант случайно поставил кофе на стопку карт с недельными расчётами, и влага размягчила картон. Считыватель отказался принимать отсыревшие карты, пришлось перепробивать всё вручную.

Уборщица приняла коробку с перфокартами за мусор и выбросила. Программист обнаружил пропажу утром и провёл два часа, роясь в баках.

Существовал особый этикет обращения с чужими колодами. Трогать перфокарты коллеги без разрешения считалось грубейшим нарушением. Если ты нарушил порядок чьих-то карт, тебя могли попросту избить.

На картах даже появились предупреждающие надписи. IBM печатала на своих стандартных формах фразу: "Do not fold, spindle or mutilate" (Не сгибать, не прокалывать, не портить). Эта формулировка стала символом эпохи, когда данные были хрупкими и буквально осязаемыми.

-3

Закат картонной империи

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

Переход был постепенным, но неумолимым. Последние промышленные системы на перфокартах работали до конца 1980-х. В некоторых государственных архивах карты использовались до 2000-х просто потому, что никто не хотел тратить деньги на миграцию данных.

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

-4

Наследие, пробитое насквозь

Влияние перфокарт ощущается до сих пор. Стандартная ширина текстовой строки в 80 символов, принятая во многих языках программирования, пришла именно оттуда — с 80-колоночных карт IBM. Термины вроде "карточка записи" и "поле данных" родились в перфокартную эру и пережили своих создателей.

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

Иногда прогресс означает не только новые возможности, но и забвение старых ограничений. Мы больше не таскаем программы под мышкой и не боимся уронить код на пол. Но стоит помнить: эра облачных хранилищ и гигабайтов оперативной памяти началась с того момента, когда кто-то впервые пробил отверстие в картонной карточке и научил машину видеть в этом смысл.