Человек, который подарил нам Escape — история Роберта Бемера и его борьбы за единые стандарты

Каждый раз, когда вы нажимаете клавишу Escape, вводите обратный слэш или просто набираете текст на любом современном устройстве, где-то на небесах улыбается Боб Бемер. Ведь именно он участвовал в создании ранних языков программирования и произвел немалый вклад в разработку общего стандарта кодирования, связавшего разные вычислительные машины. Его называли «отцом ASCII», но это лишь небольшая часть его работы в попытках стандартизировать целую индустрию.
Подход Бемера строился на строгой математической точности и системности. Именно он еще в 1958 году впервые столкнулся с техническими предпосылками набившей оскомину «проблемы 2000 года» и впоследствии стал первым, кто открыто забил тревогу в прессе.
История Роберта Бемера превосходно иллюстрирует, как всего один человек может задать вектор развития технологий на десятилетия вперед.
Роберт Уильям Бемер родился 8 февраля 1920 года. В течение своей многолетней карьеры он последовательно отстаивал идею стандартизации софта. К созданию программ он подходил с сугубо прагматичной позиции, пытаясь перевести разработку на понятные индустриальные рельсы. Бемер одним из первых описал концепцию фабрики программного обеспечения и открыто критиковал индустрию за нежелание систематизировать процессы.
Профессор Школы менеджмента имени Слоуна Майкл Кусумано в своих работах отмечал, что статьи Бемера давали рабочую базу для проектирования системной архитектуры. В конечном счете предложенные Бемером подходы к унификации кодировок и языков программирования стали нормальной практикой при построении корпоративных систем.
В инженерной среде к идеям Бемера прислушивались, хотя его требовательность к жестким стандартам постоянно провоцировала споры. Программисты той эпохи привыкли считать свою работу чем-то вроде искусства, не поддающегося формализации, тогда как Бемер упрямо настаивал на внедрении правил и сквозного контроля качества.
Математика, аэродинамика и вычисления
О детстве и юности Роберта Бемера известно не так много, как о прославленных гигантах индустрии вроде Клода Шеннона. В 1936 году Бемер окончил школу в городке Су-Сент-Мари. В течение учебы он проявлял интерес к вычислениям в целом и к систематизации данных — в частности. Любовь к математике привела его в стены колледжа Альбион, где в 1940 году он освоил курс точных наук и получил степень бакалавра. Фундаментальная академическая подготовка легла в основу его дальнейшей карьеры. В 1941 году Бемер получил квалификацию в области авиационной инженерии. Впрочем, здесь стоит сказать пару слов о техническом ландшафте того времени.
К концу 1950-х годов вся отрасль вычислительной техники страдала от катастрофической фрагментации. Аппаратные комплексы каждого вендора функционировали на базе собственных закрытых спецификаций. Системы, заказываемые Douglas Aircraft и RAND Corporation у IBM или UNIVAC не имели единого фундамента для обмена данными. Каждая архитектура использовала специфические наборы символов и собственных машинных команд, что делало перенос программного обеспечения между машинами разных брендов практически невозможным без полной переработки кода.

Отсутствие унификации представления информации приводило к колоссальным временным и трудовым затратам. Написание софта под конкретное железо привязывало корпоративных заказчиков к его производителю, а любой переезд на новую ЭВМ требовал ручной переработки всех алгоритмов. Индустрия остро нуждалась в системной стандартизации кодировок и языков программирования — именно этому направлению Бемер посвятил себя, работая в IBM и международных комитетах. Впрочем, к работе непосредственно в этой сфере он пришел далеко не сразу.
Клавиша Escape и обратный слэш
Первым официальным местом работы Бемера считается Douglas Aircraft — в 1941 году он устроился туда в качестве специалиста по аэродинамике. В марте 1949 года он вернулся к точным наукам и перешел в вычислительный отдел RAND Corporation, где и началась его карьера программиста. В июне 1951 года Бемер возглавил группу математического анализа в калифорнийском подразделении Lockheed, а в корпорацию IBM пришел лишь в 1955 году, после нескольких лет работы над расчетными системами. В 1962 году Бемер занял пост директора по системному программированию в подразделении Univac компании Sperry-Rand, а в 1965 году уехал во Францию в качестве консультанта генерального менеджера совместного предприятия Bull GE.
В 1966 Бемер устроился в General Electric, которая также хотела урвать часть рынка мейнфреймов. А в 1970-х перешел в Honeywell, где продолжил свою инженерную и аналитическую работу.

Переход Бемера из расчетных отделов авиастроительных компаний в сферу «гражданских» вычислительных машин был закономерным шагом. За долгие годы в этой среде он не раз сталкивался с первыми серийными компьютерами и быстро осознал, что отрасль упирается в отсутствие стандартизации. Перейдя в IBM, он принял активное участие в разработке ранних языков программирования, сотрудничал с группами, создававшими FORTRAN и COBOL. Его подход всегда отличался инженерным прагматизмом: программу нужно создавать так, чтобы ее мог прочитать и повторно использовать кто угодно, а не только автор кода. Вы наверняка читали об этом принципе в любом учебнике информатики и слышали о проблеме «инженера, которого завтра может сбить автобус». А одним из первых его начал внедрять и популяризировать Бемер.
Также он последовательно продвигал идею независимости программного обеспечения от архитектурных особенностей конкретного оборудования. Бемер настоял на общих стандартах для текста и команд, спасая отрасль от хаоса при переносе программ между разными машинами. Ему удалось доказать, что предсказуемость системы и совместимость данных куда важнее, чем красивые трюки и выдумки отдельных программистов, пускай даже очень талантливых.
Ключевое место среди инженерных достижений Бемера занимает работа над стандартом ASCII. Он лично предложил добавить в таблицу некоторые ключевые управляющие и графические знаки, включая escape и обратный слэш. Помимо этого, Бемер заложил механику управляющих escape-последовательностей, позволявшую переключать кодовые таблицы и передавать инструкции периферии напрямую через общий поток данных.
В эпоху перфокарт и первых телетайпов главная проблема заключалась в жесткой завязке железа на конкретный поток данных: если аппарат принимал сигналы печати, то перехватить управление или отменить зависшую операцию без физического перезапуска всей системы было практически невозможно. Символ ESC решал эту задачу — он передавался в виде управляющего кода, который сбрасывал текущий контекст ввода и заставлял периферийное устройство интерпретировать последующие символы как служебную команду. Это избавляло операторов от необходимости физически перезапускать всю систему или терминал в случае зависания или сбоя передачи данных, что экономило дорогостоящее машинное время.
С появлением интерактивных терминалов такой подход стал фундаментом для управления выводом и отображением данных в операционных системах. Идея Бемера использовать управляющий символ для смены режима работы оборудования заложила основу управляющих последовательностей (escape-sequences), без которых не появились бы командные строки UNIX, эмуляторы терминалов и полноэкранные текстовые редакторы. Современные POSIX-совместимые системы до сих пор используют этот принцип для управления атрибутами текста, форматирования вывода и адресации курсора на экране.
В рамках работы над FORTRAN, COBOL и COMTRAN Бемер сформулировал принципы совместимости программного обеспечения для разных аппаратных платформ. В 1957 году Джон Маккарти предложил концепцию разделения времени. Бемер активно поддержал идею стандартизации таких систем, а в 1968 году опубликовал доклад о концепции фабрики программного обеспечения.
Долгие годы Бемер занимал высшие экспертные позиции в крупных корпорациях. С 1970 по 1974 год он работал штатным консультантом вице-президента в компании ASTO, где отвечал за стратегический анализ архитектурных решений. В этот же период, с 1972 по 1974 год, он возглавлял редакцию издания Honeywell Computer Journal, превратив его в авторитетную площадку для разбора сложных инженерных проблем и вопросов стандартизации.
Позже, с 1974 по 1982 год, Бемер занимал пост старшего инженера-консультанта, определяя вектор развития крупных программных комплексов и методики их тестирования. Окончательно уйдя из корпоративного сектора в 1982 году, он основал собственную компанию Bob Bemer Software Inc. и возглавлял ее в качестве президента, продолжая консультировать индустрию по вопросам обработки данных и устранения системных ошибок.
Консервы и заблокированные проходные
Роберт Бемер заметил риски, связанные с использованием всего двух цифр для записи года еще в 1958 году, когда занимался разработкой программного обеспечения для генеалогических исследований. Именно тогда стало очевидно, что отсутствие явного указания на век в дате неизбежно приведет к сбоям при обработке данных. В 1970 году он попытался забить тревогу на государственном уровне и убедить администрацию президента Никсона объявить «Год компьютера», чтобы запустить массовую инспекцию софта. Получив отказ, Бемер перешел к решительным действиям — в 1971 году он опубликовал в Honeywell Computer Journal знаковую статью «What's the Date?», ставшую первым в истории открытым и детальным предупреждением о грядущем коллапсе Y2K.
Однако профильное сообщество и руководство ИТ-компаний действительно долгое время игнорировали эти сигналы. Возможно, главной причиной такой беспечности была жесткая экономия дорогостоящей по тем временам памяти: отсекая первые 2 цифры из номера года, разработчики выгадывали байты. Ответ на любые предупреждения был один — «времени до смены тысячелетия еще много, все починим, когда память подешевеет».
Продолжалось это до тех пор, пока ближе к 1990-м годам код экономных программистов не начал ломаться в самых неожиданных местах. Так, в конце 1980-х британская сеть магазинов столкнулась с тем, что система потребовала списать свежие консервы со сроком годности до 01.01.00, посчитав их просроченными с 1900 года. Позже, в июле 1997 года, на заводе компании «Крайслер» в Детройте при симуляции наступления 2000 года система дала сбой. Итог оказался плачевным: заблокированные проходные, нарушение работы заводских систем и невозможность начислить зарплату.
Ситуация усугублялась тем, что многие критически важные программы не имели исходников. Уже уйдя на пенсию, Бемер в конце 1990-х годов разработал специальный метод конвертации дат для такого ПО. Предложенное им решение Vertex 2000 работало на уровне объектного кода: оно находило в исполняемых файлах инструкции работы с датами и автоматически патчило их, чтобы двухзначные обозначения годов корректно обрабатывались при смене века.
Наследие Роберта Бемера
Каждый раз, когда мы взаимодействуем с облачными сервисами через консоль, отправляем данные по протоколу HTTP или просто нажимаем клавишу Esc для отмены ввода, мы воздаем должное работе Роберта Бемера, начатой им еще в конце 1950-х годов.
Вклад Бемера в разработку ASCII и внедрение управляющих последовательностей определил то, как современные распределенные системы обмениваются информацией. Без единого стандарта кодирования текстовых данных был бы невозможен запуск протоколов раннего интернета и, соответственно, появление современных форматов, включая JSON и XML. Даже обычная физическая клавиатура любого ПК или ноутбука до сих пор содержит придуманный им Escape, хотя сама суть этой клавиши уже существенно изменилась.
Многолетняя борьба Бемера с практикой хранения года двумя цифрами не только предупредила (впрочем, тщетно) индустрию о «проблеме 2000 года», но и заложила основу для последующего принятия стандарта ISO 8601, без которого сейчас не обходится ни одна база данных или облачный API.
До конца своих дней Бемер занимался любимым делом — систематизацией и организацией данных. Он создал обширный архив материалов об истории разработки ПО и разместил его на собственном сайте.
Скончался Роберт Бемер в 2004 году у себя дома на берегу водохранилища Поссум-Кингдом (Possum Kingdom Lake), штат Техас, в возрасте 84 лет после продолжительной борьбы с раком.
Но, чтобы не заканчивать на грустной ноте, поделимся еще одним интересным фактом, свидетельствовавшим о его преданности делу и профессиональной гордости: на автомобиле Бемера красовался персональный номер «Да, я отец ASCII», а его супруга Бетти ездила на «Мерседесе» с табличкой «ESC KEY». Красивых номеров и сейчас много, но Роберт Бемер своим пользовался по полному праву.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.