Русские буквы (не все) в Билетах РЖД, на самом деле - латиница

Не так давно на Баше промелькнуло занятное открытие: в недрах системы бронирования ж/д билетов, оказывается, есть не все русские буквы. История вызвала массу домыслов, причём выдвинуты самые разные версии: от непрофессионализма инженеров РЖД до откровенной конспирологии. Всё проще, дело в истории железных дорог и советских компьютеров.
Всё началось в XIX веке.
Первый проект по автоматизации сбора и обработки данных в серьёзных масштабах – перепись населения США в 1890. Для фиксации данных была взята проверенная технология, придуманная для ткацких станков – представление узора с помощью пробивки отверстий в картонных карточках. Так появились перфокарты, на них пробивались промежуточные результаты по округам, которые затем суммировались.
Перфокарты как стандарт хранения данных окончательно устаканились к концу 1920-х, стандартом стал формат IBM: 80 колонок по 12 отверстий. Тогда перфокарты применяли только для хранения и обработки числовых данных, о тексте речь не шла. Принцип был простой: каждая колонка – одна цифра. Дополнительные 2 отверстия в каждой колонке служили для указания на промежуточный результат.
С появлением первых ЭВМ общего назначения стало необходимо как-то записывать на перфокарты и текст. В начале 50-х годов во время разработки IBM 701 – первого коммерчески доступного компьютера – была придумана довольно оригинальная кодировка текста специально для перфокарт, BCDIC, в дальнейшем расширенная до EBCDIC. Эта кодировка не имеет ничего общего со всем известной и ставшей мировым стандартом кодировкой ASCII, тем не менее EBCDIC до сих пор используется в мейнфреймах IBM.
Конечно, никакой кириллицы в этой кодировке не было.
Кириллица
В СССР с 50-х годов ХХ века использовался тот же стандарт перфокарт IBM (80×12), но вот кодировка символов, и даже направление записи, отличались. В стандарте IBM буквы, как и цифры, записывались поколонно, а в стандарте УПП (Устройство Подготовки Перфокарт) – построчно, причем на каждый символ отводилось 8 отверстий, хотя фактически для данных из них использовалось только 7.
Более того, кодировка символов алфавита для УПП не соответствовала кодировке символов ВКД, принятой в первых советских ЭВМ (Урал и БЭСМ).
На всё это разнообразие накладывался ещё два исторических фактора – телеграф и телетайп.
Исторически телеграфные линии строились параллельно железным дорогам, и, конечно, железная дорога изначально была основным заказчиком и пользователем телеграфа. К началу XX столетия телеграфный аппарат был практически на каждой станции железных дорог Российской империи.
Телеграф тех времён использовал код Морзе – сочетание точек и тире. Читать точки-тире и переводить их в буквы очень неудобно, поэтому довольно скоро появилось новое устройство, телетайп, представляющее из себя электромеханическую печатную машинку, передающую и принимающую данные по уже имеющимся телеграфным линиям.
Телетайп использовал свою кодировку, пятиразрядный код Бодо/Мюррея, который был стандартизирован, в том числе и в СССР, к началу 30-х годов. Для кодировки кириллицы использовались расширения кода Бодо/Мюррея, называемые регистрами.
Как азбука Морзе, так и код Бодо не включали в себя «маленькие», строчные буквы. Весь текст передавался только заглавными.
К началу 50-х телетайпы, как и телеграфные аппараты за полвека до этого, были почти на каждой ж/д станции СССР, и часто не в единственном экземпляре.
Телетайп, ЭВМ и железные дороги
На железных дорогах телетайп применялся очень активно для диспетчеризации и координации поездов и грузов в них. Было сформировано несколько отраслевых стандартов кодирования данных о составах, о пунктах назначения и остановках, о тоннаже, грузах и тп. Многие из этих стандартов действуют до сих пор.
Примерно к середине 50-х стало понятно, что если к телетайпу прикрутить компьютер, то можно существенно оптимизировать движение грузовых составов, поэтому железные дороги стали одним из первых пользователей советских ЭВМ. Эксперименты по применению ЭВМ на ж/д начались в конце 40-х в самом деле, примерно в то же время, когда компьютеры только начали использоваться для расчётов в оборонке.
Важно понимать, что никаких мониторов в то время в составе ЭВМ не было в помине, данные в основном вводились через перфоленты или перфокарты, или напрямую с телеграфной линии, а результаты расчётов печатались на бумагу или выбивались на перфокартах.
В оборонке компьютеры в то время использовались преимущественно для математических вычислений (решение уравнений), буквы были особо не нужны, достаточно было принтеров только с цифрами и некоторыми знаками препинания.
На железных дорогах компьютеры с самого начала использовали не только для расчётов, но и для обработки данных о составах. Дополнительно к этому уникальной особенностью железных дорог относительно других отраслей было массовое распространение «принтеров» – телетайпов – позволяющих вводить с клавиатуры и выводить на бумагу не только цифры, но ещё и буквы, причём не только кириллицу, но и латиницу.
К середине 60-х телетайпов на ж/д станциях было несколько тысяч, если не десятков тысяч, но буквы в этих «принтерах» были только заглавные, а «прошивка», преобразующая коды в буквы, была механическая. Обновить такую механическую «прошивку» для изменения кодировки не было никакой возможности, для этого надо было физически заменять устройство.
Пассажирские перевозки
Первые эксперименты по созданию сети продажи ж/д билетов начались в начале 60-х – было принято решение попытаться автоматизировать билетные кассы Московского узла железных дорог. По косвенной информации, путём интриг и использования родственных связей разработка была передана аж в Ереван (Армения) и за основу была взята ЭВМ «Раздан-3».
Так появилась система «Маршрут-1», которая, после примерно пятилетней отладки, начала обслуживать кассы Киевского вокзала. После введения в эксплуатацию систему переименовали в АСУ «Экспресс», так она и называется до сих пор.
Особенности разработки ЭВМ в СССР
Как и везде в мире, первые компьютеры в СССР строились для расчётов в оборонке. Проектированием занимались сразу несколько коллективов, практически никак друг с другом не сотрудничавших, причём не только из-за секретности, но и из-за административной конкуренции (это когда борьба не за рынки, а за благосклонность партийного руководства). Такой расклад привёл к появлению сразу нескольких несовместимых между собой ветвей развития ЭВМ.
Более того, в погоне за госпремиями и весьма ограниченными материальными и людскими ресурсами, коллективы разработчиков и их кураторы иногда устраивали настоящие межведомственные войны. Высшим пилотажем считалось протолкнуть ГОСТ, несовместимый с разработками конкурентов и перечёркивающий многолетние результаты их труда. Это чрезвычайно тормозило прогресс в целом.
Академик Лебедев, главный титан советского компьютеростроения, под руководством которого была разработана линейка БЭСМ, в самом конце 60-х из-за болезни существенно утратил влияние, и во многом поэтому было принято антисоломоново решение: скопировать в СССР штатовскую 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-х.
К тому моменту сколь-нибудь серьёзных компьютеров производства РФ не существовало в природе, поэтому следующую версию стали делать на мейнфреймах IBM, просто чтобы всё не переписывать и внедрять поэтапно, соединяя новые узлы системы со старыми, на ЕС ЭВМ.
Вероятно, в новую систему мигрировала часть старого кода, в т.ч. сообщения об ошибках, записанные в кодировке только из заглавных букв с пропусками в кириллице.
Судя по всему, они там остались до сих пор, и именно на них и наткнулись разработчики, запостившие своё открытие на Башорг.
И, скорее всего, именно поэтому билеты в кассах РЖД до сих пор печатаются только заглавными.

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий
Да чтоб у нас что-то поменялось, я не знаю сколько времени должно пройти.
раскрыть ветку (8)
2
Автор поста оценил этот комментарий

Похоже в данном случае изменений в ближайшее время вообще не предвидится, с учетом того, что текущая система является уже привычным стандартом

раскрыть ветку (2)
DELETED
Автор поста оценил этот комментарий

А зачем что-то менять?

раскрыть ветку (1)
Автор поста оценил этот комментарий

именно

1
Автор поста оценил этот комментарий

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

раскрыть ветку (4)
Автор поста оценил этот комментарий

Старая техника давно вышла из строя и в банках просто виртуалят окружение на новеньких и красивеньких серверах.

раскрыть ветку (3)
Автор поста оценил этот комментарий

Да, так и есть. А внутри нового красивого - всё тот же виртуализированный мейнфрейм с коболом.

раскрыть ветку (2)
DELETED
Автор поста оценил этот комментарий

Да не только с кобальтом истории есть.

Не так давно лично писал окружение на c# под asp.net core, для win32 библиотеки расчета расстояний. По итогу это чудо работает под wine в docker.

Некоторые проблемы дешевле решить так, нежели переписывать библиотеки.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ну так кто же спорит... Самому приходилось писать обёртку над древней библиотекой на VB. Но настоящая веселуха начинается тогда, когда старый компонент чего-то не умеет, а оно нужно. И заказчик недоумевает, почему такое мелкое изменение стоит такую кучу денег.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку