LINUX.ORG.RU

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

 , ,


0

3

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

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

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

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

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

★★★★★

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

Зачем байт, если есть сжимающие кодирования?

Затем, что сжимающее кодирование требует ресурсы на кодирование и декодирование. А если у тебя в БД 10 триллионов записей в кириллице доступные по первому запросу, то тут каждая мелкая оптимизация скажется.

И в мире разрабатываются алгоритмы и поиска в тексте пожатом хафменом

Вот когда разработаете, тогда и приходите.

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

Вот когда разработаете, тогда и приходите.

Эти разработки опубликованы как научные статьи (иначе как бы я о них узнал)?
Однако в вашем технологическом стеке могут быть не реализованы эти алгоритмы в виде библиотек. Это проблемы сугубо вашего стека.

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

именно так-же я подумал, когда заварился весь этот балаган с раздуванием кодировки.
1. как простому индивидууму для общения мне действительно достаточно тех самых 2х кодепейдж/eng-rus (8 байт)
2. и да, целая тонна тех-символов, кот. скорее всего можно использовать для «переключение» механизмов, тот-же [7/bel]
во всяком случае, для оптимизации передачи/сохранения обычной текстовой информации...

и да, огурец в алфавите считаю редкостным нарко-бредом! :о)

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

Алфавит весь давно задан в кодировках GBK

fix.

З.Ы.: китайский + русский + греческий + английский в одном флаконе.

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

весьма неудобны

предполагаю, 8-битные кодировки где-то и «вынужденно-удобны» (допустим, в микро контроллерных устройствах, куда бессмысленно тащить «этот балаган», но надо передавать «человеко-читаемую информацию»)

во всяком случае, для оптимизации передачи/сохранения обычной текстовой информации...

p.s.
о чем вы - я понимаю! ведь не спроста-же этот цирк с кодировкой?! :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)

мне кажется, индустрия на стыке 1990-2010 столь мучительно перешла на юникод, что сил и бюджетов на другие эпохальные кодировки никто тратить не будет. «Не взлетит» (с)

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

А мне и не надо взлетов. Мне главное быть эффективнее, чем другие. В моём ЯП можно при желании заменить реализацию строки на ютф-8 прозрачно хоть для всего проекта, хоть для конкретного пакета. Это как в джаве, когда в String классе воротят что хотят. Главное, чтобы на интерфейсах было без изменений.

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