«Открытые системы»
Необходимость установить соответствие между графическим представлением символов и их двоичными кодами возникла уже при первых попытках применить компьютеры для работы с текстами
Называя компьютер компьютером, его создатели не предполагали в своем детище открывшихся позже коммуникационных способностей. Но уже через несколько лет компьютеры стали оперировать текстами. Сегодня ПК используется преимущественно как устройство для работы в сети и с текстами. Подобная трансформация обеспечивается не в последнюю очередь средствами кодирования символов.
Задача установления соответствия между графическим представлением символов и их двоичными кодами возникла при первых же попытках применить компьютеры для работы с текстами. Из-за отсутствия стандартов ее всякий раз решали по-разному; в иных случаях кодировку привязывали и к формату перфокарты, и к машинному слову. Первой не вполне удавшейся попыткой стандартизации (1956 год) оказалось создание шестибитного кода Fieldata. В экспериментальном порядке он был реализован на компьютерах UNIVAC 1100, но к 1962 году эти работы прекратились.
ASCII оказался долгожителем, став одним из самых успешных примеров стандартизации за всю компьютерную историю |
Преемником Fieldata стал семибитный код ASCII (American Standard Code for Information Interchange). За долгие годы появилось множество надстроек для создания национальных и международных версий кода ASCII. В частности, ASCII вошел в бесконечный ряд кодировок по ГОСТу, к счастью сегодня забытых, в Windows 1251 и 1242, в KOI-8R, в Unicode и многие другие коды.
ASCII оказался долгожителем, став одним из самых успешных примеров стандартизации за всю компьютерную историю. Однако сегодня многие его элементы стали очевидной архаикой. Практически не используется большая часть из множества непечатаемых символов, которые когда-то требовались для управления процессом передачи данных, работой телетайпов и других периферийных устройств. Среди них ACK и NAK, подтверждающие или отвергающие получение, звонок колокольчика BELL, символы от 1С до 1F для управления файлами и т. д. В ASCII реализована и изящная, но сегодня практически бесполезная возможность управления с использованием так называемых «Escape-последовательностей». Этот вид особых цепочек символов, начинающихся с символа Escape, позволяет создавать собственный набор команд для управления тем или иным подключенным по последовательному интерфейсу устройством, например алфавитно-цифровым терминалом.
У ASCII есть законный отец — Боб Бемер, чей приоритет очевиден. Но и у него были предшественники; среди них особая роль принадлежит французскому изобретателю Жан-Морису Эмилю Бодо, который в 1874 году предложил пятибитный код для телеграфии, по-настоящему цифровой в отличие от эмпирического кода Морзе. Изобретение Бодо позволило отказаться от телеграфного ключа и использовать для ввода специальную клавиатуру с пятью клавишами.
В 1901 году американец Дональд Мюррей адаптировал код Бодо к обычной клавиатуре QWERTY; в этом виде он и существует как International Telegraph Alphabet No 2 (ITA2). Русская версия кода Бодо известна под именем MTK-2. Имя изобретателя увековечено в названии единицы измерения скорости передачи данных «бод».
Бемер был выдающимся программистом первого поколения. Начав работать в 1949 году, за долгую профессиональную жизнь он внес в программирование немало нового. Ему принадлежит авторство терминов Кобол, CODASYL, Software Factory. Именно Бемер первым заговорил о проблеме Y2K — задолго до того, как она обеспокоила человечество. Впервые он написал о бомбе, заложенной в представление года двумя разрядами, в 1971 году, вторично — в 1979-м. И все же на первом месте среди его достижений остался ASCII.
В 1959 году, в его бытность сотрудником IBM, Бемер начал работать над задачами, связанными с упаковкой текстов. Заслуга Бемера в том, что в своем подходе к проблеме кодировки символов он смог уловить будущую связь между коммуникациями и компьютерами. В первой версии разработанный им код ASCII не стал универсальным: поначалу он задумывался как средство для обмена данными с электромеханическими терминалами. В этом качестве ASCII был опубликован в 1963 году ассоциацией ASA (American Standards Association), позже ставшей институтом ANSI (American National Standards Institute). В своем исходном виде ASCII был семибитным (максимальное число кодируемых символов равнялось 128), а восьмой бит являлся контрольным. В нем не было даже заглавных букв.
Первоначальная версия кодировки была доведена до рабочего состояния в 1968 году как стандарт ANSI X3.4 под именем US-ASCII. Ограниченность всего 96 печатными символами оказалась серьезным барьером на пути распространения стандарта: даже британский английский требует еще одного символа для обозначения фунта стерлингов, да и во всех остальных языках, письменность которых построена на латинице, есть специфические символы. Еще большие сложности возникают при необходимости работы с кириллицей.
Из-за привязанности к местной специфике на протяжении почти двух десятилетий стандарт не был широко востребован за пределами Соединенных Штатов. В эпоху мэйнфреймов и мини-ЭВМ не было проблемы массовости и интернационализации. Даже в IBM, где в 60-е годы работал Бемер, использовалась альтернативная кодировка EBCDIC. Кстати, были попытки сделать национальные версии и этой кодировки, но результаты широкого распространения не получили. Единственным компьютером, на котором ASCII применялся для представления текстовых данных, был UNIVAC 1050; чаще же этот код использовался для обмена с печатающими, а в последующем — и с алфавитно-цифровыми терминалами.
Однако по мере распространения американских компьютерных технологий по всему миру, особенно с появлением ОС Unix и ПК, возникла острая необходимость в принятии единой системы кодировки, и лучшим претендентом на роль прототипа стандарта оказался ASCII. Попытки создания международных стандартов предпринимались и ранее; так, для телеграфии в 1972 году на основе ASCII был разработан стандарт ISO 646, но его с трудом можно было признать международным, ведь в те же самые 128 символов упаковывались самые разнообразные алфавиты, а потому существовало столько же версий, сколько языков. Для кириллицы был разработан код КОИ-7. Выход из положения стал возможен за счет отказа от контрольного бита и перехода к восьмибитной упаковке. Новый набор символов стали называть «расширенным»; именно в этом виде он хорошо известен сегодня.
В СССР вопрос «кириллизации» решался мучительно, но в конечном итоге эволюционный процесс естественным образом завершился. На сегодняшний день существует несколько вариантов кодировки КОИ-8; помимо русской KOI8-R, есть еще украинская KOI8-U. Основной объем работы по созданию KOI8-R выполнил Андрей Чернов. С его подачи KOI8-R стал фактическим стандартом для обмена русскоязычными сообщениями в Internet, это сетевая и транспортная кодировка. Во внутреннем представлении в компьютерах может использоваться и локальная кодировка, например Windows-1251.
Роберт Бемер
(1920-2004) начал свою карьеру программиста в 1949 году и с тех пор не прекращал работать до последних дней жизни. В его послужном списке такие компании, как RAND Corporation, Marquardt, Lockheed, IBM, где он занимал пост директора по вопросам стандартов программирования, Univac, Bull GE, General Electric и Honeywell. Он участвовал в создании кода ASCII, без которого невозможна сегодняшняя электронная почта, Web, лазерные принтеры и видеоигры. Бемер обладал счастливым даром оказываться в нужное время в нужном месте. Наряду с работами над ASCII, он принимал участие в разработке языка программирования Кобол. В 1971 году он первый выступил с предостережением, что представление года двумя цифрами чревато серьезной проблемой при наступлении третьего тысячелетия — так называемая проблема 2000 года. В то время для решение этой проблемы нужно было применять только четырехзначное обозначение даты. К нему, как это обычно и бывает, не прислушались, в результате только в США на решение этой проблемы было затрачено 122 млрд. долл. Личная жизнь Бемера была столь же яркой, как и его карьера: он был женат шесть раз на пяти женщинах, у него было пять детей от первого брака и шесть — от другого. Кроме того, Бемер усыновил еще двоих детей.
Эмиль Бодо
родился в 1845 году в семье фермера. В детстве и в юности никто не смог бы даже предположить, что этот человек — типичный сельский житель, получивший только начальное образование и, казалось бы, посвятивший себя сельскохозяйственному труду, станет гениальным изобретателем. В 1870 году он поступил на работу в Управление телеграфных линий. Его заинтересовала научная сторона дела и он начал активно заниматься самообразованием в свободное время. Его рвение было отмечено, и Бодо перевели в Париж, работать на центральной телеграфной станции. Он продолжал обучение, параллельно занимаясь изобретательством, — начал работать над созданием телеграфного аппарата. В 1880 году он получил должность контролера, а затем, после успешного ввода в действие своей системы, стал инженером. В 1882 году Бодо был уже инспектором-инженером. Он поставил своей задачей повышение эффективности чрезвычайно медленной телеграфной передачи. Он предложил идею, названную «печатным телеграфом Бодо». Сейчас такой принцип можно было бы назвать синхронным мультиплексированием по времени. В 1870 году Бодо разработал первый действительно цифровой телеграфный код, который известен как International Telegraph Code № 1.
Андрей Чернов
родился в 1966 году, высшее образование получил на факультете ВМиК МГУ. После окончания университета Чернов ушел в ИПК Минавтопрома разрабатывать систему Unix, откуда перешел в кооператив «Демос», в дальнейшем — в АО «Релком». Всенародную известность Чернову принесла разработка почтовой программы UUPC/@ (русифицированная версия оригинального UUPC, а всемирную — разработка стандарта KOI-8 для электронной почты.
Список проектов, в которых Чернов участвовал как программист или консультант, имеет широкую географию. Во многих случаях он выполнял роль связующего звена между двумя мирами — миром англоязычных программистов и миром отечественных пользователей. В течение долгого времени Чернов является активным членом международной команды разработчиков FreeBSD. Хотя он не отказывается от коммерческих проектов (и охотно в них участвует), он — один из немногих сохранившихся аборигенов киберпространства, по духу близкий к программистам начала 70-х, поднимавших Unix и первые компьютерные сети в эпоху, когда еще большинство программных кодов были в общественном доступе. Чернов, по его собственному определению, биомеханоид, хотя его в равной степени можно назвать магом, конструктивным хакером и юниксоидом.