Ремесло программиста

Объявление

форум на движке phpBB доступен для тестирования
www.strategia.space
www.strategia.space/forum/
по предложению Лиса - канал на Matrix - #remdev:matrix.org

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Ремесло программиста » Русский язык в ИТ » Новый план деятельности Д.Будяка


Новый план деятельности Д.Будяка

Сообщений 1 страница 13 из 13

1

Даже два: программирование-по-русски.рф/план.яргт/

Один - для государства, над которым мы не властны.
Другой - для частных лиц, который я исполняю по мере надобности.

Есть простая задача для волонтёров - написать функции кодирования-декодирования обратимого транслита на разных языках и разместить их где-нибудь в репозитории.

Отредактировано budden (2018-09-14 15:56:21)

2

Принять обратимый и буквенный стандарт транслитерации и использовать его везде, где не поддерживается кириллица. Обратимость состоит в том, что русский текст однозначно кодируется латинскими буквами и может быть точно восстановлен. Буквенность состоит в отсутствии в кодировке не-букв, например, апострофа

Обратное преобразование транслитерации имеет подводные камни. Как правильно написать по-русски «Pasha» — это «Паша» или «Пасха»? А уж с аббревиатурами вообще будет непонятно, что делать. Можно было бы решить проблемы с помощью небуквенных символов (типа «Pa[sh]a»). Это обеспечит обратимость, но противоречит Вашему требованию буквенности.

Хотя, конечно, можно выделить из латиницы какой-нибудь символ, неиспользуемый для транслитерации. Например, символы «q», «w», «x». Тогда можно обеспечить обратимость — при условии неиспользования этих символов при транслитерации: «Pawshxa»​.

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

А какую именно однобайтовую кодировку? Windows 1251, CP866? Эти кодировки не универсальны. Нельзя в одном тексте писать и по-русски, и на хинди. И код символа не говорит о том, к какому алфавиту он принадлежит. Вот поэтому Юникод и стал популярен, что он предлагает универсальное решение, которое устраивает всех более, чем на 99%. Да, он не идеален, у него есть недостатки. Каждая буква русского алфавита в нём занимает 2 байта, хотя можно было обойтись одним. Нам это не нравится. Но уж если мы не можем заставить IT-гигантов полностью перейти на международный стандарт кодировки, то как их заставить перейти на российский стандарт кодировки?

Если пофантазировать на тему универсальной однобайтовой кодировки, то я бы приветствовал бы такой стандарт.
1) В этой кодировке существуют коды, означающие переход на какой-то язык. Например:
<код русского языка> <последовательность русских букв> <код грузинского языка> <последовательность грузинских букв><переход на универсальные символы>!@#$%^&*()_ 0123456789и т. д.
2) Если национальный алфавит насчитывает меньше 128 букв и символов, то этот алфавит — однобайтовый. Русский язык вполне вписывается. Если больше 128, то извиняйте, товарищи китайцы, но вам можем дать только двухбайтовую кодировку.
3) Русский алфавит: «АаБб...ЕеЁё...ЮюЯя». В такой кодировке код символа «Я» больше кода «а». Во всех распространённых кодировках (Windows 1251, CP866, utf-8, utf-16, utf-32) дело обстоит с точностью до наоборот: почему-то «Я» впереди «а». Ну и буква «ё» должна быть на своём месте. Плюс сюда можно добавить популярные у нас символы - «№» и значок параграфа — в ASCII они почему-то отсутствуют.

Но кто ж на такой стандарт будет переходить? Если вдруг сами на него перейдём, то кто ж за рубежом в нём будет заинтересован?

3

> Обратное преобразование транслитерации имеет подводные камни.

Протестировать текущий вариант моей схемы транслита можно здесь:

программирование-по-русски.рф/яролит.яргт/

Код:
Паша <-> Pasha
Пасха <-> Paskha
Съесть <-> Syqestq
МикроЭВМ <-> MikroEHVM
Hello <-> jHjejljljo

Буквы укладываются в буквы, регистр сохраняется. Запрограммировать обратную транслитерацию на JS мне некогда было, но она обратима (у меня есть код на лиспе и набор тестов). Более того, даже смесь кириллицы с латиницей обратимо кодируется. Если кто-либо из нынешних участников форума найдёт контрпример - с меня тортик или алкогольный напиток.

> Нельзя в одном тексте писать и по-русски, и на хинди
А это не всегда нужно. Например, в МК микроволновой печи, продаваемой в России, вполне можно обойтись без хинди.

>  В этой кодировке существуют коды, означающие переход на какой-то язык
Это - не однобайтная кодировка. Получить энную букву из строки или узнать количество букв такой строки на экране - это уже не O(1).

>  то кто ж за рубежом в нём будет заинтересован
Кто не перейдёт, на того наложить санкции - это сейчас модно. И лишить доступа к нашему рынку. Дерипаска ведь тоже не хотел выходить из Русала, но США сумели сделать так, чтобы ему это стало интересно. Или что там у них - я не особо за этим слежу, хотя один мой знакомый потерял почти все свои сбережения на этом деле.

> почему-то «Я» впереди «а»
Потому что мы проиграли холодную войну, вот почему. Нам диктуют правила, сдерживающие наше развитие. Придумать кодировку, которая удобна для нас.

Отредактировано budden (2018-09-17 14:30:20)

4

Юрий написал(а):

Обратное преобразование транслитерации имеет подводные камни.

Для этого стандарты и разрабатывают. Если транслит для машинной обработки, т.е. совместимости с техн. протокалами, а не эстетическими фантазиями, то вообще проблем нет.
Решается в лоб, например, уже писал - 2 знака латиницы на 1 из кириллицы, очевидно всё однозначно обратимо и осилит любой первокурсник.
Проблема с чётким определением целей.

budden написал(а):

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

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

5

Если транслит для машинной обработки, т.е. совместимости с техн. протокалами, а не эстетическими фантазиями, то вообще проблем нет. Решается в лоб, например, уже писал - 2 знака латиницы на 1 из кириллицы

У, я то думал, речь про транслит для людей. Если для машинной обработки, то тему вообще не за чем поднимать. А если для людей, то 2 символа латиницы на любой символ кириллицы — это варварство. Какой смысл в таком транслите?

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

6

YUriyi, au!
> to 2 simvola latinicyy na lyuboyi simvol kirillicyy
Net takogo, sm. primeryy vyyshe zhe!
> U, ya to dumal, rechq pro translit dlya lyudeyi.
YA ochenq uzh rasstaralsya i vyyzhal iz kisonqki pochti vsyo vozmozhnoe. Na samom dele, gde-to tam mozhno eshhyo uluchshitq, chtobyy ne poluchalosq tri jY podryad v slove "obratimyyyi". No, soglasitesq, chitaemostq ne silqno ustupaet drugim, neobratimyym translitam. Predlozhite luchshe - budem polqzovatqsya vashim.

7

Юрий написал(а):

Какой смысл в таком транслите?

А какой смысл в транслите для людей? Это не варварство?
Поголовно всех переучить вместо нескольких строчек кода. Прелестно.

8

А какой смысл в транслите для людей? Это не варварство?

Лично для меня он имеет смысл: я иногда его читаю. Когда моя утилита транслитерации русского C/C++ в стандартный переводит кириллицу в транслит, то потом текст программы (уже на транслите) берёт компилятор. Когда находятся ошибки, то компилятор ругается, типа "identifier 'dlina_stroki' is not defined".  Этот тот случай, когда приходится читать транслит. Поэтому хочется, чтобы он схватывался на лету. А если нет ошибок, то и читать его не приходится.

9

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

10

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

Конечно нет этой поддержки! И никто (кроме нас, узкого круга) не заявляет о её необходимости.

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

11

И никто (кроме нас, узкого круга) не заявляет о её необходимости.

В т.ч. поэтому Ваше решение для других и малопригодно - цикл разработки не обеспечивается. И для англоязычных тоже такой код нечитаем. Соцкриптография какая-то.
Хотя, навскидку, перевод потока сообщений от компилятора задача не хитрая. И тогда м.б. окажется, что удобнее к транслиту  ещё вкл. префиксы или поменяется представление об удобстве - Ваша транслитерация, привычная Вам для чтения, или обратимая от Дениса или вышеуказанная простейшая, которая программируется в неск. строк :rolleyes:

12

Вы здорово обсудили абстрактные вопросы транслитерации. А как насчёт того, чтобы обсудить конкретно предлагаемый мой способ транслитерации. Например, без такого транслита (обратимого и пишущего буквы в буквы) никак нельзя сделать корректный переводчик Си на русский - некоторые идентификаторы начнут слипаться, хотя напороться на это и не так легко.

13

budden написал(а):

конкретно предлагаемый мой способ транслитерации.

Корректный.


Вы здесь » Ремесло программиста » Русский язык в ИТ » Новый план деятельности Д.Будяка