Перфокарта — это жесткий картонный носитель информации, на котором данные кодируются посредством наличия или отсутствия отверстий в заранее заданных позициях. На протяжении более чем полувека этот формат оставался единственным массовым способом ввода программ и данных в вычислительные машины, определив архитектуру раннего программного обеспечения и даже современные стандарты терминалов.
Физически перфокарта представляет собой прямоугольный лист специального картона повышенной плотности, стандартный размер которого закрепился на уровне 7 3/8 × 3 1/4 дюйма (187,325 × 82,55 мм). Именно этот формат, унаследованный от долларовых купюр США конца XIX века, стал мировой нормой для промышленности обработки данных до появления магнитных лент и дисков.
История возникновения: от ткачества к статистике
Прообраз перфокарты появился в 1804 году, когда Жозеф-Мария Жаккард использовал перфорированные картоны для управления узорами на ткацких станках. Идея дискретного управления сложным механизмом через бинарный код (дырка — нет дырки) заложила фундамент для программируемых устройств.
В 1890 году Герман Холлерит адаптировал технологию для пересчета населения США. Его табулятор считывал перфокарты электрически: иглы проникали в отверстия, замыкая цепи через ртуть. Это сократило обработку censo с лет до месяцев и заложил базу для будущей компании IBM.
К 1928 году IBM стандартизировала формат «карты Холлерита» с 80 столбцами и прямоугольными отверстиями, что обеспечило совместимость оборудования разных поколений. Этот стандарт выжил до эпохи персональных компьютеров.
Физическая структура и принцип считывания
Классическая перфокарта разделена на 12 строк и 80 столбцов. Верхние две строки (12 и 11) назывались «зонами» и использовались для кодировки знаков препинания и букв, а строки 0–9 — для цифр. Каждый столбец мог хранить один символ.
Считывание происходило механически (щетки) или оптически (фотодиоды). При механическом считывании металлические щетки касались картоны; в месте отверстия щетка просачивалась на контактный барабан, замыкая цепь. Оптические станции работали быстрее и изнашивали карты меньше.
Точность перфорации и качества картона критически важны: заусенец или деформация приводят к ошибкам ввода. Поэтому карты хранили в кондиционируемых комнатах при влажности 40–60%.
| Параметр | Значение стандарта IBM 5081 |
|---|---|
| Габариты | 187,325 × 82,55 мм |
| Толщина картона | 0,178 мм (0,007 дюйма) |
| Количество столбцов | 80 |
| Количество строк | 12 |
| Форма отверстий | Прямоугольные, скругленные углы |
Перфокарты в эпоху мейнфреймов
В 1960–1970-х годах перфокарты стали лицом корпоративной вычислительной техники. Программисты писали код на бумаге, перфоратористы переносили его на карты, а операторы скармливали колоды в ридеры IBM System/360 или CDC 6000. Одна ошибка в столбце 7 (метка продолжения в Fortran) могла сломать сборку всей программы.
Специализированные перфораторы вроде IBM 029 позволяли печатать символы на верхнем краю карты дублируя код, что упрощало визуальный контроль. Колоды карт перевозили в коробках по 2000 штук; крупные задачи занимали десятки коробок.
Ритуал «сдачи колоды» в вычислительный центр и ожидания вывода на принтере формировали уникальную культуру разработки того времени. Потеря одной карты в колоде из тысяч означала необходимость перепробивать весь участок.
- 🔹 IBM 026 — первый массовый клавишно-перфорирующий аппарат (1949)
- 🔹 IBM 029 — улучшенная модель с печатью интерпретации (1964)
- 🔹 IBM 1442 — комбинированное устройство чтения/пробивки для System/360
- 🔹 UNIVAC 1004 — плата управления на перфокартах вместо микрокода
⚠️ Внимание: механические перфораторы и ридеры требовали регулярной чистки от картонной пыли. Накопление пыли в контактах вызывало «фантомные» отверстия — ложные срабатывания, которых не существовало на карте.
Кодировка данных: от кода Холлерита к EBCDIC
Изначально каждый столбец кодировал одну цифру (1 отверстие в строках 0–9). Для букв и спецсимволов использовались комбинации зонных пробивов (строки 12, 11, 0) с цифровыми. Так возник код Холлерита — предок EBCDIC.
В EBCDIC 8 бит байта отображались на 12 строк карты нелинейно: старшие биты определяли зону, младшие — цифру. Это позволяло хранить 256 символов, но делало ручное чтение карты крайне сложным. Программисты часто держали под рукой шпаргалки соответствий.
Для двоичных данных (объектные модули, дампы памяти) использовался колонный бинарный формат: каждая из 12 строк соответствовала одному биту, а 80 столбцов давали 120 бит (15 байт) на карту. Плотность хранения была ничтожной по современным меркам.
Почему перфокарты выжили до 1980-х?
Магнитные ленты были дороже и менее надежны для архивного хранения. Перфокарту можно прочитать глазом, она не демагнитичивается и выжидает пожар лучше магнитной ленты. Банки и госучреждения доверяли бумаге больше, чем «невидимым» битам на ленте.
Причины устаревания и переход на новые носители
К концу 1970-х перфокарты уступили место магнитным лентам, гибким дискам и терминалам с CRT-экранами. Главные драйверы перехода: скорость ввода-вывода (ридеры давали 1000–2000 карт/мин против мгновенного ввода с клавиатуры), плотность хранения и износ оборудования.
Одна карта весит ~2,5 г. Гигабайт данных на перфокартах весил бы ~200 тонн и занимал бы склад. Магнитная кассета 3M DC300 того же объема помещалась в карман. Экономика пространства и труда сделала переход неизбежным.
Последним бастионом остались системы голосования и некоторые банковские архивы. В США перфокарты для голосования использовались до скандала с «висячими заусенцами» на выборах 2000 года во Флориде.
- 🔹 Скорость: 2000 карт/мин ≈ 27 КБ/с против МБ/с на ленте
- 🔹 Надежность: механика застревала, карты рвались, гнили от влаги
- 🔹 Трудоемкость: армия перфоратористов, операторов, кладовщиков
- 🔹 Отсутствие интерактивности: пакетная обработка, цикл «правка — пробой — сдача — жди утро»
Наследие перфокарт в современной информатике
Самое заметное наследие — стандарт 80 столбцов в текстовых терминалах и редакторах кода. Ширина экрана VT100, лимит строк в стандартах кодирования (PEP 8, Google Style) и даже ширина коммитов в Git — всё это эхо формата карты 1928 года.
Фраза Do not fold, spindle or mutilate («Не гните, не продырявляйте и не изуродовывайте»), напечатанная на каждой карте, стала мемом и символом уязвимости физических носителей. В Unix-культуре она напоминает о бережном отношении к данным.
Современные эмуляторы перфокарт (например, punched card reader emulators для Arduino) позволяют запускать старый код на железе эпохи, считывая карты веб-камерой. Это популярное хобби среди ретро-энтузиастов.
Если вы настраиваете линтер или форматтер кода, оставьте лимит 80–100 символов — это не просто традиция, а гарантия читаемости кода в терминале, в diff-просмотрщике и на мобильном экране.
Физические ограничения перфокарты (80 столбцов, фиксированная длина записи) определили архитектуру файловых систем, форматы исходного кода и интерфейсы командной строки, которые мы используем до сих пор.
Интересные факты и коллекционирование
Перфокарты использовались не только для кода. В 1960-х на них хранили музыкальные партитуры для ранних синтезаторов, чертежи для станков с ЧПУ и даже базы данных водителей в ГАИ СССР (серия ЕС ЭВМ). Художники создавали мозаики из цветных карт, используя их как пиксели.
Сегодня перфокарты — объект коллекционирования. Карты с рукописными заметками пионеров программирования (Джон Бэкус, Грейс Хоппер) продаются на аукционах за сотни долларов. Серийные карты IBM 5081 в коробке стоят дешевле, но требуют сухого хранения.
⚠️ Внимание: при покупке старых перфокарт на аукционах проверяйте наличие плесневых пятен. Зараженные карты необратимо портятся и могут заразить остальную коллекцию. Храните их в герметичных контейнерах с силикагелем.
☑️ Как сохранить перфокарту как экспонат
Что такое «висячий заусенец» (hanging chad)?
Не полностью вытравленный кусочек картона, остающийся висеть на одной стороне отверстия. На выборах 2000 года в Флориде такие заусенцы не считывались машинами, что вызвало споры о подсчете голосов.
Почему именно 80 столбцов?
Размер карты подгоняли под существующие конверты и кассы для долларовых купюр США 1862 года выпуска. IBM сохранила габариты для совместимости с мебелью для хранения денег.
Можно ли прочитать перфокарту без специализированного оборудования?
Да, достаточно плоского сканера или даже фотоаппарата с высоким разрешением. Существует открытое ПО (например, punchcard-reader на Python), которое распознает отверстия на фото и конвертирует в текст.
Какую роль сыграли перфокарты в разработке Fortran?
Компилятор Fortran I (1957) требовал фиксированный формат: столбцы 1–5 — метки, 6 — продолжение, 7–72 — операторы, 73–80 — номер карты для сортировки после урония колоды. Этот формат диктовался геометрией карты.
Существуют ли современные аналоги перфокарт?
QR-коды и Data Matrix — концептуальные наследники: двумерные оптические метки с коррекцией ошибок. Но они хранят килобайты, а не байты, и считываются камерами, а не щетками.