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

Изначально изобретена для управления ткацкими станками, технология перфокарт перекочевала в статистику, бухгалтерию и науку, став символом эры мейнфреймов. Сегодня они ушли в историю, оставив после себя терминологию (batch processing, 80 символов), архитектуру файловых систем и увлекательную нишу для коллекционеров и художников.

История возникновения: от Жаккара к Холлериту

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

В 1880–1890 годах американский инженер Герман Холлерит адаптировал принцип для обработки данных переписи населения США. Он придумал электромеханический табулятор, считывающий отверстия контактами ртутных чаш. Перепись 1890 года обработали за 2,5 года вместо планируемых 13, что спасло бюджет страны и сделало перфокарту стандартом деловой автоматизации на десятилетия.

Компания IBM (тогда CTR), поглотившая патенты Холлерита, стандартизировала формат карты в 1928 году, установив размер 7 3/8 × 3 1/4 дюйма (187,3 × 82,6 мм) и 80 столбцов. Этот стандарт выжил до эпохи персональных компьютеров и определил ширину терминалов и строк кода на десятилетия вперед.

📊 Какое применение перфокарт кажется вам самым неожиданным?
Управление ткацкими станками (Жаккар)
Обработка переписи населения (Холлерит)
Раннее программирование ЭВМ (IBM, FORTRAN)
Билеты в метро и оплата проезда
Другой

Принцип работы и физическая структура

Информация на перфокарте записывается дискретно: наличие отверстия означает единицу (или конкретный символ), отсутствие — ноль. Считывание происходило двумя способами: механическим (иголки проходят через дыры, замыкая контакты) и оптическим (луч света попадает на фотоэлемент). Второй метод стал доминирующим в 1960-х за счет скорости и отсутствия износа карт.

Стандартная карта IBM 5081 имела 12 строк и 80 столбцов. Верхние две строки (зона 12 и 11) и нулевая строка использовались для зоновых перфораций (знак, буква/цифра), а строки 1–9 — для цифровых значений. Кодировка Hollerith позволяла представить 64 символа: цифры, заглавные латинские буквы и спецзнаки. Маленькие буквы в стандарт не вошли — поэтому ранний код часто был только заглавными.

Карты изготавливали из специального картона с добавлением льна для прочности и антистатических свойств. Толщина составляла около 0,18 мм, вес 1000 карт — ~2,5 кг. Края часто окрашивали в цвет (розовый, зеленый, синий) для визуального разделения партий: исходные данные, программа, результаты.

⚠️ Внимание: Перфокарты крайне чувствительны к влажности и статическому электричеству. Хранение в полиэтиленовых пакетах без антистатического покрытия приводит к склеиванию карт и ошибкам считывания на старом оборудовании.

Основные форматы и стандарты перфокарт

Несмотря на доминирование стандарта IBM, существовало несколько несовместимых форматов. Европейские производители (Bull, ICT) выпускали карты с круглыми отверстиями и иным распределением зон. В СССР применялись форматы ГОСТ 10859-64 (аналог IBM 80-колонки) и ГОСТ 18622-73 (96-колоночный формат для микро-перфокарт).

Специализированные виды включали маркированные карты (с печатной сеткой для ручного заполнения карандашом, считываемые оптически — прообраз современных тестов ЕГЭ) и перфоленту (узкую ленту с 5–8 каналами для телетайпов и станков ЧПУ). Микро-перфокарты размера с банковскую карту позволяли хранить до 96 столбцов за счет меньшего диаметра отверстий.

Формат Колонки Строки Применение Особенность
IBM 5081 (Стандарт) 80 12 Мейнфреймы, программирование, бухгалтерия Прямоугольные отверстия, зона 12/11/0
Powers/Remington Rand 90 6 Ранние табуляторы (1920–1950-е) Круглые отверстия, 45 колонок на полкарты
ГОСТ 10859-64 (СССР) 80 12 ЕС ЭВМ, МИР, БЭСМ-6 Полный аналог IBM, кириллица через коды
ГОСТ 18622-73 (Микро) 96 32 АСУ ТП, архивы, библиотеки Размер 82×187 мм, отверстия 0,7 мм
Mark Sense (Оптические) до 160 — Тесты, опросы, лотерейные билеты Заполнение карандашом, без перфоратора
Почему именно 80 столбцов?

Легенда гласит, что размер карты подогнали под долларовую купюру 1887 года выпуска (7.375 дюймов), чтобы использовать существующие коробки для хранения денег. Технически 80 колонок — компромисс между плотностью перфорации (надежность считывания) и количеством информации на карте. Стандарт закрепился в ANSI X3.26-1980.

💡

Стандарт 80 колонок IBM стал де-факто мировым стандартом на 50 лет, определив ширину консоли и лимиты строк в коде до наших дней.

Сферы применения: перепись, программирование, текстиль

В текстильной промышленности перфокарты Жаккара использовались до 1990-х, пока их не вытеснили электронные контроллеры с флоппи-дисками. Один сложный ковер мог требовать тысячи карт, сшитых в бесконечную ленту. В администрировании они автоматизировали зарплатные ведомости, складской учет и банковские выписки — каждая карта = одна операция/запись.

Для программистов 1960–1980-х перфокарта была основным интерфейсом. Программа на FORTRAN, COBOL или Assembler переносилась на карты перфоратором (например, IBM 029 или EC 7022 в СССР). Колода карт сдавалась оператору ЭВМ, а результат получался на принтере через часы. Ошибка в одной колонке означала перепробивку карты и повторную сдачу — культура «думать перед набором».

Необычное применение: билеты в московском метро 1960–1990-х были перфокартами формата 45×75 мм с 10–12 колонками. Компостер перфорировал контрольное отверстие, а сбор данных с проездных позволял анализировать пассажиропоток. Также карты использовались для управления фейерверками, органов (музыкальные рулоны — аналог перфоленты) и даже голосования на партийных съездах.

  • 🧵 Ткачество: узоры на коврах и тканях (Жаккар)
  • 📊 Статистика: переписи населения, налоговые реестры
  • 💻 Программирование: ввод кода на FORTRAN, COBOL, PL/1
  • 🎫 Билетирование: метро, железная дорога, лотерейные билеты
  • 🎆 Спецэффекты: запуск фейерверков, управление светом

Причины ухода со сцены и переход к магнитным носителям

К концу 1970-х перфокарты начали терять позиции магнитным лентам, дискетам и жестким дискам. Главные причины: низкая плотность хранения (80 байт на карту весом 2,5 г), медленная скорость ввода-вывода (100–2000 карт/мин), физический износ (карты рвутся, заминаются в ридерах) и невозможность прямого доступа (только последовательное чтение).

Последним бастионом стал пакетный ввод задач (batch processing) на мейнфреймах IBM System/370 и совместимых. В СССР массовый отказ от перфокарт в пользу магнитных дисков и терминалов произошел в середине 1980-х с внедрением ЕС ЭВМ и персональных компьютеров Агат, БК, ДВК. Официально стандарт ГОСТ 10859-64 действовал до 1995 года.

⚠️ Внимание: При миграции архивов с перфокарт на магнитные ленты в 1970–80-х часто терялись метаданные: нумерация последовательности, цветовые метки партий, ручные пометки операторов. Восстановление контекста таких данных сегодня — нетривиальная задача для цифровой археологии.
💡

Физические ограничения перфокарт (объем, скорость, износ) сделали их неподходящими для интерактивной работы и баз данных, что стало драйвером развития терминалов и дисковых накопителей.

Перфокарты сегодня: коллекционирование, искусство, обучение

Современная жизнь перфокарт — это ретро-компьютинг и data art. Энтузиасты восстанавливают рабочие ридеры (например, Documation M-1000 или советский НГМД-100) и подключают их к Arduino/Raspberry Pi через GPIO для чтения старых архивов. Существуют открытые схемы оптических ридеров на базе линейных сенсоров TSL1401.

Художники используют карты как пиксели: мозаики, портреты, инсталляции. Знаменитая работа — портрет Ада Лавлейс из 10 000 перфокарт. В образовании карты демонстрируют физическую суть бита: студент видит, как «дырка = 1», «нет дырки = 0», что нагляднее абстрактных нулей и единиц на экране.

Коллекционеры ценят карты с уникальной печатью (логотипы IBM, NASA, университетов, «DO NOT FOLD, SPINDLE OR MUTILATE»), карты с ручными пометками программистов, а также редкие форматы (96-колоночные, маркированные, перфоленты). Цены на eBay варьируются от долларов за килограмм обычных карт до сотен за редкие серии.

☑️ Как определить ценность перфокарты для коллекции

Выполнено: 0 / 5
💡

Если нашли старую колоду перфокарт — не выбрасывайте и не сгибайте. Сфотографируйте каждую карту высоким разрешением (300+ DPI) перед тем, как пытаться прочитать на современном сканере или самодельном ридере. Это спасет данные при повреждении оригинала.

Миф «Do not fold, spindle or mutilate»

Надпись на картах предупреждала не о мистической власти, а о том, что согнутая карта заминает механику дорогого ридера (IBM 2540 стоил как автомобиль), а дырокол (spindle) для временного хранения деформирует отверстия, делая карту нечитаемой. Это чисто инженерное требование.

Техническое наследие в современном ПО

Наследие перфокарт окружает нас повсюду. Ширина терминала 80 символов — прямой наследник 80 колонок. Формат фиксированной длины записи (RECFM=FB в мейнфреймах) заставил языки FORTRAN и COBOL использовать строгие колонки: 1–5 метка, 6 продолжение, 7–72 операторы, 73–80 номер карты (для сортировки после урония колоды).

Концепция batch-файлов (.bat, .sh) пришла от пакетов перфокарт, сдаваемых оператору на выполнение без интерактивности. Даже термин chad (обрезок от перфорации) дал название висячим обрезкам на выборах во Флориде 2000 года (hanging chad). А Hollerith constant в FORTRAN (nHtext) — это прямое отражение кодировки символов на карте.

В Python модуль punchcard позволяет кодировать текст в визуальное представление перфокарты для обучения. В Linux утилита col и настройка stty cols 80 — эхо стандарта 1928 года. Понимание этой истории объясняет, почему многие старые протоколы и форматы файлов имеют именно такие, а не другие ограничения.

⚠️ Внимание: При работе с историческими данными на перфокартах помните о кодировке EBCDIC (IBM) против ASCII. Прямое чтение байтов без перекодировки даст нечитаемый текст, так как коды букв в EBCDIC не совпадают с ASCII (например, 'A' = 0xC1, а не 0x41).
FAQ: Часто задаваемые вопросы о перфокартах
Сколько информации помещается на одной перфокарте?

Стандартная карта 80 колонок × 12 строк хранит 80 символов (обычно 80 байт в кодировке Hollerith/EBCDIC). Это примерно одна строка кода или одна бухгалтерская запись. Для программы в 1000 строк требовалась коробка из 1000 карт весом ~2,5 кг.

Можно ли прочитать перфокарту обычным сканером?

Теоретически да — при сканировании 600+ DPI и последующей обработке компьютерным зрением (OpenCV). На практике проще собрать оптический ридер на линейном сенсоре TSL1401 или использовать специализированный сервис оцифровки архивов. Механические ридеры требуют идеально ровных карт.

Что означает надпись «DO NOT FOLD, SPINDLE OR MUTILATE»?

Прямой перевод: «Не сгибать, не нанизывать на шпиндель, не изуродовать». Шпиндель (spindle) — металлический стержень для временного хранения колоды карт. Сгиб или деформация отверстий делали карту нечитаемой для высокоскоростных ридеров (1000+ карт/мин), вызывая замины и поломки дорогих механизмов.

Почему в старых языках программирования (FORTRAN) код начинается с 7-й колонки?

Колонки 1–5 зарезервированы под номер оператора (метку), колонка 6 — признак продолжения строки (любой символ, кроме пробела и нуля). Колонки 73–80 использовались для нумерации последовательности карт в колоде, чтобы восстановить порядок после падения. Это навязывало формат исходного текста.

Есть ли современные аналоги перфокарт?

Прямых аналогов нет, но идея «физического носителя с дырями» живет в QR-кодах (оптическое чтение), RFID-метках (бесконтактное) и даже в 3D-печати (G-code — текстовые инструкции). Ближайший функциональный наследник — оптические бланки ЕГЭ/тестов (Mark Sense), где карандаш заменяет перфоратор, а сканер — механический считыватель.