LINUX.ORG.RU

Обдумываю концепцию новой кодировки

 , ,


0

4

Проектирую тут ЯП и дошло дело до UTF-8 и вот он мне, ну, совсем не нравится. В части графем и в части двубайтовой кодировки символов, которые вполне раньше были однобайтовыми в легаси системах. Наполовину не нравится отсутствие перехода за O(1) по произвольному индексу.

Поэтому идея сделать кодировку, где первый байт (в самой строке) определяет тип кодирования. Если это языки, которые в легаси кодировках могли в 1 байт, то в первом байте будет об этом указано. А если это винегрет из символов, то в первом байте будет указано перейти на проверку первых битов, чтобы определиться какой у нас символ однобайтовый или двубайтовы.

Но тут как в UTF-8, тогда не получится перемещаться по произвольному индексу за O(1). Можно винегрет кодировать весь двумя байтами (или даже 4-мя), указав это опять же в первом байте. И тогда проблема исчезает. И этот тип кодирования может задать принимающая символьные байты сторона - хочет так, а хочет вот так. В зависимости от дальнейшей задачи работы с этой строкой.

Такая вот концепция. К ИИ-ке смысла нет идти - дуб - дубнем, ей только задачи по вайбкодингу отдавать. А на новые концепции только подхалимство, а не дельные советы.

UPD 1 Добавил конкретики https://chatgpt.com/share/6a97d97d-3fac-83ed-af50-6022e8f635e2 Для Ъ Обдумываю концепцию новой кодировки (комментарий)

★★★★★

Последнее исправление: foror (всего исправлений: 4)
Ответ на: комментарий от AZJIO

неверной раскладки

А еще обратите внимание, что латинская Y и кириллическая N - это одна и та же кнопка. Поэтому ответ на запрос програмы Yes/No становится зависимым от раскладки если программа принимает национальные буквы, а не только латиницу. А в некоторых славянских языках «Да» это «Так» и тут оказывается что N и Т это тоже одна кнопка! В результате переключение раскладки полностью инвертирует смысл обеих кнопок. Ну просто шедевр эргономики интерфейса.

watchcat382 ★★
()
Ответ на: комментарий от AZJIO

с экономией двух байт.

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

watchcat382 ★★
()
Ответ на: комментарий от AZJIO

Если Арбуз написать например в CP866 то именно так и будет - сами коды символов указывают на то что они русские. А вот если в юникоде - то будет в частности не конкретное «russian capital letter A», а достаточно безликое cyrillic, которое может быть любым славянским где кириллицу употребляют.

watchcat382 ★★
()
Ответ на: комментарий от watchcat382

Если бы сходство было 95% я бы согласился на совмещение, а если 5%, то какой смысл совмещать две буквы из разных языков? Автор шрифта вполне может для кириллических языков сделать отличие в написании, а в редакторе текста сделать подсветку. Если вы смешаете две буквы «а» и «с», то потом из-за экономии двух байт вам потом выльется в масштабную проблему. Наверно с «ё» так и получилось, её по каким то причинам вынесли за пределы алфавита и если можно было бы сортировать по алфавиту просто используя возрастающий код букв, то слова с буквой «ё» просто выпадут из этого списка.

AZJIO
()
Ответ на: комментарий от watchcat382

Вот пример русского и болгарского

Болгарская кириллица - отдельный сет в юникоде? (комментарий)

Если они там будут экспериментировать, нам что, каждый год переписывать UTF-8? Так то он и так обновляется раз в год, но мы теперь будем для каждого языка/страны создавать начертания местного дизайнера? Если что русский язык входит в число языков международного общения. Некоторые страны заявляют что хотят перейти на латиницу. Мы для них выделим раздел, а они с него спрыгнут. Я может тоже недоволен, хочу чтобы кириллица была внутри первых 127 байт, давай исполняй.
Есть предположение, что 32 буквы выглядят символично, можно закодировать букву 32-х битным числом, а лишняя буква сломала бы эту возможность и потребовала следующий байт, второй в 32-хбитной шине.

AZJIO
()
Последнее исправление: AZJIO (всего исправлений: 2)
Ответ на: комментарий от AZJIO

каждый год переписывать UTF-8?

Уверен что это придется делать еще очень-очень много раз и много лет. Потому что стандартизация языков - еще далеко не завершенный процесс.

watchcat382 ★★
()
Ответ на: комментарий от watchcat382

Уверен там не трогают начало, погуглил, добавляются эмодзи в конец. Как я понимаю устоявшуюся часть никогда не поменяют, так как это приведёт к слому программ.

AZJIO
()
Ответ на: комментарий от AZJIO

Чел объясни. Накуа? Чтоб с ходу впороться в ад разработки?

Что достигается этой кодировкой если дальше надо делать редактор.

Я ведь свой редактор делаю не потому что я придурок или не осилил QCodeEditor. А потому что оказалось что по коду должен лазать парсер. Причем быстро и интегрируемо

ckotctvo
()
Ответ на: комментарий от ckotctvo

Чел объясни. Накуа? Чтоб с ходу впороться в ад разработки?

  1. Так я с тобой согласен, а не с автором и придуманными кодировками. Это мы помечтали как бы мог выглядеть UTF-8 в других обстоятельствах.
  2. Автор толком не объяснил что делает, как из этого решить правильно это или нет. Лично у меня уже написан мной инструмент для вставки сниппетов, и не требует сервера. Этот функционал можно ведь написать по разному, один человек сделал это в виде «поиск», выпадает окно, в нём ищутся введённые слова по базе слов, но я сделал при вводе слова в IDE полностью или частью вызываю хоткей левая часть от курсора захватывается как элемент поиска и выводит 6 столбцов (задаётся автором, хоть 3, хоть 8) и в каждом столбе происходит работа фильтра; в начале базы (текстовый список) указаны правила в нескольких строках, как искать, как подсветить, как вставить, заголовки столбцов. И у меня даже к своему варианту есть претензии, например добавить флаг подсветить искомое внутри найденных слов, а также отсутствует автоматический фильтр при вводе.
AZJIO
()
Последнее исправление: AZJIO (всего исправлений: 4)
Ответ на: комментарий от AZJIO

Автор толком не объяснил что делает

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

foror ★★★★★
() автор топика
Ответ на: комментарий от foror

Да с хера ли выгодно. Ты что нракомн который гигабайты кода лопатит?

В реальности выгодно не тормозить.

А если у тебя проблема с кириллицей в БД то либо у тебя комментов на русском больше чем кода либо ты писатель на православном языке программирования с ятями и иконами

ckotctvo
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария