Русский
Русский
English
Статистика
Реклама

Ebcdic

Почему в EBCDIC буквы идут не подряд?

07.10.2020 20:16:52 | Автор: admin

Стандарт ASCII был принят в 1963, и сейчас вряд ли кто-нибудь использует кодировку, первые 128 символов которой отличались бы от ASCII. Тем не менее, до конца прошлого века активно использовалась EBCDIC стандартная кодировка для мейнфреймов IBM и их советских клонов ЕС ЭВМ. EBCDIC остаётся основной кодировкой в z/OS стандартной ОС для современных мейнфреймов IBM Z.

То, что сразу бросается в глаза при взгляде на EBCDIC то, что буквы идут не подряд: между I и J и между R и S остались неиспользованные позиции (на ЕС ЭВМ по этим промежуткам распределили символы кириллицы). Кому могло придти в голову кодировать буквы с неравными пропусками между соседними буквами?

Само название EBCDIC ("Extended BCDIC") намекает на то, что эта кодировка в отличие от ASCII создавалась не на пустом месте, а на основе шестибитной кодировки BCDIC, которая использовалась начиная с IBM 704 (1954):

Непосредственной обратной совместимости нет: удобной чертой BCDIC, утраченной при переходе к EBCDIC, было то, что цифрам 0-9 соответствуют коды 0-9. Тем не менее, разрывы в семь кодов между I и J и в восемь кодов между R и S в BCDIC уже были. Откуда же они взялись?

История (E)BCDIC начинается одновременно с историей IBM задолго до электронных компьютеров. IBM образовалась в результате слияния четырёх компаний, из которых самой технологически продвинутой была "Tabulating Machine Company", основанная в 1896 Германом Холлеритом изобретателем табулятора. Первые табуляторы просто подсчитывали число перфокарт, пробитых в определённом месте; но в 1905 Холлерит начал производство десятичных табуляторов. Каждая карта для десятичного табулятора состояла из полей произвольной длины, и числа, записанные в этих полях в привычной десятичной форме, суммировались по всей колоде. Разбивка карты на поля задавалась соединением проводов на коммутационной панели табулятора. Например, на этой перфокарте Холлерита, хранящейся в Библиотеке Конгресса, очевидным образом выбито число 23456789012345678, неизвестно как разделённое на поля:

Самые внимательные могли заметить, что на карте Холлерита 12 рядов для отверстий, хотя для цифр достаточно десяти; а в BCDIC для каждого значения старших двух битов используются только 12 кодов из 16 возможных.

Конечно же, это не случайное совпадение. Изначально Холлерит предназначал дополнительные ряды для "специальных отметок", которые не суммировались, а просто подсчитывались как в самых первых табуляторах. (Сегодня мы бы назвали их "битовыми полями".) Кроме того, среди "специальных отметок" можно было задать group indicators: если при табуляции требовались не только окончательные суммы, но и промежуточные, то табулятор останавливался, когда обнаруживал изменение любого из group indicators, и оператор должен был переписать промежуточные суммы с цифровых табло на бумагу, обнулить табло, и возобновить табуляцию. Например, при подсчёте бухгалтерских балансов группа карт могла соответствовать одной дате или одному контрагенту.

К 1920, когда Холлерит уже ушёл на пенсию, вошли в употребление "печатающие табуляторы", которые подключались к телетайпу и могли сами печатать промежуточные суммы, не требуя вмешательства оператора. Сложность теперь заключалась в том, чтобы определить, к чему относится каждое из напечатанных чисел. В 1931 IBM решила при помощи "специальных отметок" обозначать буквы: отметка в 12-том ряду обозначала букву от A до I, в 11-том от J до R, в нулевом от S до Z. Новый "алфавитный табулятор" мог печатать название каждой группы карт вместе с промежуточными суммами; при этом непробитый столбец превращался в пробел между символами. Заметьте, что S обозначается комбинацией отверстий 0+2, а комбинация 0+1 изначально не использовалась из опасения, что два отверстия рядом в одном столбце могут вызвать механические проблемы в считывателе.

Теперь на таблицу BCDIC можно посмотреть немного под другим углом:

За исключением того, что 0 и пробел переставлены местами, старшие два бита определяют "специальную отметку", которую с 1931 пробивали в перфокарте для соответствующего символа; а младшие четыре бита определяют цифру, пробиваемую в основной части карты. Поддержка символов & - / добавилась в табуляторы IBM в 1930-х, и кодировка этих символов в BCDIC соответствует пробиваемым для них комбинациям отверстий. Когда понадобилась поддержка ещё большего числа символов, то в качестве дополнительной "специальной отметки" стали пробивать ряд 8 таким образом, в одном столбце могло быть до трёх отверстий. Такой формат перфокарт сохранился практически неизменным до конца века. В СССР оставили IBM-овские кодировки латиницы и пунктуации, а для букв кириллицы пробивали сразу по нескольку "специальных отметок" в рядах 12, 11, 0 не ограничиваясь тремя отверстиями в одном столбце.

Когда создавался компьютер IBM 704, то над кодировкой символов для него долго не думали: взяли кодировку, уже используемую тогда в перфокартах, и лишь 0 "поставили на место". В 1964, при переходе от BCDIC к EBCDIC, младшие четыре бита каждого символа оставили без изменений, хотя немного перетасовали старшие биты. Таким образом формат перфокарт, выбранный Холлеритом в начале прошлого века, оказал влияние на архитектуру всех компьютеров IBM, до IBM Z включительно.

Подробнее..

Билет без некоторых русских букв

18.03.2021 22:21:23 | Автор: admin

Не так давно на Баше промелькнуло занятное открытие: в недрах системы бронирования ж/д билетов, оказывается, есть не все русские буквы. История вызвала массу домыслов в Тви, причём выдвинуты самые разные версии: от непрофессионализма инженеров РЖД до откровенной конспирологии. Всё проще, дело в истории железных дорог и советских компьютеров.

Всё началось в XIX веке

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

Перфокарты как стандарт хранения данных окончательно устаканились к концу 1920-х, стандартом стал формат IBM: 80 колонок по 12 отверстий. Тогда перфокарты применяли только для хранения и обработки числовых данных, о тексте речь не шла. Принцип был простой: каждая колонка одна цифра. Дополнительные 2 отверстия в каждой колонке служили для указания на промежуточный результат.

С появлением первых ЭВМ общего назначения стало необходимо как-то записывать на перфокарты и текст. В начале 50-х годов во время разработки IBM 701 первого коммерчески доступного компьютера была придумана довольно оригинальная кодировка текста специально для перфокарт, BCDIC, в дальнейшем расширенная до EBCDIC. Эта кодировка не имеет ничего общего со всем известной и ставшей мировым стандартом кодировкой ASCII, там не менее EBCDIC до сих пор используется в мейнфреймах IBM.

Конечно, никакой кириллицы в этой кодировке не было.

Кириллица

В СССР с 50-х годов ХХ века использовался тот же стандарт перфокарт IBM (8012), но вот кодировка символов, и даже направление записи, отличались. В стандарте IBM буквы, как и цифры, записывались поколонно, а в стандарте УПП (Устройство Подготовки Перфокарт) построчно, причем на каждый символ отводилось 8 отверстий, хотя фактически для данных из них использовалось только 7.

Более того, кодировка символов алфавита для УПП не соответствовала кодировке символов ВКД, принятой в первых советских ЭВМ (Урал и БЭСМ).

Из книги Алгоритмический язык ФОРТРАН, В.Я. Карпов, 1974 годИз книги Алгоритмический язык ФОРТРАН, В.Я. Карпов, 1974 год

Телеграф

На всё это разнообразие накладывался ещё два исторических фактора телеграф и телетайп.

Исторически телеграфные линии строились параллельно железным дорогам, и, конечно, железная дорога изначально была основным заказчиком и пользователем телеграфа. К началу XX столетия телеграфный аппарат был практически на каждой станции железных дорог Российской империи.

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

Телетайп использовал свою кодировку, пятиразрядный код Бодо/Мюррея, который был стандартизирован, в том числе и в СССР, к началу 30-х годов. Для кодировки кириллицы использовались расширения кода Бодо/Мюррея, называемые регистрами.

Как азбука Морзе, так и код Бодо не включали в себя маленькие, строчные буквы. Весь текст передавался только заглавными.

К началу 50-х телетайпы, как и телеграфные аппараты за полвека до этого, были почти на каждой ж/д станции СССР, и часто не в единственном экземпляре.

Телетайп, ЭВМ и железные дороги

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

Примерно к середине 50-х стало понятно, что если к телетайпу прикрутить компьютер, то можно существенно оптимизировать движение грузовых составов, поэтому железные дороги стали одним из первых пользователей советских ЭВМ. Эксперименты по применению ЭВМ на ж/д начались в конце 40-х в самом деле, примерно в то же время, когда компьютеры только начали использоваться для расчётов в оборонке.

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

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

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

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

Пассажирские перевозки

Первые эксперименты по созданию сети продажи ж/д билетов начались в начале 60-х было принято решение попытаться автоматизировать билетные кассы Московского узла железных дорог. По косвенной информации, путём интриг и использования родственных связей разработка была передана аж в Ереван (Армения) и за основу была взята ЭВМ Раздан-3.

Так появилась система Маршрут-1, которая, после примерно пятилетней отладки, начала обслуживать кассы Киевского вокзала. После введения в эксплуатацию систему переименовали в АСУ Экспресс, так она и называется до сих пор.

Особенности разработки ЭВМ в СССР

Как и везде в мире, первые компьютеры в СССР строились для расчётов в оборонке. Проектированием занимались сразу несколько коллективов, практически никак друг с другом не сотрудничавших, причём не только из-за секретности, но и из-за административной конкуренции (это когда борьба не за рынки, а за благосклонность партийного руководства). Такой расклад привёл к появлению сразу нескольких не совместимых между собой ветвей развития ЭВМ.

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

Это чрезвычайно тормозило прогресс в целом, и после смерти главного титана советского компьютеростроения академика Лебедева, под руководством которого была разработана линейка ЭВМ БЭСМ, в начале 70-х было принято антисоломоново решение: скопировать в СССР штатовскую IBM System/360. Просто чтобы навсегда пресечь разброд и шатание.

На основе архитектуры System/360 предполагалось создать целую линию компьютеров разной мощности. Всё получилось и эти компьютеры вошли в историю как Единая Серия Электронно-Вычислительных Машин ЕС ЭВМ.

Разумеется, ЭВМ производства IBM не понимала кириллицу, но что ещё хуже, и стандартная к тому моменту ASCII была для System/360 не родной. Как выше уже упоминалось, основной кодировкой System/360 была EBCDIC.

При клонировании архитектуры в эту кодировку добавили кириллицу, но за основу взяли принципы, применявшиеся ещё в кодировках БЭСМ ВКД и УПП: зачем добавлять кириллические символы, похожие на латиницу, давайте добавим только те, которых в латинице нет.

Так появилась кодировка ДКОИ, ставшая стандартом для серии ЕС ЭВМ, а позже и весьма странным отраслевым ГОСТ-ом 19768-74.

Экспресс-2

АСУ Экспресс-1, в целом, была устаревшей и плохо масштабируемой с момента внедрения, поэтому после начала производства машин Единой Серии было принято решение переделать всё на ЕС ЭВМ. На основе этих машин была спроектирована и введена в эксплуатацию в начале 80-х АСУ Экспресс-2.

Понятно, что ради встраивания системы автоматизированных продаж билетов никто не собирался менять устоявшуюся кодировку имеющихся на ж/д телетайпов для этого надо было поменять сами телетайпы. То-есть в системе остались только цифры, знаки препинания и заглавные буквы, которые в телетайпах были почти все. Но вот зато в EBCDIC/ДКОИ они были не все, и поэтому в Экспресс-2 оставили только заглавные за вычетом русских букв А, В, Е, К, М, Н, О, Р, С, Т и Х, потому что их просто не было в ДКОИ. Конечному то пользователю билета совершенно всё равно, напечатана, скажем, буква М латиницей или кириллицей они визуально совершенно одинаковы.

Экспресс-3

С увеличением объёмов ж/д перевозок системы Экспресс-2 стало не хватать уже к концу 80-х, но в 1991 произошел распад СССР и стало не до этого. К вопросу вернулись только к концу 90-х.

Источник https://bit.ly/38VKEqzИсточник https://bit.ly/38VKEqz

К тому моменту сколь-нибудь серьёзных компьютеров производства РФ не существовало в природе, поэтому следующую версию стали делать на мейнфреймах IBM, просто чтобы всё не переписывать и внедрять поэтапно, соединяя новые узлы системы со старыми, на ЕС ЭВМ.

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

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

И, скорее всего, именно поэтому билеты в кассах РЖД до сих пор печатаются только заглавными.

Подробнее..
Категории: История it , Ebcdic , Ржд , Телетайп

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru