?

Log in

No account? Create an account

Previous Entry | Next Entry

Стандарты

Зачем вообще нужен обратимый транслит?

Вот зачем: есть и будут места, куда кириллицу нельзя. Важнейшие из них: E-mail, логины и имена пользователей (в том же Linux). Есть те, где она создаёт большие неудобства (cmd-файлы windows, git, bitbucket). Но мы хотим писать на русском языке (не хочешь - жми Су-Ц).

Тогда зачем нужен новый стандарт, если уже есть, к примеру, ГОСТ 7.79-2000 (системы А и Б) и ГОСТ 52535.1-2006 ? Ответим на примере:
Приходят к нам на работу Эй Даль и Ей Дал. Их нужно добавить в корпоративные информационные системы и дать им корпоративную почту. Мы транслитерируем их и получаем по ГОСТ 7.79-2000, система А: èj dal′ и ej dal. Нельзя имена с диакритикой. Выкидываем диакритику - имена начинают совпадать. Система Б: e`j dal` и ej dal. То же. ГОСТ 52535.1-2006 - ey dal и ey dal. Имена начинают совпадать. Мы, конечно, выкрутимся и одного из них переименуем. Но это означает ровно то, что принятая система кодирования не работает (неспособна точно и без искажений передавать информацию). Пример, когда это плохо, привёл автор первого обратимого транслита для кириллицы Владимир Зайцев. Ситуация такая: пришли Эй Даль и Ей Дал на томографию, и в итоге Эй Даль получил диагноз от Ей Дал и наоборот.

Да, но стоит ли ради такой, пусть и существенной, но преодолимой трудности заводить ещё один стандарт? Википедия приводит как раз 15 стандартов транслитерации, так что мы с яролитом даже в комикс попасть опоздали.

Ещё пример: мы хотим Си с русскоязычным синтаксисом. Теоретически Си поддерживает кириллицу, на практике же тот или иной инструмент обязательно сломается и придётся возвращаться к латинице. Поэтому мы сделаем утилиту, которая кодирует все идентификаторы транслитом и компилируем уже транслитерированную программу (такие утилиты уже есть). Мы захотим переводить ошибки компилятора Си обратно на русский язык. Компилятор скомпилировал транслитерированный текст и выдал сообщение "variable ej is not defined". Как мы переведём его на русский? "переменная эй не определена" или "переменная ей не определена"?

Какие костыли не придумай для решения этой задачи, они по сути всё равно сведутся к решению задачи создания обратимого транслита. Поэтому, если мы хотим использовать в ИТ русский язык (а кто не хотел, тот досюда не дочитал), то создание обратимого транслита на сегодня является неизбежным. Значит, нужно его стандартизировать, чем раньше - тем лучше. Ни один из 15 стандартов не годится для использования в программах - либо знаки препинания, либо необратимость. Так что в данном случае речь идёт не о создании «ещё одного» стандарта, а о решении актуальной задачи, которую ни один из 15 предыдущих стандартов не решил.

И последнее: зачем транслит, если есть Юникод? Повторяю ещё раз для самых маленьких: есть те места, где юникод применить на практике нельзя: имена пользователей, E-mail, идентификаторы Си, имена проектов на bitbucket, внутренние имена сайтов на хостинге Бегет, да и ещё массу других мест любой из вас при желании вспомнит.

А где применяется обратимый транслит?
Томография. ФИО пациента, забитое в томограф транслитом, позволяет врачу правильно назвать пациента по имени и скопировать ФИО в друге документы, не прибегая к суррогатным ключам и сторонним системам.

Имена в базе данных Firebird. Firebird имеет ограниченную (в мою бытность был 31 символ) длину идентификатора. При этом в Firebird нет пространств имён, а имена без учёта регистра. Имя таблицы обычно выглядит как префикспредметнойобласти_названиесущности.
Называть таблицу русскими буквами можно, но тогда лимит сократится вдвое, до 15 букв. Обратимый транслит позволяет называть таблицы по-русски, но использовать более длинные имена. Обратимость транслита помогает в ситуации, когда мы выдаём ошибку, скажем, "не удалось добавить запись в таблицу ...". Конечно, имя таблицы можно брать из каких-то внешних метаданных, но зачем это лишнее действие, если без него можно обойтись?

Логины. Одна организация (не пожелавшая назвать себя) по ТЗ получила требования, чтобы логин был в кириллице. Внутри система - на английском. Поэтому они использовали транслит для генерации логинов. При этом конечный пользователь даже не знал о том, что логины на самом деле на латинице. А теперь опять приходят наши друзья Эй Даль и Ей Дал и администратор (который тоже может не знать про латиницу) впадает в ступор, поскольку Эй Даль не добавляется. Некоторые программы (1С 7.7) показывают список возможных логинов в окне входа. Если транслит обратим, то мы можем получить список логинов с сервера и провести обратную транслитерацию. В противном случае нам нужно городить отдельную систему, параллельную системе учёта пользователей и нужную лишь для хранения русского имени. А в системе учёта пользователей далеко не всегда есть триггеры, которые позволили ли бы заметить добавление нового логина. Т.е. может возникнуть ненадёжная работа системы. Обратимый транслит легко и красиво решает эту проблему.

Бат-файлы. Яр был попыткой создать полностью русскоязычную среду. Посмотрите на 1С - там все понятия русифицированы. Так же и я попытался. Например, что такое для русскоязычного человека src? Просто набор букв. Исходные тексты можно назвать «ит», документацию «док» и т.п. Но когда мы пытаемся написать бат-файлы (для сборки системы и её запуска), там всё плохо. Начинает смешиваться юникод, 1251, 866. В итоге возникает огромное желание писать комментарии латиницей, чтобы снизить уровень сложности на 1. Соответственно возникают строчки типа @REM Ehta programma sokhranjaet obraz Jara. Также зачастую хочется назвать латиницей имена файлов, к которым мы обращаемся через call. Но среда-то должна быть русскоязычной, поэтому тут просто нет альтернативы транслиту. Обратимость здесь не так нужна, но зачем нужен необратимый транслит, если есть обратимый, который ничем не хуже?

Имена файлов и директорий. Когда я ещё пытался дружить с bitbucket, я столкнулся с тем, что некоторые имена файлов уродуются сервисом. Вплоть до повреждения репозитория. После этого пришлось некоторые директории переименовать в транслит.

Якоря в документации. Честно сказать, не помню где, но я столкнулся с тем, что в каком-то сервисе имена пунктов внутри файла (атрибут name) в кириллице не воспринимаются. Соответственно, при генерации оглавления (а она, естественно, должна быть автоматической) пришлось использовать транслит.

Имена таблиц в MS SQL. Профессионал, работая с базой из 100 таблиц, никогда не листает список мышью. Он пытается набирать название с клавиатуры. Если мы хотим начать русификацию, то назвать 101-ю таблицу в кириллице - означает разбить этот список на два. Здесь транслит нужен уже для политики. Впрочем, ту битву я вчистую проиграл, но я там уже и не работаю :)

И один гипотетический пример. Звонит Сергей Кужугетович Владимиру Владимировичу и говорит: к нам летят томагавки. Вышлите координаты целей для ответного удара на E-mail. Владимир Владимирович: а напомните ваш E-mail, у меня под рукой нет записной книжки. Ш как w? или как sh? C как русское или как доллар? И т.п. Пока происходит этот разговор, томагавки как раз успеют долететь. Это, конечно, рассказ метафорический. Но любая попытка продиктовать E-mail занимает в России много времени, а люди иногда бывают очень дорогостоящие. И каждый такой раз мы немножечко-немножечко увеличиваем своё отставание от США. А мог бы Сергей Кужугетович сказать: пишите на ФИО по Яролиту.

Comments

( 2 comments — Leave a comment )
Варлам Ерофеич
Oct. 2nd, 2018 08:34 pm (UTC)
Обратимый транслит
"Ей Дал" - это круто... (!)
Ну а так - дело хорошее. Шаг за шагом, а там, глядишь, и порядок наступит.
- Спасибо!...
budden73
Oct. 3rd, 2018 05:01 pm (UTC)
нашли ещё один транслит
https://lingvoforum.net/index.php/topic,52233.0.html

a b v g d e oh zh z i j k l m n o p r s t u f x c q sh ch uh w ih eh y ah
( 2 comments — Leave a comment )