|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Юнико́д активно всем навязывали и наконец практически всем навязали. Эта штука реально бесит. С какой стати мы должны платить увеличением объема строк в два раза из-за китайцев, у которых ущербная письменность. Тогда как русский алфавит прекрасно умещается в один байт. А utf8 нарушает представление строки в виде массива символов, на что рассчитаны все алгоритмы с начала эры программирования. Причем англосаксы то себе неудобств этим utf8 создали намного меньше, чем другим, т. к. их символы в нем записываются в один байт. Вероятно, многие из них даже не учитывают возможную многобайтовость символов и работают с ними как с одиночными байтами. Зато все другие языки низвели до иероглифов. Как вы относительсь к юникоду и utf8? По мне что то, что другое - зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:42 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewС какой стати мы должны платить увеличением объема строк в два раза ... А кто собственно заставляет? CP1251 кто запретил? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 18:01 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Я заметил что Евгений очень часто поднимает проблемы, которые впоследствии оказывается не проблемами. P.S. ПТ закрылся а штормит ещё... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 20:13 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewКак вы относительсь к юникоду и utf8? По мне что то, что другое - зло Хорошо относимся Кроме кириллицы есть latin1 Если бесит - попейте успокоительного ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 00:44 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, Используйте UTF16, пусть англосаксы тоже платят :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 00:46 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New и наконец практически всем навязали. Да, мы работали над этим, спасибо, что оценили наши усилия. Активно агитирую Вас отказаться раз и навсегда от использования однобайтовых кодировок. Как говорится - "Однобайтовых кодировок больше нет, Вы держитесь здесь, Вам всего доброго, хорошего настроения и здоровья!" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 00:57 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Andy_OLAP, Активно агитирую Вас отказаться раз и навсегда от использования однобайтовых кодирово Зачем мне это делать? Есть рациональные причины? Если бесит - попейте успокоительного В таких советах не нуждаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 01:40 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New А utf8 нарушает представление строки в виде массива символов, на что рассчитаны все алгоритмы с начала эры программирования.. Расширю утверждение. Префиксное кодирование нарушает преставление сжатого потока в виде массива байтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 07:49 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ваши страдания не соответствуют реалиям жизни: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 08:30 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovВаши страдания не соответствуют реалиям жизни: Код: plaintext 1. 2. 3. 4. 5.
С жатым понятно почему разница небольшая, но поднят вопрос не только передачи, но и произвольного доступа, т.е. разговор о не сжатом. +82% потому что кроме букв есть еще пробелы, переводы строк, знаки препинания и т.д., которые однобайтовые в UTF-8. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 09:14 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewС какой стати мы должны платить увеличением объема строк в два раза из-за китайцев, у которых ущербная письменность. Тогда как русский алфавит прекрасно умещается в один байт. Китайцам кстати это не особо помогло, т.к. в двух байтах 65536 значений, а в юникоде уже более миллиона символов, т.е. в двухбайтовый UTF-16 все не влезут и некоторые символы занимают по два двубайта. Думаю исторически начиналось с объединения европейских языков: немецкий, испанский, итальянский и т.д. Тут два байта на символ с избытком хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 09:31 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
В стандартах юникода - не только языки. Там технические символы для различных направлений в науке. В медиа. В исскусстве. Кроме того стандарт определяет символов больше чем 65536. То что мы здесь обсуждаем это подмножество т.к. нулевой плоскости 0-Plane. Кроме того в стандарте существуют белые пятна. И ЕМНИП некоторые диапазоны все еще находятся в состоянии беты. Тоесть диапазон есть и используется но комитет чего-то там правит. Впрочем пруфы по последнему я пока не могу найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 09:40 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Dima Tподнят вопрос не только передачи, но и произвольного доступаВы не можете использовать произвольный доступ при любой кодировке юникода. Просто потому, что составные символы - реально существуют. Даже в (современном) русском алфавите - два составных символа. Это если не брать в расчёт братьев славян. P.S. Насколько я знаю, люди вполне успешно векторизуют (SSE2 и все дела) алгоритмы, работающие с UTF-8. Несмотря на всю её "разноширинность". Поэтому моя личная кочка зрения предельно проста: любители оптимизировать должны оставить это занятие профессионалам. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 09:53 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovDima Tподнят вопрос не только передачи, но и произвольного доступаВы не можете использовать произвольный доступ при любой кодировке юникода. Просто потому, что составные символы - реально существуют. Использование юникода не ограничивается текстовыми файлами. Пусть это будет таблица БД с текстовыми полями. Basil A. SidorovПоэтому моя личная кочка зрения предельно проста: любители оптимизировать должны оставить это занятие профессионалам. Мне тоже пофиг на кодировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 10:07 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Dima TИспользование юникода не ограничивается текстовыми файлами. Пусть это будет таблица БД с текстовыми полями.Какая разница, в какой контейнер упакован текст? Составные символы от этого никуда не исчезают. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 10:11 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovDima TИспользование юникода не ограничивается текстовыми файлами. Пусть это будет таблица БД с текстовыми полями.Какая разница, в какой контейнер упакован текст? Составные символы от этого никуда не исчезают. Я писал про неуместность сравнения в пожатом виде 21684963 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 10:15 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Dima TЯ писал про неуместность сравнения в пожатом виде 21684963 А я отмечал неуместность нытья про "нарушение представления". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 10:27 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Вот интересный кусочек OpenJDK кода. (Это из транка. Но не оригинального меркурия а зеркала что на гитхабе). Sorry много букв под катом. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 12:35 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Вот в смежном топике по сям идет борьба с сабжем. Я имею в виду с кодировками. http://www.sql.ru/forum/1303003/preobrazovanie-wstring-v-char-v-embedded-c ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 14:20 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
не соответствуют реалиям жизни: 2326241 ГК РФ CP1251.txt 4231334 ГК РФ UTF-8.txt +82% То есть +82% это не соответствие реалиям. {censored} Вы предлагаете в zip сжимать и в полях БД, и в памяти программы и каждый раз их разархивировать. Так что ли? Да лучше "сжать" в Cp1251 и так и использовать. Модератор: Просьба не переходить на личности ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 16:59 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewТо есть +82% это не соответствие реалиям"Некоторые вещи нам непонятны не потому, что наши понятия слабы, а потому, что вещи сии не входят в круг наших понятий". P.S. "вам триста лет, вы выползли из тьмы". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 17:08 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, мне кажется что внедрение utf-8 это примерно то-же самое что и ДВС после паровой машины. Это не решение одного человека или корпорации. Это некая синергия которая сама решила что использование utf-8 скорее выгодно чем невыгодно для современного ПО. Тоесть это общественное коллегиальное решение. Комитет прсто пишет голимые бумажки. Он не внедряет utf-8. Мы сами внедряем основываясь на своем опыте и на оглядке вокруг. Если у тебя есть какие-то принципиальные доводы класса "невозможно" - то огласи их и поясни почему невозможно. Если ты видишь какие-то performance-issues в будущем - то предоставь нам свои числовые оценки. Насколько нас аффектит? 1% ? 10 ? или половина? Где вообще ты детектируешь проблему? В какой части API? Я солидарен с Василием на тему того что все конвертеры кодировок уже давно завернуты в ассемблер и закодены как интринзики. Вобщем обрисуй нам весь ужас ситуации как ты это видишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 17:08 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Все в мире глобализуется. Например попробуй залить на github исходник с камментами в 1251 - они будут нечитабельные, в utf-8 все будет по-русски. utf-8 единая кодировка для всех языков. Не надо заморачиваться принудительным задаванием кодовой страницы прежде чем вывести текст. Да, мы привыкли к этому костылю, но это костыль. Например в C/C++ Код: plaintext 1.
выдаст кракозябры, т.к. исходники в 1251 а вывод в 866. Тоже привет из прошлого. В C# Код: c# 1.
выдаст "Привет!", т.к. utf-8 однозначно идентифицирует символы. PS Копипаст русского текста в виндовсе из не юникодных приложений это отдельная боль ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 17:32 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Dima TВсе в мире глобализуется. Например попробуй залить на github исходник с камментами в 1251 - они будут нечитабельные, в utf-8 все будет по-русски. utf-8 единая кодировка для всех языков. Не надо заморачиваться принудительным задаванием кодовой страницы прежде чем вывести текст. Да, мы привыкли к этому костылю, но это костыль. Например в C/C++ Код: plaintext 1.
выдаст кракозябры, т.к. исходники в 1251 а вывод в 866. Тоже привет из прошлого. В C# Код: c# 1.
выдаст "Привет!", т.к. utf-8 однозначно идентифицирует символы. PS Копипаст русского текста в виндовсе из не юникодных приложений это отдельная боль ((( буквально неделю назад, меня попросил помочь коллега, проблема была в том, что после чтения файла и записи в другой файл, часть строки в 1 поле обрезается, так как длина полей фиксированная. проблема была в том, что в исходном файле был символ из ANSI1251, а читали и писали файл ив UTF8. В результате этот символ после чтения\записи превращался в 2байтный и строка получала сдвиг. Как раз, такая ситуация, как описал автор данной темы, молодежь уже просто не парится и не думает о том, какая кодировка у исходного файла. Зафигачили UTF8 и всё работало уже лет 5 без проблем, пока символ вот такой не залетел. На вопрос о том, какая исходная кодировка файла, никто ответить не может, в итоге я предложил ANSI-1252 как наиболее подходящую. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 18:43 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Roman Mejtesв итоге я предложил ANSI-1252 как наиболее подходящую. Да уж ... ничего что 1252 это дефолтная кодировка английского виндовса? Там нет русских букв. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 20:51 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Dima TRoman Mejtesв итоге я предложил ANSI-1252 как наиболее подходящую. Да уж ... ничего что 1252 это дефолтная кодировка английского виндовса? Там нет русских букв. там и не должно быть русских букв, я ошибся в начале сообщения, 1251 написал, по факту 1252. я не делаю русский софт :( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 21:10 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Все в мире глобализуется. Мне не нравится глобализация не в мою пользу. Например попробуй залить на github исходник с камментами в 1251 Зачем это делать - тема для отдельного обсуждения. В смысле заливать свои исходники на гитхаб. Это же абсурдное действие, полностью против здравого смысла! mayton, мне кажется что внедрение utf-8 это примерно то-же самое что и ДВС после паровой машины. У ДВС были преимущества, а у utf-8 их не видно. Тоесть это общественное коллегиальное решение. Было бы наивным так думать. Знаете что такое общественное решение? Это решение на выборах и решение представителей народа - депутатов или сенаторов. И все. Все остальное - обман и манипуляция. Если у тебя есть какие-то принципиальные доводы класса "невозможно" У меня доводы класса невыгодно и нет смысла. "вам триста лет, вы выползли из тьмы". Мы люди света) "Некоторые вещи нам непонятны не потому, что наши понятия слабы, а потому, что вещи сии не входят в круг наших понятий". Мне эта вещь понятна, но я вижу от нее один вред для себя. Она выгодна только англосаксам, да и то не всем. Культурная агрессия в масштабах земного шара. Ценой дополнительных ресурсов и проблем у тех, против кого она направлена. Русским со своим национальным алфавитом она особенно невыгодна. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 23:38 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewВсе в мире глобализуется. Мне не нравится глобализация не в мою пользу. Можете написать письмо с протестом в адрес Джорджа или Генри, сыновей Генри Кэбота Лоджа-младшего (который умер в 1985-м), это венецианская семья Каботи, которая является первой по рангу семьей среди американской аристократии, они уже не первое тысячелетие в рамках человечества отвечают за вопросы глобализации. Барухам Вы все равно написать письмо не сможете, да и сомневаюсь, что после Бернарда Маннеса они продолжают напрямую заниматься этими проблемами :) И я таки не удивлюсь, если они решат прочитать Ваше письмо и прислушаться к Вашему мнению. Возможно, даже позволят отменить использование utf-8 для русскоязычных проектов. Но затевая протест против решений, принятых мудрыми людьми, Вы принимаете на себя определенные риски. Решайте сами, я бы на Вашем месте не стал этого делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 01:28 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewНапример попробуй залить на github исходник с камментами в 1251 Зачем это делать - тема для отдельного обсуждения. В смысле заливать свои исходники на гитхаб. Это же абсурдное действие, полностью против здравого смысла! Тогда написать отзыв на алиэкспрессе. В общем я к тому что без юникода невозможно сделать сайт, где может быть написано одновременно на всех языках. PS Как уже неоднократно было сказано: никто не заставляет использовать юникод. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 07:29 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New…русский алфавит прекрасно умещается в один байт. Да, русский умещается. Пара русский+английский — тоже. Но русский+немецкий — уже нет: так уж устроены стандартные однобайтовые кодировки. Я, например, работаю одновременно с английским и четырьмя языками, использующими кириллический алфавит: русским и тремя миноритарными. Для меня Unicode и utf-8 это единая кодировка в базе данных, один шрифт для интерфейса, единый набор функций для работы с текстом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 10:40 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewМне эта вещь понятна, но я вижу от нее один вред для себя. Она выгодна только англосаксам, да и то не всем. Культурная агрессия в масштабах земного шара. Ценой дополнительных ресурсов и проблем у тех, против кого она направлена. Русским со своим национальным алфавитом она особенно невыгодна. Знаете. Я тоже не люблю англичан. Считаю их надутыми индюками которые гордятся своими элитами. И по прежнему хотят завоевать мир. Но в вашем тезисе я читаю опасный месседж нацеленный на изоляционизм. Все успехи науки и техники 20-го 21-го веков это совместные усилия российских, европейских, и американских ученых. Вы просто вслух про себя перечислите их фамилии и понимание придет. Современный словарь русского языка наполовину состоит из слов заимствованых изнемецкого, английского, итальянского, французского и прочих языков европы. Пётр Первый ездил учится в Европу. Благодаря ему облик страны резко преобразился. Появились университеты. Стали двигаться науки. Дети дворян царской России ездили учится в университеты Франции. Это дало толчок развитию. Если вы почитаете первые главы "Войны и Мира" - там идут диалоги на трех языках. Да. Роман Льва Толстого не укладывается в win-1251. Не хватает буковок чтоб передать писательское видение. Профессор Хокинг писал что для освоения космоса не хватит усилий одной страны. Нужны будут совместные разработки всей планеты земля. Поэтому кодировку utf-8 я считаю полезной. Международной. И способствующей коллаборации и коммуникациям. А обособленность и эдакое желание "пересидеть" я считаю контр-продуктивным и не способтвующим развитию It и прочих наук в целом. И вы - развивайтесь. Не сидите в СНГ-шных проектах. В мире полно интересного. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 11:14 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, вот кстати да, изоляционизм - удачное слово. Из недстатков тоже уже вскользь сказали про зоопарк имеющихся текстов, когда уже не задумываются в какой кодировке дадут текст на обработку, что приводит иногда к затыкам. Но (обсуждали уже в русском языке программирования) это сложилось исторически. Когда в 50-х ещё стандартизировали единый язык прогр-я Алгол, вопрос кодировок обсуждался. И да, "вошли в положение США", опередивших всех, и вложившихся уже в фортран. И нежелавших терять эти инвестиции. Если б тогда европа + СССР сумели настоять, то сегодня м.б. никто и не начал такую тему. Но победителей не судят (план Маршалла помним). Eugene, м.б. Ваши дети будут уже жить при утф и не париться про равномерный доступ к массиву. Просто не надо его использовать после UnicodeString s; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:47 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, были желающие в 17 веке перевести все на латиницу. Но люди кириллицу отстояли. Те самые люди, которые прекрасно говорили на трех языках. Это было правильно решение. Английский язык сам почти полностью состоит из заимствований - там почти нет родных кельтских слов. По сути это дикая смесь языков оккупантов с искаженным до неузнаваемости произношением. Поэтому для англичан языковой вопрос такой больной. Натерпелись. Ничего, как то сумели после этого на ноги встать. немецкий алфавит не помещается вместе с русским С чего бы это ему не помещаться? Латинский алфавит + 3 умлаута + 1 лигатура. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:58 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene Newmayton, были желающие в 17 веке перевести все на латиницу. Но люди кириллицу отстояли. Те самые люди, которые прекрасно говорили на трех языках. Это было правильно решение. Английский язык сам почти полностью состоит из заимствований - там почти нет родных кельтских слов. По сути это дикая смесь языков оккупантов с искаженным до неузнаваемости произношением. Поэтому для англичан языковой вопрос такой больной. Натерпелись. Ничего, как то сумели после этого на ноги встать. Окей. Я понял вашу политическую позицию. И уважаю. Но к теме внедрения utf-8 она имеет мало отношения. Скорее даже наоборот. Можно русскоязычные проекты внедрять в веб легче чем win-1251. А с однобайтными - куча головняка. Вспомните cp866 из эпохи DOS. Вспомните koi-8 который любили Фидошники. Они так подпортили нервы... До сих пор можно находить сайты Васей Пупкиных которые нет-нет да и запилят что-то specific. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:11 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene Newнемецкий алфавит не помещается вместе с русским С чего бы это ему не помещаться? Латинский алфавит + 3 умлаута + 1 лигатура. С того, что кириллица и основная латиница в 1251, а три умлаута и лигатура — в 1252. Конечно, можно все запихать в домодельную однобайтовую кодировку. Именно так и поступали в середине 90-х, пока не пришел Unicode: лепили странные шрифты из воды и дерьма, пересылали с каждым документом… Если вам нужен только русский язык — используйте, что хотите. Я же предпочту Unicode, поскольку помню ту самую середину 90-х и мучения из-за того, что все нужные одновременно символы просто не помещались в кодовую таблицу на 256 ячеек. В Word-е с этим еще хоть как-то можно было бороться мириться, за его пределами же начинался полный мрак. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:22 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewАнглийский язык сам почти полностью состоит из заимствований - там почти нет родных кельтских слов. Поправка: кельтские слова в английском как раз-таки — заимствования, это германский язык. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 14:25 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2Eugene NewАнглийский язык сам почти полностью состоит из заимствований - там почти нет родных кельтских слов. Поправка: кельтские слова в английском как раз-таки — заимствования, это германский язык. Уточню Английский - это германский, А келтики это группа языков никак с английским не связана. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 15:06 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, mayton,Если ты видишь какие-то performance-issues в будущем - то предоставь нам свои числовые оценки. Насколько нас аффектит? Технически - это вопрос об устройстве библиотечного API. Их много было, и, несомненно еще будет. Вероятно, твоя личная практика программиста в конкретный момент привязана к конкретному API, по отношению к которому у тебя сформирована система ожиданий. Предположим такие исходные: - пишешь ты на Java. - у тебя лично , а не вообще в мире, тонны кода, связанного с обработкой строк. - этот код критичен - часть твоей собственной, специфической к предмету, утилитарной библиотеки специальных алгоритмов обработки строк. - и весь этот код базируется на ожидаемой гарантии того, что String.CharAt(i) работает с твоим кодом за константное время, не зависящее от i. (Предположим, что, сознательно или нет, ты заложился именно на это) вопрос - что происходит с производительностью твоей, с годами и любовью выписанной библиотеки, eсли происходит такой переход во внутреннем представлении строки на utf-8, который теряет гарантию константы для charAt(i), и заменяет её на линейное от i время? Это тоже гарантия, просто немного другая. Сколько тонн кода после это ты признаешь как пригодное к переписыванию, и в скольких местах ты посчитаешь, что всё пропало?. Сохранить такую гарантию - значить увелчить размер хранящего символ элемента. Так и было сделано с самого начала в виде почти всегда заведомо излишнего двухбайтного представления. Но двух байт теперь не хватает, надо шесть. Правильное здесь решение - просто взять и увеличить размер char до 8-байтного целого? Какую-то попытку ответа на это и пытаются давать в виде сжатого представления строки в новой java. Но. а) это еще не завершенная реализация б) вопрос, заданный Eugene New она оивечает "неправильно", и в этом есть своя правда - иначе любая конкатенация потенциально означает encoding, но все со сваливанием в конце концов к "универсальному" представлению. Универсальные строки строки плохо стыкуются гарантиями константного доступа к символа, только в обмен на расход памяти. PS Где-то в закромах ораклового публичного сайта валяется white paper от 2003 года, специфически строковым performance issues посвященная. Efficient Use of pl/sql String functions for Unicode Applications посмотри при случае, если не видел. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 15:32 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
booby - пишешь ты на Java. Да. booby - у тебя лично , а не вообще в мире, тонны кода, связанного с обработкой строк. - этот код критичен - часть твоей собственной, специфической к предмету, утилитарной библиотеки специальных алгоритмов обработки строк. - и весь этот код базируется на ожидаемой гарантии того, что String.CharAt(i) работает с твоим кодом за константное время, не зависящее от i. (Предположим, что, сознательно или нет, ты заложился именно на это) В настоящий момент (работаем с семёркой и восьмеркой в PROD) мы используем канонический String в котором есть двух-байтное представление (char[]) строк. Поинт экономии будет решатся КМК в будущих версиях (11) за счет опционального использования Latin. Англосаксы - Latin. Все что смешанное - UTF-16. Поэтому я не предвижу проблем с String.CharAt(i). Весь потоковый ввод... связанный с сериализацией. Сохранением файлов. С транспортными форматами и протоколами мы давно перевели на utf-8 и это давно работает. Каких-либо perofmance issues связанных с этими процессами я не помню. Если где-то в потоковом вводе-выводе мне понадобится String.CharAt(i) то это по определению не потоковый ввод вывод и надо что-то думать на архитектурном уровне. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 15:54 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobyНо двух байт теперь не хватает, надо шесть. Правильное здесь решение - просто взять и увеличить размер char до 8-байтного целого? Давайте остановимся на четырех. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 15:58 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobyКакую-то попытку ответа на это и пытаются давать в виде сжатого представления строки в новой java. Но. а) это еще не завершенная реализация б) вопрос, заданный Eugene New она оивечает "неправильно", и в этом есть своя правда - иначе любая конкатенация потенциально означает encoding, но все со сваливанием в конце концов к "универсальному" представлению. Универсальные строки строки плохо стыкуются гарантиями константного доступа к символа, только в обмен на расход памяти. Конкатенация строк - в принципе самая плохая операция что только существует. И лучше ее не делать. Здесь вобщем-то безразлично какие кодировки. Асимптоматика враг. Про константное время я вроде ответил выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:01 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
booby, Обработка текста основанная на индексом доступе? Можно пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:02 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobyPS Где-то в закромах ораклового публичного сайта валяется white paper от 2003 года, специфически строковым performance issues посвященная. Efficient Use of pl/sql String functions for Unicode Applications посмотри при случае, если не видел. ОК. Спасибо. Почитаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:02 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
OoCcbooby, Обработка текста основанная на индексом доступе? Можно пример? любая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:08 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewЭта штука реально бесит. С какой стати мы должны платить увеличением объема строк в два раза из-за китайцев, у которых ущербная письменность. Тогда как русский алфавит прекрасно умещается в один байт. Русский алфавит не нужен - все нормальные цивилизованные люди давно перешли на латиницу! 7 бит хватит всем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:17 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, о конкатенации речь не шла вообще. и она не плохая и не хорошая. Просто операция на строках. Очень замечтательно хорошая при разумном использовании. Вот дают тебе задачу (искусственную, но какая вспомнилась) - написать функцию, которая должна сформировать строку, имеющую смысл буфера. Использоваться она будет в самом-самом вложенном цикле и её производительность критична. тебе на вход отдают приемник, размер его не известен, но приемник гарантирует, что выбросит ошибку, если буфер в него не поместится. Возможности спросить у приемника - какого размера строку ты сможешь принять нет. Конкатенацией можно написать такую функцию, которая всю систему превратит в неработоспособную. А можно ей же сделать так, что время формирования результата будет технически неотличимо от случая с заранее известным размером. Сама по себе конкатенация - "ни в чем не виноватая" Плохая конкатенация, это как плохое сложение числе. Рано или поздно, в конкретном железе, оно становится "слишком дорогим". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:22 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobyOoCcbooby, Обработка текста основанная на индексом доступе? Можно пример? любая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может. Понятно. Например распарсить ЮРЛ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:40 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonЗнаете ...Зачем так много букав? Классик русской литературы в классическом же четырёхтомнике пишет целые абзацы на французком языке. Дети, опять-же ... Не знаю, как сейчас, но раньше, в литературе для детей младшего школьного возраста, принято было расставлять ударения, чтобы ребёнок, которому объяснили в школе, что "эта чёрточка на гласной буквой обозначает ударный слог", мог запоминать правильное произношение (пока) незнакомых слов, просто читая книги. Уникод решает эти и многие другие проблемы в "плоском" тексте, не требуя изобретать форматы и протоколы. Из многих возможных кодировок юникода UTF-8 обеспечивает и обратную совместимость с C-API и возможность постепенной миграции. Всего этого вполне достаточно, чтобы или не обращать внимания на странных экстремистов или просто забанить не вполне адекватного человека. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:49 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
OoCc, я не понимаю что ты хочешь сказать. Что все алгоритмы на строках по своему смыслу потоковые? Предположим, что ты прав в космическом смысле и в мировом масштабе. Я всего лишь сказал, что достаточно существует кода в языках имярек, относящихся к строке, если даже не прямо как к массиву, то основывающих свои суждения об общей производительности алгоритма на предположении о константой стоимости доступа к символу, каково бы ни было внутреннее представление строки. Существенно это или нет, и может ли алгоритм быть легко переформулирован для сохранения своего класса времени работы в O-оценках - это всякий раз специальный по отношению к алгоритму разговор. mayton, вот не рискнул, с разбегу, от гарантий на время работы charAt отказаться. И, допустимо считать, что в случае с твоим кодом, этот момент целиком не имеет значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:55 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobyлюбая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может.Ни одна функция, работающая с символами юникода, не может быть построена на индексном доступе. Функция, работающая с кодами - может, но проблем в том, что для приложения это слишком низкий и крайне неудобный уровень. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 16:56 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. Sidorovboobyлюбая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может.Ни одна функция, работающая с символами юникода, не может быть построена на индексном доступе. Функция, работающая с кодами - может, но проблем в том, что для приложения это слишком низкий и крайне неудобный уровень. ну, вот где-то вокруг этого и крутится вопрос про ненавижу и бесит. Если бесит - хоть сколько-нибудь технически осмысленное. Альтернативно можно просто памяти на элемент внутреннего представления добавить, для сохранения индексного доступа. И продолжить отличать внешнее и внутреннее представление строки, всякий раз проводя нужного вида кодирование. И память же ведь все равно ничего стоит, и кодирование/декодирование проблем производительности не создает. Это все знают... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:09 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Выбираясь из запутанного разговору к техническим минусам: - в два раза больше памяти либо - невозможность доступа по индексу либо - каждый раз перекодировать туда-сюда. Плюсы? Если текст содержит только латиницу и кириллицу, ни одного плюса нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:18 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewЕсли"Предположение - мать всех провалов". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:19 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, это не предположение, это условия. И самое дикое во всем этом - это что строки больше не массивы. Это, за что его авторам надо убиться о стенку. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:22 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Упреждая вопросы, а как бы сделал я. Следовало включить в однобайтовую кодировку и стандартизировать кириллицу. Так к в мире есть два основных алфавита - латиница и кириллица. (у китайцев НЕТ алфавита, если вам вдруг захочется их считать). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:25 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, алфавита нет,а тексты есть тем не менее ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:29 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
exp98, типа как из дурака в классе запретить математику изучать. Пусть борются со своей отсталостью. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 17:39 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
С Отсталостью? А кто в последние десятилетия регулярно побеждает на олимпиадах прогр/мат ? Или к примеру объективно известно, что женщины не пользуются мужской логикой. Тоже отсталые? В то же время также объективно по строению мозга мужики ближе к одному из приматов, нежели к женщинам. Ну не надо же таких аргументов про отсталость в духе кальвинизма, избранных. Тут уж либо крестик, либо шорты. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 18:02 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonboobyPS Где-то в закромах ораклового публичного сайта валяется white paper от 2003 года, специфически строковым performance issues посвященная. Efficient Use of pl/sql String functions for Unicode Applications посмотри при случае, если не видел. ОК. Спасибо. Почитаю. нашел ссылку: https://www.oracle.com/technetwork/products/globalization/efficient-plsql-133329.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 18:11 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
https://www.oracle.com/technetwork/products/globalization/efficient-plsql-133329.pdf Вот еще жирный минус, возможно худший из всех. Нанесен сильный удар по реляционным базам данным, сильно уменьшивший их эффективность. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 18:32 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New https://www.oracle.com/technetwork/products/globalization/efficient-plsql-133329.pdf Вот еще жирный минус, возможно худший из всех. Нанесен сильный удар по реляционным базам данным, сильно уменьшивший их эффективность. Глупости. СУБД это не текст процессор. К тому же никто не запрещает оракулу представить строку ввиде таблицы с индексом ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 18:41 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewСледовало включить в однобайтовую кодировку и стандартизировать кириллицу. Так к в мире есть два основных алфавита - латиница и кириллица. 1) Кириллица далеко не среди основных (по числу использующих) алфавитов мира, но к технической стороне дела это не относится. 2) Сколько символов латиницы и кириллицы вы включили бы в свою универсальную однобайтовую кодировку? Вам же придется впихнуть туда все, что потребно не только англоязычным с их базовой латиницей, но и немцам, французам, испанцам, финнам, венграм, шведам и проч. То же и с кириллицей: 33 буквами русского алфавита не отделаетесь. И как только вы оставите за пределами стандартизации всю тут публику, которая сейчас благодаря Unicode не имеет проблем с использованием своих систем письменности в компьютеризированной части жизни, вы немедленно получите мировую войну новый комитет по Unicode. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 19:16 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
СУБД это не текст процессор И ЧО? Просто увеличение места под хранение всех строковых столбцов в два раза. Просто так - раз и база выросла вдвое. Без какой либо выгоды вообще. Кириллица далеко не среди основных (по числу использующих) алфавитов мира, Кириллица второй после латиницы мировой алфавит. Славяне - самая многочисленная этническая группа Европы к тому же. Других алфавитов то и нету. Греческий потерял свое значение, вы даже не сможете прочитать название букв. Вам же придется впихнуть туда все, что потребно не только англоязычным с их базовой латиницей, но и немцам, французам, испанцам, финнам, венграм, шведам и проч. То же и с кириллицей: 33 буквами русского алфавита не отделаетесь. На кириллицу нужно 66 символов. Даже среди второй половины байтов на всякие дополнения к латинскому остается 61 - туда можно запихнуть 30 букв. А ведь еще в первых 127 символах можно поискать и найти место. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 19:50 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Не думали о том, что потом возможна обратная оптимизация? Когда всем свой английский навяжут, везде поставят, всех приучат а потом скажут - ах, столько лишнего места, сколько лишней нагрузки, давайте ка все лишние байты отбросим и оставим только латиницу в английской версии. Книг в бумажном виде уже почти не издается. При моем предложении наш язык был бы прибит гвоздями к мировому стандарту. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 20:01 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewНа кириллицу нужно 66 символов. Даже среди второй половины байтов на всякие дополнения к латинскому остается 61 - туда можно запихнуть 30 букв. А ведь еще в первых 127 символах можно поискать и найти место. Ну, если русские никого не угнетают, вам придется признать, что 66 букв на кириллицу не хватит: посмотрите алфавиты славян Европы, а потом еще кириллические алфавиты, используемые неславянской публикой. Посмотрите на «расширенную« латиницу: там больше знаков, чем в «основной» — и всем этим пользуются. А что делать с арабским письмом, которым пользуется раза в два больше народу, чем всей кириллицей? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 20:23 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobymayton, о конкатенации речь не шла вообще. и она не плохая и не хорошая. Просто операция на строках. Очень замечтательно хорошая при разумном использовании. Вот дают тебе задачу (искусственную, но какая вспомнилась) - написать функцию, которая должна сформировать строку, имеющую смысл буфера. Использоваться она будет в самом-самом вложенном цикле и её производительность критична. тебе на вход отдают приемник, размер его не известен, но приемник гарантирует, что выбросит ошибку, если буфер в него не поместится. Возможности спросить у приемника - какого размера строку ты сможешь принять нет. Я не очень понял суть вопроса. Интерфейс такой? Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 21:44 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New СУБД это не текст процессор И ЧО? Просто увеличение места под хранение всех строковых столбцов в два раза. Просто так - раз и база выросла вдвое. Без какой либо выгоды вообще. База не вырастет вдвое. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 21:46 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovmaytonЗнаете ...Зачем так много букав? Классик русской литературы в классическом же четырёхтомнике пишет целые абзацы на французком языке. Дети, опять-же ... Не знаю, как сейчас, но раньше, в литературе для детей младшего школьного возраста, принято было расставлять ударения, чтобы ребёнок, которому объяснили в школе, что "эта чёрточка на гласной буквой обозначает ударный слог", мог запоминать правильное произношение (пока) незнакомых слов, просто читая книги. У меня сейчас появилась идея. В борьбе за позиционную строку мы можем все таки надыбать полтора битика. Я вспомнил о такой интересной кодировке как Base85. Беря за основание системы счисления число не кратное два в целой степени мы можем получить более плотное заполнение информацией одного разряда. Points: 1) Ascii-7 = 128 chars 2) Кириллица = 66 chars 3) Умляуты и всякие французские и прочие символы (кроме корейско-китайских) = ? (сколько их хер ево знает) Все это суммируем и гоним в систему счисление с некратным основанием. А? Вот как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 21:55 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewЗачем это делать - тема для отдельного обсуждения. В смысле заливать свои исходники на гитхаб. Это же абсурдное действие, полностью против здравого смысла! Речь не идет о твоей коммерческой деятельности и об исходниках на которых стоит клеймо корпорации или об исходниках которые несут элемент тайны. Государственной. Бизнесовой и проч. Ресь о другом. Если у тебя есть идея. Ты ее просто реализовал. И увидел что она - классная и хочешь ей поделится со всем миром. (Примерно так как поэт пишет стихи). Ты берешь и выкладываешь ее в открытый доступ. И дальше - иногда случается чудо. Если сообщество оценило идею - оно предлагает свои улучшения. И твоя идея начинает дышать и жить своей жизнью. Так возник к примеру Linux. Не на гитхабе конечно. Но на идеях публичности, и коллаборации. Гитхаб - это просто одна из имлементаций площадки где можно стартовать публичные проекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 22:20 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. Sidorovboobyлюбая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может.Ни одна функция, работающая с символами юникода, не может быть построена на индексном доступе. Функция, работающая с кодами - может, но проблем в том, что для приложения это слишком низкий и крайне неудобный уровень. Стоп. Василий. У меня - жесткое дежа-вю. Я помню что ты уже где-то поднимал тему code-points, combining-characters? И очень сильно отмечал важность этого функционала в строковом API. Или даже не важность а безальтернативность. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 22:32 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton1) Ascii-7 = 128 chars 2) Кириллица = 66 chars 3) Умляуты и всякие французские и прочие символы (кроме корейско-китайских) = ? (сколько их хер ево знает) Все это суммируем и гоним в систему счисление с некратным основанием. А? 2) Посмотрите уже, наконец, что не 66 букв надо на кириллицу. Там за сотню точно уйдет. 3) Навскидку, не менее 40 (и этим пользуются). Я как-то давно попытался выяснить минимальное число символов, потребных для обслуживания русского языка. Получилось 14 (13 букв и модификатор), выглядело дико. Если расширить до 17, можно было легко понять написанное, если зачитывать вслух, зажав нос. Называлось Дурилица. Но есть идея получше: переводим всех на МФА , который редуцируем до 5 символов изменения тона и общаемся свистом. Правда, язык придется тоже сменить: русский не подойдет. Зато какой выигрыш при индексном доступе. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 22:54 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton... Я не очень понял суть вопроса. Интерфейс такой? Код: java 1. 2. 3. 4.
Давай считать, что по легенде, использовать псевдокод на java мне запрещено из религиозных соображений. Поэтому на pl/sql: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Под спойлером код-страшилка, на основании которого ложно умозаключается, что конкатенация - плохая операция. Так не надо делать даже маленьким детям, ни за что на свете. Но код этот писала не конкатенация, а человек, может даже и не маленький. Требуется оправдать конкатенацию, не используя никаких функций из набора строкового api, за исключением только конкатенации (lpad/rpad и пр. и пр. (как тут пишут) запрещаем из идейных соображений). других ограничений не накладываем. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 23:04 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2, а чем вам не угодила морзянка? { - ; . ; пробел} И свистите себе на здоровье ... художественным свистом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 23:10 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
exp98Ы2, а чем вам не угодила морзянка? { - ; . ; пробел} И свистите себе на здоровье ... художественным свистом. Морзянка кодирует символы другого алфавита сущностями (a-la unicode code-point) переменной длины. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 23:16 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New- невозможность доступа по индексу Доступ к элементу по индексу - это частный случай. Я-бы обобщил до операций Код: java 1.
Это - универсал. Пуля из серебра. Если мы докажем ее средне-статистическую эффективность для строк с плавающей кодировкой типа utf-8 то все conserns должны отпасть сами по себе. Расмотрим кейс миграции с win-1251 на utf-8 и эту волшебную функцию и потери на памяти. Поинты: 1) В средне-статистическом приложении строки обычно не очень длинные. Коллеги кто можеть оценить (сделать мемори дамп) для С++ приложения и сказать сколько там длины. Среднее. Максимум. Если гистограмма - вообще замечательно. Могу предположить что если львиная доля строк - короткие 0,1,2,3 символа то время отклика алгоритма подстроки будет практически без изменений. Это как сортировка пузырьком. Для массивов 2-3 элемента работает быстрее всех хоаров. Я могу (теоретически) сделать дамп для Java но это какраз не наш кейс. Java не будет мигрировать строки на utf-8. У нее другой подход (я приводил сорцы). Кстати это тоже хороший вопрос. Многие мысли об оптимизации строкового API основываются на наших рафинированных предположениях о том что ОНО ТАК РАБОТАЕТ. А может быть оно работает так... но редко. Ну настолько редко что... йошкин крот зачем мы вообще этим занялись. Вобщем до оптимизации кроме метрик комплексити (с которыми я не спорю) есть еще некий здравый смысл о частоте применения. 2) Пример парсинга URL - хороший. Но где там индексный доступ? Если мы применяем регулярку то автомат разбора который будет сгенерирован регуляркой обычно применяется к исходной строке поточно. Слева направо как и работают все синтаксические машины. Следовательно индексный доступ к произвольному элементу - не важен. Если есть итератор char * который стоит и смотрит на первый символ то его достаточно чтоб решить данную задачу. Если мы детектируем протокол (хедер строки) то вызов substr(m,n) вырождается до substr(0,n). Код: sql 1.
Код: java 1. 2. 3.
Кто не согласен что достаточно - оппонируйте. 3) Перформанс случаев применения substr(m,n) к utf-8 содержимому баз данных . Не окажут какого либо сильного воздействия на перформанс. Основная нагрузка будет идти на I/O и на физическое вычитывание блоков сегмента таблиц. Я вангую что нагрузка на CPU может поднятся в диапазоне от 0 до 50%. А время отклика - практически не изменится. Тоесть ожидали вы отчот 1 минуту с win1251 и после миграции колонки на utf-8 так-же будете ждать минуту. 4) Проигрыш памяти БД. Здесь для баз данных в целом пофиг. Это экспертно . Я просто давлю на то что содержимое строк не покрывает сегмент данных на 100%. Есть другие типы и прочее. Кроме того средняя БД практически никак не реагирует на изменение длины данных в строках. Много дыр в сегменте данных. Много технических гистерезисов которые так просто в двух словах не объяснить. В целом - не реагирует. Конечно 90% зависит от того как грамотно вы провели конвертацию. Что делали после drop column и прочее. Характеристики блоков сегмента... 5) Проигрыш оперативной памяти для приложений . Здесь тоже нужна статистика. Нужно посчитать % соотношение Latin и кириллицы и взять нечто взвешенное. Это тоже дополнение к пункту (1) Я вангую что если у вас было С++ приложение работающее с win-1251 и вы его адаптировали к utf-8 то особого проигрыша памяти не будет. 6) Некий гипотетический worst-case. Мы будем искать суффикс. Код: plaintext 1.
Ну... где это может быть полезно? Я не знаю. Младшие разряды. В телефонном номере 5 или 7 последних цифр. Не знаю. Тут надо архитектурно подумать. Может хранить телефон в реверсивном формате. Может разделить мобильный оператор и номерную ёмкость в отдельные поля БД и в бизнес-сущностях. Вобщем зубодробилка существует. Но ее надо обсуждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 23:26 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
booby, только начал смотреть. Сразу возник вопрос. Эдакий машинальный code-review point который меня блочит. Код: plsql 1. 2. 3.
Почему pc_stacker объявлен как OUT ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 23:40 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы22) Посмотрите уже, наконец, что не 66 букв надо на кириллицу. Там за сотню точно уйдет. 3) Навскидку, не менее 40 (и этим пользуются). По второму пункту - спасибо. Но нужна какая-то цифра. Я прошу прощения мне не хочется сильно глубоко погружаться в изучение Индоевропейских и прочих языков. В принципе сошла-бы верхняя граница. Например - не более 150. Или не более 200. По третьему - спс. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 23:45 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, потому что в него пишут. используют как временный мешок для складывания в него символов. сформировать буфер в размер этого мешка, пока он переполнится. Потом вернуть в мешок назад то, что в нем лежало. не нравится function - допустимо оформить как процедуру с явным возвращаемым параметром. способ оформления - функция или процедура, в данном случае это сахар с запахами, к делу не относится. но в той искусственной "учебной" истории изначально говорилось о функции, потому так и пересказываю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 23:50 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobymayton, потому что в него пишут. используют как временный мешок для складывания в него символов. сформировать буфер в размер этого мешка, пока он переполнится. Потом вернуть в мешок назад то, что в нем лежало. не нравится function - допустимо оформить как процедуру с явным возвращаемым параметром. способ оформления - функция или процедура, в данном случае это сахар с запахами, к делу не относится. но в той искусственной "учебной" истории изначально говорилось о функции, потому так и пересказываю. Мне непонятно также почему используется LONG. Это морально устаревший тип и его заменяют обычно на BLOB. Мне не очень понятен вход и выход. Я так себе вижу. На вход подается Код: sql 1. 2. 3.
На выходе в консоли мы получаем. Хм... а что мы получаем? Непонятно. Код: sql 1.
Прошу прощения я всегда привых рассматривать задачу с верхнего уровня. С уровня смысла так-сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 00:25 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
boobymaytonпропущено... ОК. Спасибо. Почитаю. нашел ссылку: https://www.oracle.com/technetwork/products/globalization/efficient-plsql-133329.pdf Для AL32-UTF-8 Length посчитан как o(m). Маху дали. Можно было добавить свойство длины и получить константу. Это привело-бы к небольшому увеличению структуры данных для NVARCHAR на пару байтов. Пожадничали? На серваках БД по 128 Гиг щас ставят. Мдя... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 00:43 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Вот мысль. Для Евгения. Фантазируй бро. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 00:52 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton... Мне непонятно также почему используется LONG. Это морально устаревший тип и его заменяют обычно на BLOB. ... Ну, мне лень сейчас было писать SUBTYPE T_MAXSTRING is Varchar2(32767); а LONG в pl/sql определен как SUBTYPE LONG is Varchar2(32760); букв меньше, и уменьшенная на 7 вместимость существа дела здесь не меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 00:55 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Насчет количества знаков для кириллицы. Очень грубый подсчет дает ~85 графически разных букв, имеющих прописное и строчное написание, и ~5 знаков с единственным вариантом. Итого, не менее 175 штук. Думаю, оценка сверху в 200 знаков даст запас, но не очень большой. В латинице можно считать ~60 дополнительных знаков к основному набору. То есть примерно те же 200 знаков. Можно заметно сократить, используя комбинируемые диакритические знаки. С кириллицей тоже должно сработать, но все равно в 256 символов не уложиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 01:48 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
exp98, кто в последние десятилетия регулярно побеждает на олимпиадах прогр/мат ? Потому что используют не иероглифы. Или к примеру объективно известно, что женщины не пользуются мужской логикой. Тоже отсталые? Ну если вы так уверены, что это доказано, да еще и объективно, то да. Правда, я лично сомневаюсь в наличии такого доказательства. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 02:11 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, substr(m,n) Это другая задача. Более затратная чем s [n]. То есть меняя s [n] на substr(m,n) мы сразу теряем. Насчет остального - не сомневаюсь, что те, кто проталкивал utf8, подготовили много доводов. Только состоятельны ли они? В средне-статистическом приложении строки обычно не очень длинные. Даже если они не длинные, то их много и они занимают много места. Строки обычно всегда оказываются первым узким местом по расходу памяти. Проигрыш памяти БД. Здесь для баз данных в целом пофиг. Это экспертно Не соглашусь. Все наоборот. Исключение - использование только английских символов в UTF8. Уж о себе то они позаботились. автомат разбора Усложняется и это частный случай. средняя БД практически никак не реагирует на изменение длины данных в строках. Как она может не реагировать, когда вам приходится делать все строковые поля в ДВА раза большего объема. Не писать туда больше, а сразу увеличивать длину полей в байтах в два раза. Раньше надо было 100 байтов, теперь надо 200. Потому что поле может достигать 100 символов длиной на русском языке. Если вы используете русский язык в базе. Для латиницы, повторяюсь, все равно. Для русского языка - катастрофичное увеличение объема. Проигрыш оперативной памяти для приложений. чем больше используют русский язык, тем хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 02:21 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Посмотрите уже, наконец, что не 66 букв надо на кириллицу. Там за сотню точно уйдет Из этих лишних букв действительно нужно очень мало. В первую очередь надо смотреть на славянские языки. Болгарский алфавит, например, точно такой же, как русский. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 02:32 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
QuasiLinearAccessTimeString У меня есть идея получше. Преобразуем все в однобайтовую кодировку, номер кодовой страницы храним в одном лишнем байте. Если уж тот редчайший случай, когда одновременно больше 2 языков в документе, разбиваем его на части по языкам. Можно выделить на маркер спецсимвола 1 байт (с кодом < 32, из нечитаемых) и на номер кодировки еще 1. И в таком виде хранить сплошняком текст. Его можно будет один раз прочитать и разбить на куски из национально кодированных строк. И он НЕ БУДЕТ занимать в два раза больше места, как занимает любой текст в UTF8 в любой национальной кодировке. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 02:58 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Строку можно хранит сплошняком и хранить индексы 'переходных' из одной кодировки в другую байтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 03:42 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2Насчет количества знаков для кириллицы. Очень грубый подсчет дает ~85 графически разных букв, имеющих прописное и строчное написание, и ~5 знаков с единственным вариантом. Итого, не менее 175 штук. Думаю, оценка сверху в 200 знаков даст запас, но не очень большой. В латинице можно считать ~60 дополнительных знаков к основному набору. То есть примерно те же 200 знаков. Можно заметно сократить, используя комбинируемые диакритические знаки. С кириллицей тоже должно сработать, но все равно в 256 символов не уложиться. Отлично. Нам нужно сохранить нижнюю половину таблицы полностью. Тоесть 128 симвлов оставить как есть. + 200 знаков для всех киррилических языков мира Итого 328 знаков. Укладываемся в 9 битов. (не более 512 состоянии и еще запас есть) 9 и 8 считаем наименьшее общее кратное 9 и 2*2*2 вобщем просто произведение 72 бита. Тоесть 9 байтов кодируют 8 символов. Формула не очент красивая. Не получилось выровнять на четные границы адресов. Но зато почти o(1) доступ. Далее можно попробовать еще вариант с множителями как в base85. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 08:59 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewКак она может не реагировать, когда вам приходится делать все строковые поля в ДВА раза большего объема. Не писать туда больше, а сразу увеличивать длину полей в байтах в два раза. Раньше надо было 100 байтов, теперь надо 200. Потому что поле может достигать 100 символов длиной на русском языке. Если вы используете русский язык в базе. Для латиницы, повторяюсь, все равно. Для русского языка - катастрофичное увеличение объема. Как я уже писал. Сегментное пространство таблиц состоит из смеси VARCHAR, NUMBER, DATE типов и прочих сырых типов и служебной информации и пустого места. Из оставшися VARCHAR типом вы выкинем всякие GUID телефоны адреса электронки и бизнесовые идентификаторы которые пробиты латиницей. Каждый мой шаг можете отмечать некой примерной оценкой (например брать 1:4). Тоесть на каждый кирилический типа будет 4 латинских. На каждое VARCHAR поле будет 4 не-варчар. Или берите другое соотншение. Пофиг. Важно что деля этот объем сегмента на порции я вам показываю что на самом деле кириллица не может занимать много места изначально. (Если у вас не библиотека Мошкова в базе). Все это мои предположения на основе моего видения СРЕДНЕСТАТИСТИЧЕСКОЙ базы. Торт с названием база я режу на кусочки и каждый кусочек тоже на кусочки. Если я ошибся или вы сомневаетесь то давайте мне вашу киррилическую базу и мы погоняем в ней Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:09 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewЭто другая задача. Более затратная чем s [n]. То есть меняя s [n] на substr(m,n) мы сразу теряем. Это неважно. Я-же генерализировал ваше требование. Взял тот сет функций который опирается в на жалкую и ничтожную s[n] которая мало полезна сама по себе. Мало кому нужен 20-й символ. А вот взять с 0 по 4-й - это нужная задача особенно когда мы парсим протокол URL. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:13 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewДаже если они не длинные, то их много и они занимают много места. Строки обычно всегда оказываются первым узким местом по расходу памяти. Я писал выше что в средне-статистическом java-приложении сегмент char[] является самым толстым по потреблению. Но не забывайте что рантайм jvm (classloader) складывает туда толстные названия пакетов + классов. И анонимных классов. Тоесть масса служебной инфы кроме прикладной. Это только особенность JVM. Хотя для некоторых приложений int[] иногда выходил наверх. Для других языков и технологий C++/.Net/Python/ e.t.c. я такой статистики не знаю. И я прошу знатоков этих технологий дать нам в топик сведенья. А сколько собственно строк и каков их средний размер? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:18 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene Newавтомат разбора Усложняется и это частный случай. Я не принимаю этот аргумент. Где justification? Документация? Фрагмент кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:20 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewПроигрыш оперативной памяти для приложений. чем больше используют русский язык, тем хуже. Это просто прекрасно! Из этого можно сделать вывод что не стоит использовать русский язык. Будьте осторожны с тезисами. Я - же хочу числовую оценку. А вы просто сообщаете банальность. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:24 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewПреобразуем все в однобайтовую кодировку, номер кодовой страницы храним в одном лишнем байте. Если уж тот редчайший случай, когда одновременно больше 2 языков в документе, разбиваем его на части по языкам. Можно выделить на маркер спецсимвола 1 байт (с кодом < 32, из нечитаемых) и на номер кодировки еще 1. И в таком виде хранить сплошняком текст. Его можно будет один раз прочитать и разбить на куски из национально кодированных строк. Поздравляю, вы изобрели Word 2a (был актуален в начале 90-х). Именно от чего-то такого и отказались, когда придумали Unicode. И людей, у которых в документах более двух языков довольно много, больше, чем вам кажется по личному опыту. А кроме документов есть еще разные системы хранения и обработки текстов, где ваша идея означает существенное увеличение сложности (т.е. потери производительности) ценой некоторого сокращения объема хранимых данных. Об организационной стороне вашей идеи даже думать не хочется :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:35 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene Newmayton, substr(m,n) Это другая задача. Более затратная чем s [n]. То есть меняя s [n] на substr(m,n) мы сразу теряем. Вопрос не в substr как таковой а в нахождении m,n при таком подходе есть разница Код: sql 1.
а при таком практически нет Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:51 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonВерно?Да, я уже высказывался на эту тему. И продолжу высказываться, если сочту нужным: 1. Текст не является массивом символов; 2. Из юникодных кодировок общего назначения должен остаться только UTF8. UTF16/32 - должны сдохнуть. P.S. Есть кодировки юникода "специального назначения" - они имеют право на существование в специфичных задачах. P.P.S. И да, эти спец.кодировки позволяют упаковать в один байт "много чего". Поэтому НовоЮджину, надо в школу, чтобы не высказываться в космических масштабах и такой же глупости. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:51 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonНу... где это может быть полезно? Я не знаю. Младшие разряды. В телефонном номере 5 или 7 последних цифр.Я напоминаю, что UTF8 обратно совместима с US-ASCII. Практически это означает, что целый пласт алгоритмов для US-ASCII переносятся на UTF8 без каких-либо модификаций. Это и ваш "поиски последних цифр телефонного номера" и "разбиение файлового пути по элементам" и т.д. и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 09:57 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovmaytonНу... где это может быть полезно? Я не знаю. Младшие разряды. В телефонном номере 5 или 7 последних цифр.Я напоминаю, что UTF8 обратно совместима с US-ASCII. Практически это означает, что целый пласт алгоритмов для US-ASCII переносятся на UTF8 без каких-либо модификаций. Это и ваш "поиски последних цифр телефонного номера" и "разбиение файлового пути по элементам" и т.д. и т.п. Прошу прощения. Они то совместимы. Но до того как мы начали поиск суффикса в UTF8 - мы не знаем что внутри строки. Хотя упрощение - справедливое. Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:02 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonEugene NewКак она может не реагировать, когда вам приходится делать все строковые поля в ДВА раза большего объема. Не писать туда больше, а сразу увеличивать длину полей в байтах в два раза. Раньше надо было 100 байтов, теперь надо 200. Потому что поле может достигать 100 символов длиной на русском языке. Если вы используете русский язык в базе. Для латиницы, повторяюсь, все равно. Для русского языка - катастрофичное увеличение объема. Как я уже писал. Сегментное пространство таблиц состоит из смеси VARCHAR, NUMBER, DATE типов и прочих сырых типов и служебной информации и пустого места. Из оставшися VARCHAR типом вы выкинем всякие GUID телефоны адреса электронки и бизнесовые идентификаторы которые пробиты латиницей. ... Если взять БД какой-нибудь бухгалтерии, торговли и т.п. ERP, то текста там будет немного, не более 10%. ИМХО даже 10% это многовато, думаю в среднем 2-4%. Там гораздо острее стоит проблема GUID vs INT для ключей. Тут разница в 4 раза (16 и 4 байта). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:04 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovmaytonВерно?Да, я уже высказывался на эту тему. И продолжу высказываться, если сочту нужным: 1. Текст не является массивом символов 200% согласен. Я сам утверждаю что текст вообще никакой не массив а Stream<Char>. И работать с ним надо поточным образом. Если где-то мы нашли бизнес-сущность которая требует другой работы то это просто... не текст. Это как-раз и будет какой-то грёбаный массив. По остальным вашим поинтам. Я просто пытаюсь найти эти юзкейсы. Где. В comparison, collation? К каких частях строкового API находится функционал этих композитных символов? Я ок с aproach. Но я пока для себя не нахожу практического подтверждения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:07 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonИтого 328 знаков. Укладываемся в 9 битов. (не более 512 состоянии и еще запас есть)Очень плохо изобретать велосипеды, но ознакомившись в с тем, что уже сделано. Основные (если не все) европейские языки расположены в блоке из 2048 кодов. Это всего 11 бит. Полтора раза, если не жлобствовать и не занудствовать. Про "сжимающие" кодировки из ICU-репертуара я даже не стану упоминать. P.S. "Не сотвори себе кумира" - один пошёл по граблям и вы туда же. Используя правило 20/80 будем считать, что 20% данных имеют фиксированных размер, а 80% - "те самые пухнущие строки": Код: plaintext 1.
Просто потому, что положили на "банальную логику и элементарную эрудицию". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:08 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonНо до того как мы начали поиск суффикса в UTF8 - мы не знаем что внутри строки. Хотя упрощение - справедливое. Да.Нам пофигу, что внутри, если это UTF8. Не пофигу то, что мы ищем. А это нам известно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:09 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Если речь о хранении, то можно использовать словарь символов: Код: sql 1.
Сами символы в словаре, а в хранилище только индексы. Если используется менее 256 символов, то один символ будет один байт независимо от языка(ов). Шутка ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:19 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovmaytonИтого 328 знаков. Укладываемся в 9 битов. (не более 512 состоянии и еще запас есть)Очень плохо изобретать велосипеды, но ознакомившись в с тем, что уже сделано. Основные (если не все) европейские языки расположены в блоке из 2048 кодов. Это всего 11 бит. Полтора раза, если не жлобствовать и не занудствовать. Про "сжимающие" кодировки из ICU-репертуара я даже не стану упоминать. P.S. "Не сотвори себе кумира" - один пошёл по граблям и вы туда же. Используя правило 20/80 будем считать, что 20% данных имеют фиксированных размер, а 80% - "те самые пухнущие строки": Код: plaintext 1.
Просто потому, что положили на "банальную логику и элементарную эрудицию". Это был brainstorm. Давайте закроем пока тему 9 бит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:25 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Dima T, Если взять БД какой-нибудь бухгалтерии, торговли и т.п. ERP, то текста там будет немного, не более 10% Похоже, что это мнение человека, никогда не видевшего БД бухгалтерии, торговли, ERP и т. п. Я сам утверждаю что текст вообще никакой не массив а Stream<Char>. Поток это то, что мы не можем прочитать сразу, что не помещается в оперативную память, а лежит на внешнем устройстве. Такой смысл этого изначально. И вот у нас много оперативной памяти, но нас заставляют искусственно обращаться с ней, как с потоком. Это всего 11 бит. В UTF8 тратится 16. Да, неэффективно - я говорю о том же. Хреново сделали. что 20% данных имеют фиксированных размер, а 80% - "те самые пухнущие строки": Зачем фантазировать когда известно на практике, что как только начинаете мерять, на что тратится память, сразу на первом месте вылезут строки. И какая разница, фиксированный размер у них или нет? Они все равно вырастают в два раза. Сами символы в словаре, а в хранилище только индексы. Если используется менее 256 символов, то один символ будет один байт независимо от языка(ов). Шутка Это не шутка, и кодировка CP1251, например, является таким словарем. Нам нужно сохранить нижнюю половину таблицы полностью. Тоесть 128 симвлов оставить как есть. + 200 знаков для всех киррилических языков мира Нужно меньше на кириллицу и не обязательно в нижней половине таблицы оставлять как есть. Англосаксы же не подумали об остальных языках с умлаутами, когда делали свою кодовую таблицу. Включили свои символы и все. И когда переводят языки на латиницу, не озабочиваются придумыванием новых букв, используют те, что есть. В отличие от советских ученых, которым надо было показать оригинальность и самобытность чукчей или ненцев. В общем, русскую азбуку + может быть что то из славянских языков, в которых это сохраняется с древности, как умлауты в немецком. 100 не надо. бизнесовые идентификаторы которые пробиты латиницей. В России вообще то все должно быть на государственном языке - русском. Вообще все. Так что большинство строк в таблицах для российской бухгалтерии или ERP будут кириллическими. Если я ошибся или вы сомневаетесь то давайте мне вашу киррилическую базу и мы погоняем в ней Все строки в "моей" базе кириллические. То есть должны быть рассчитаны на хранение русских текстов. Я могу лишь проверить на досуге, сколько конкретно байт уходит на строки и сколько на все остальное. Тоесть масса служебной инфы кроме прикладной. Это только особенность JVM. RTTI в наше смутное время есть почти в каждом языке. А сколько собственно строк и каков их средний размер? Не считал, т. к. нужды не было. Я не принимаю этот аргумент. Где justification? Документация? Фрагмент кода? Очевидно же, что добавляется предварительный анализ каждого очередного байта, и склеивание их между собой в случае необходимости. Да, это не сложно. Но тем менее это придется делать. Это просто прекрасно! Из этого можно сделать вывод что не стоит использовать русский язык. Боюсь, что к этому и ведут. Потом развернут компанию - русский язык плохо хранится на компьютерах, давайте переходить на латиницу, мол. Я - же хочу числовую оценку. А вы просто сообщаете банальность. А что мне еще сказать? Для чисто русских текстов - в два раза. Тоже банальность. Именно от чего-то такого и отказались, когда придумали Unicode. Напрасно. ваша идея означает существенное увеличение сложности (т.е. потери производительности) ценой некоторого сокращения объема хранимых данных. Скажите, пожалуйста, откуда появляется увеличение сложности и падение производительности по сравнению с обработкой utf-8. Об организационной стороне вашей идеи даже думать не хочется :) Не вижу проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 10:53 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewА сколько собственно строк и каков их средний размер? Не считал, т. к. нужды не было. Я заметил что у вас вообще нет числовых оценок. Все на словах. Вы очертили проблему. Отлично. Я вам задаю встречный вопрос. Сколько? Дорогой мой Евгений? Сколько в вашей базе всех символов? И сколько из них - киррилических? И приложении. Жду. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 11:12 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, а что делать с иностранными названиями комплектующих в русскоязычных БД ? ведь это не обязательно инглишъ. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 11:36 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, Ок, я в базе посчитаю, когда найду время этим заняться. Еще раз замечу, что все, абсолютно все строковые поля в реляционной базе нужно расширять в 2 раза. Чтобы иметь гарантию, что туда поместится нужное число русских букв. Кстати, думаю, что для немцев и прочих западноевропейцев весь этот уникод выглядит совсем не так, как для нас. У них это, скорее всего, основная масса однобайтовых символов латиницы с редкими вкраплениями экзотических умлаутов. О увеличении объема в два раза в таком случае речи не идет. Выходит, что с русским языком поступили по-хамски, совершенно игнорируя наши интересы, и это хамство заслуживает наказания. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 11:36 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewИ когда переводят языки на латиницу, не озабочиваются придумыванием новых букв, используют те, что есть. В отличие от советских ученых, которым надо было показать оригинальность и самобытность чукчей или ненцев. И то, и другое — заблуждение. Точнее, для латиницы уже придумано столько дополнительных букв, что хватает для большинства новописьменных языков, хотя есть и недавние примеры изобретения знаков. С кириллицей та же история. Eugene NewВ общем, русскую азбуку + может быть что то из славянских языков, в которых это сохраняется с древности, как умлауты в немецком. 100 не надо. Почему для русского языка нужен алфавит, адекватно отражающий его фонетику, а для других — нет? Ваши идейные предшественники уже сэкономили на разработке шрифтов, когда сделали письменность для части северокавказских языков с триграфами вроде къь . Eugene NewВ России вообще то все должно быть на государственном языке - русском. Вообще все. Закон «О языках народов Российской Федерации» считает иначе. Eugene NewЫ2ваша идея означает существенное увеличение сложности (т.е. потери производительности) ценой некоторого сокращения объема хранимых данных. Скажите, пожалуйста, откуда появляется увеличение сложности и падение производительности по сравнению с обработкой utf-8. Ко всему тому, что уже есть для обработки теста, добавляется ловля ваших признаков смены кодировки и идентификаторов, что заодно губит на корню вашу же идею иметь строку как массив символов. Eugene Newзаслуживает наказания Так и написали бы сразу, что вам нужна маленькая победоносная война. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 14:43 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewВыходит, что с русским языком поступили по-хамски, совершенно игнорируя наши интересы, и это хамство заслуживает наказания. Вы вроде-бы поните "эпоху доткомов". Слышали про "Оберон". Делаю вывод что вы не школьник а чел среднего возраста. Но иногда от вас звучат совсем уж простите детские заявления и прокламации. Кого собираетесь наказать? И как? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 15:19 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewПоток это то, что мы не можем прочитать сразу, что не помещается в оперативную память, а лежит на внешнем устройстве. Такой смысл этого изначально. И вот у нас много оперативной памяти, но нас заставляют искусственно обращаться с ней, как с потоком. Все программирование построено на ограничениях. Поточная обработка информации - это один из важных принципов экономного обращения с ресурсами. Накопители последовательного доступа - потоковые. Потоковые операции взяты в основу коммуникаций. TCP протколоы. Pipelines Unix. Фундаметнальная структура данных Lisp - это не массив. Это список. Однонаправленный. Тоесть интерфейс - поток. Потоки - файлы. Потоковая обработка файла создает мягкую нагрузку на диск с высоким throughput. Очень многие интерфейсы доступа к архива Zip/Gzip - суть потоки. Потоки - курсоры баз данных. Потоки - шаблоны обработки данных в технологиях BigData. Самые топовые методологии обработки данных в функциональном программировании - тоже потоковые. +Они еще накладываеют контракт иммутабельности. Вернуть из функции поток всегда проще чем массив. В базах данные 1 раз прочиатть - это удачный кейс. Нет repeatable read. Нет доп накладных расходов. Если ваш курсор читает все строки выборки 1 раз это хороший план оптимизатора. И если вы откажетесь от идеи рандомного доступа ко всему всегда и везде - вдруг окается что многие контракты легче соблюдать. Окажется что многое ПО стыкуется легче. И на разрядность символа плевать. В будущем железо будет усложнятся в сторону эдакой себе пирамиды технологий. И random-access по памяти например может вызвать задержки более значимые чем сегодня. Памяти будет много. Терабайты и более но со своей спецификой. Предсказатели переходов и кеши будут соптимизированы на упреждающую выборку. Тоесть - читаете байт - предсказание что будете читать еще сто тыщ мегабайт после него. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 16:33 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
exp98, что делать с иностранными названиями комплектующих в русскоязычных БД ? Писать по-русски. Если это продается или покупается в Российской Федерации, оно обязано иметь русское название. Иначе вы его в счет-фактуру записать не сможете. Т. к. весь документооборот ведется на русском языке. Посчитал поля одной БД. Индексы не считал, как не учитывал и прочие технические детали. Просто размер поля * число строк в таблице. Вышло, что строки занимают 39% от всех. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 17:54 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Но вы можете в БД хранить в отдельных полях названия хоть на суахили, если вам это надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 17:55 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewНо вы можете в БД хранить в отдельных полях названия хоть на суахили, если вам это надо. ...в однобайтовой кодировке и ни в коем случае их не обрабатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 18:10 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
И если вы откажетесь от идеи рандомного доступа ко всему всегда и везде - вдруг окается что многие контракты легче соблюдать. Жили давно в хрущевке. Потом переехали во дворец площадью 2000 кв. м. Но стали всю ставить стены и перегородки, чтобы ни одно помещение не было большим и забивать их вещами, хламом, навозом с улицы. В итоге оказалось, что места осталось еще меньше чем раньше и все стало еще неудобнее, т. к. на кухню площадью те же 4 кв. метра теперь надо ходить на третий этаж по коридору, а спускаться обратно по веревочной лестнице. В будущем железо будет усложнятся в сторону эдакой себе пирамиды технологий. Судя по искуственному усложнению софта, когда то, что раньше занимало в 1000 раз меньше места и работало лучше, теперь представляет из себя некоего монстра, можно поверить и в искусственное усложнение железа. Но является ли это правильным? Нет. Это будет именно искусственное усложнение, так как технический прогресс в этой области уже остановился. Сейчас такое время, что берут технологии 1970-х и выдают их за великий прорыв. Кого собираетесь наказать? И как? Я сказал, что они заслуживают наказания. Заслуживают. Накажем их для начала презрением и неприятием. Точнее, для латиницы уже придумано столько дополнительных букв, что хватает для большинства новописьменных языков Тупо лепят стандартный латинский алфавит и все. Не хватало им еще этих заморочек. У них вообще распространенное выражение "speak human" - то есть всего один язык считается человеческим - английский. Приравнивание кириллицы и великого русского языка к языкам отсталых народностей, не имевших даже письменности - это сильное унижение русского языка и его носителей. Вы же тоже по-русски говорите. Вам это зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 18:33 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Забавный факт - латиница не приспособлена для английского языка! В нем для некоторых звуков требуется сочетание букв и большинство слов не произносится так, как пишется. Запись слова на английском вообще имеет слабую связь с его произношением. Русский язык в этом плане намного лучше. Вы можете читать слова так, как они написано. Стандартной кириллицей можно записать больше звуков, чем латиницей. На фоне этого придумывание новых букв для ньюансов произношения каких-то звуков выглядит искуственным. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 19:03 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
О языках народов Российской Федерации Поскольку нигде нет списка т. н. народов Российской Федерации, отсутствует объект для применения этого закона. Зато есть есть закон о государственном языке России И давайте больше не будем отклоняться от основной темы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 19:15 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Так я дал же числовую оценку. 21688419 Посчитал поля одной БД. Индексы не считал, как не учитывал и прочие технические детали. Просто размер поля * число строк в таблице. Вышло, что строки занимают 39% от всех. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 20:15 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewТак я дал же числовую оценку. 21688419 Посчитал поля одной БД. Индексы не считал, как не учитывал и прочие технические детали. Просто размер поля * число строк в таблице. Вышло, что строки занимают 39% от всех. Размер поля умнижил на число строк? Это - туфта. Я тебе подсказал SQL-шаблон. У тебя должен быть sum, length в запросе. Пересчитай по честному. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 20:19 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, насколько я понимаю, вы хорошо знаете Oracle. расскажите мне, пожалуйста, как Oracle хранит записи и почему для varchar(100) не выделяется всегда 100 символов. Если окажется, что я глубоко заблуждался, посыплю голову пеплом и уйду с форума учить матчасть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 21:09 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene Newmayton, насколько я понимаю, вы хорошо знаете Oracle. расскажите мне, пожалуйста, как Oracle хранит записи и почему для varchar(100) не выделяется всегда 100 символов. Если окажется, что я глубоко заблуждался, посыплю голову пеплом и уйду с форума учить матчасть. В нашей задаче нет необходимости изучать бинарный формат хранения данных Oracle. Просто поверьте мне что современные СУБД (и MSSQL, и PostgreSQL) используют плавающий размер строки. отличный от DBase/FoxPro. В этом можно убедится если создать пустую таблицу и наполнить ее данными и померять размер по USER_SEGMENTS. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 22:04 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Не использовал я Oracle. В блоках оно хранит и сколько надо. Теперь понятно, отчего вас не так беспокоят лишние затраты памяти. Причем это обычный подход для современных СУБД. Даже интересно стало этот Oracle покрутить, посмотреть как в нем с таким подходом дела с обновлениями строковых данных обстоят. Не сказать, чтобы это обнулило все, что я говорил - это не так. Но оплеуху я неплохую получил. Пойду пеплом голову посыпать.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 22:06 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewНе использовал я Oracle. В блоках оно хранит и сколько надо. Теперь понятно, отчего вас не так беспокоят лишние затраты памяти. Причем это обычный подход для современных СУБД. Даже интересно стало этот Oracle покрутить, посмотреть как в нем с таким подходом дела с обновлениями строковых данных обстоят. Покрути. Поищи редактор BBED. Он вроде позволяет бинари просматривать. За советами - ходи сюда . К очень дружелюбным и отзывчивым ДБА. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2018, 22:11 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. SidorovmaytonВерно?Да, я уже высказывался на эту тему. И продолжу высказываться, если сочту нужным: 1. Текст не является массивом символов; 2. Из юникодных кодировок общего назначения должен остаться только UTF8. UTF16/32 - должны сдохнуть. P.S. Есть кодировки юникода "специального назначения" - они имеют право на существование в специфичных задачах. P.P.S. И да, эти спец.кодировки позволяют упаковать в один байт "много чего". Поэтому НовоЮджину, надо в школу, чтобы не высказываться в космических масштабах и такой же глупости. Нашел один API. У Хорстмана. Чуть позже приложу скрины. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 19:45 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Надеюсь Старик не обидится. Полтора скрина запостил. Вобщем есть API. Но ... субъективно достаточно редкоиспользуемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 15:38 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
И к чему вся эта хрень? Неужели так трудно словами объяснить, что именно вас заинтересовало и поразило??? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 16:17 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
(пожимает плечами) Юзкейс редкий. Я в ентерпрайзе более 10 лет но нигде не использовал именно эти механизмы. А работали мы минимум с 3 крупными европейскими банками. Может быть вы ... поделитесь где вы использовали. Где был полезный эффект а не просто рекомендация от консорциума. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 22:09 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, это уже какой-то юниюникод - даже символ юникода не является буквой. Причем потеряна однозначность. У ребят первый байт пустует, а они ударение в отдельные два байта пишут. Далеко ушли. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 22:23 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
А ты говоришь - массив ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 22:25 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, А ты говоришь - массив Информация интересная, спасибо. Сначала делают лишний байт чтобы туда писать ударения. Потом ударения туда не пишут. Маразм? Это ведь уже не текст в формате юникод. Basil A. Sidorov, Неужели так трудно словами объяснить, что именно вас заинтересовало и поразило??? А у вас трудности с чтением и пониманием.. Зато вы точно знаете что должны делать все. Темный человек.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 22:39 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewИнформация интересная, спасибо. Сначала делают лишний байт чтобы туда писать ударения. Потом ударения туда не пишут. Маразм? Это ведь уже не текст в формате юникод. Это может быть полезно для азиатских алфавитов где у них иероглифы - композитные. Я часто видел в корейском кино как они тайпают на мобилах. Чтоб набрать какой-то символ они сделают 3-4 клика по context menus и новый символ - "вуаля" рождается как из конструктора. И чисто технически и на семантическом уровне такое разложение полезно. Поисковики там... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2018, 22:53 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewСначала делают лишний байт чтобы туда писать ударения. Потом ударения туда не пишут. Маразм? Отнюдь. Эта возможность здорово выручает, когда нужно, например, снять необязательные диакритические знаки или, наоборот, автоматически расставить ударения, долготы и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 00:25 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton (пожимает плечами) Вы отсканировали три странички вполне классического "Core Java" - зачем? Чтобы удивиться канонизации и нормализации? Ну, дык, всё тот же консорциум пишет об этом в разделе " Рекомендации по реализации " (вольный перевод): выделено мноюВозможна реализация подмножества стандарта Юникода как "расширенного US-ASCII" при минимальных изменениях сложившейся практики разработки ПО. Однако стандарт Юникода работает с языками и системами письменности, которые сложнее английского. ... Стандарт содержит коды большинства общеупотребительных акцентированных символов. Эти символы также могут быть представлены композицией из нескольких кодов ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 05:50 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, хватит уже не по делу трындеть в самом деле. Если до вас не доходит суть обсуждаемых вещей, то самое разумное - помолчать, а не пытаться занимать позу надзирателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 06:19 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Просто гражданин заметил признаки крамолы - опасного интеллектуального разговора по существу и прибежал затыкать рот и пресекать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 06:32 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ладно забейте. Меня нисколько не удивляют api и стандарты. Я спрашивал кто из вас это использовал и как? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 07:53 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
С этим более удобным подходом юникод для ударений оказался не нужен, лишние байты вообще не используются. Могли бы и свои любимые иероглифы писать обычным однобайтовым алфавитом в виде слов, разделенных пробелами. Ведь у каждого иероглифа есть название. А сортировка по алфавиту к иероглифам в принципе не применима. Утвердили бы стандартные написания иероглифов и писали бы: sunshui vchai maodz une Такое и без спецсредств прочитать можно, и расшифровать для рисования несложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 20:24 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewС этим более удобным подходом юникод для ударений оказался не нужен, лишние байты вообще не используются.В Википедию вы, видимо, даже не заглядывали... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 20:39 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewС этим более удобным подходом юникод для ударений оказался не нужен, лишние байты вообще не используются. «Лишние» байты, как вы и сами знаете, не для ударений, а для расширения репертуара. Стандарт определяет, например, что 045E (белорусское краткое у) будет автоматически разложено на или собрано из 0443 (у) и 0306 (комбинируемый знак бреве). Время от времени такие вещи бывают полезны. Eugene NewМогли бы и свои любимые иероглифы писать обычным однобайтовым алфавитом в виде слов, разделенных пробелами. Ведь у каждого иероглифа есть название. А сортировка по алфавиту к иероглифам в принципе не применима. Китайцы вас не поймут, а плюнуть на них не выйдет: их слишком много. Факт наличия — пусть и неалфавитной — сортировки выводится из факта издания бумажных китайско-всяких словарей. Eugene NewУтвердили бы стандартные написания иероглифов и писали бы: sunshui vchai maodz une Такое и без спецсредств прочитать можно, и расшифровать для рисования несложно. По отношению к китайскому это и есть «спецсредство». И да, вы снова опоздали: пиньин иже изобрели :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 23:52 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2«Лишние» байты, как вы и сами знаете, не для ударений, а для расширения репертуара. Стандарт определяет, например, что 045E (белорусское краткое у) будет автоматически разложено на или собрано из 0443 (у) и 0306 (комбинируемый знак бреве). Время от времени такие вещи бывают полезны. А в каких приложениях вы это использовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 00:01 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2, тут как раз спор и идет, нужен ли второй байт для расширения репертуара или нет. Я вижу в предложенном примере довод в пользу того, что можно обойтись, втиснув стандартную кириллицу в один байт вместе со стандартной латиницей, а для всяких экзотических букв с галочками или точечками использовать запись этой точечки как отдельного символа, что, как оказалось, и так делается - даже с юникодом, потому, что так, оказывается, удобнее! Так что непонятно, в чем профит юникода. По отношению к китайскому это и есть «спецсредство» Под спецсредством я имел в виду программу, которая все эти иероглифы рисовать умеет. И без нее можно текст прочитать, зная латиницу, и китаец поймет о чем там речь. пиньин иже изобрели Вещь очевидная. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 00:05 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
maytonЫ2«Лишние» байты, как вы и сами знаете, не для ударений, а для расширения репертуара. Стандарт определяет, например, что 045E (белорусское краткое у) будет автоматически разложено на или собрано из 0443 (у) и 0306 (комбинируемый знак бреве). Время от времени такие вещи бывают полезны. А в каких приложениях вы это использовали? Обработка естественного языка ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 00:49 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewЫ2, тут как раз спор и идет, нужен ли второй байт для расширения репертуара или нет. Я вижу в предложенном примере довод в пользу того, что можно обойтись, втиснув стандартную кириллицу в один байт вместе со стандартной латиницей, а для всяких экзотических букв с галочками или точечками использовать запись этой точечки как отдельного символа, что, как оказалось, и так делается - даже с юникодом, потому, что так, оказывается, удобнее! Так что непонятно, в чем профит юникода. Изначально вы хотели однобайтовости, чтобы обрабатывать строку как массив символов-байтов. А с комбинируемой диакритикой так не выйдет: у вас не сойдется число байт с числом видимых человеком символов. Вы, похоже, неверно поняли, что я написал. Если несколько длиннее, то Юникод не обязывает вас хранить ранее помянутое белорусское краткое у в виде двух символов (у и бреве), но предписывает, что реализация должна дать вам возможность как разобрать его на эти два символа, так и собрать обратно, если вам потребуется . Иногда бывает нужно разом снять все необязательные долготы, но не всегда заранее известно, как именно пользователь их расставил: использовал комбинируемый знак 0304 макрон или вручную вставил соответствующую по виду букву (0100, 0113 и т.п.) из Latin Extended-A. Насчет профита… Скачайте стандарт, таблицы символов для различных блоков. Там так много интересного. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 01:19 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2, Зато обрабатывалось бы как массив. Фактически выходит, что ударение это отдельный символ в этом подходе, не правда ли? Юникод не обязывает вас хранить ранее помянутое белорусское краткое у в виде двух символов (у и бреве), но предписывает, что реализация должна дать вам возможность как разобрать его на эти два символа, так и собрать обратно Пишут стандарты КОДИРОВКИ символов с избыточностью, но с неоднозначным представлением. facepalm ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 01:32 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewЫ2, Зато обрабатывалось бы как массив. Фактически выходит, что ударение это отдельный символ в этом подходе, не правда ли? Юникод не обязывает вас хранить ранее помянутое белорусское краткое у в виде двух символов (у и бреве), но предписывает, что реализация должна дать вам возможность как разобрать его на эти два символа, так и собрать обратно Пишут стандарты КОДИРОВКИ символов с избыточностью, но с неоднозначным представлением. facepalm Видишь Юджин. Ты не просто пролетел с пропозицией священного холивара. Ты - дважды пролетел Это кстати лишний раз убеждат меня в том что со строками надо работать как с Stream<Char> но не в этом явном виде как я написал. А под капотом. И глубоко в языке. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 01:40 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, Ты не просто пролетел с пропозицией священного холивара. Ты - дважды пролетел Я пролетел только с оценкой способа хранения строк в "современных субд". Во всем остальном не вижу, в чем я не прав. со строками надо работать как с Stream<Char> Каждая строка - файл, значит. Как то это ограничивает и так и не понятно зачем, кроме каких то специфических случаев. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 01:58 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Боюсь, что концепция строка=файл может завести на уровне мышления слишком далеко, вплоть до невозможности прочитать свое имя целиком. Так что я против. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 02:00 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Правда ведь, нечего опускать на уровень иероглифов и прочих недоразвитых.. Алфавит - это наше преимущество. И это очень существенно для нашего мышления. Ну какой текст файл? Вы его что - по одному символу читаете? Вы его читаете постранично, имея свободный доступ к любому слову на странице. А нас хотят урезать до того, что даже каждое слово-файл. Бред же! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 02:24 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Вы будете смеяться, но в юникоде даже одна единственная буква - тоже файл! Какая деградация по сравнению с традиционным алфавитом.. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 02:27 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Чисто общий вопрос. Не по сабжу. Ты знаком с Функциональным программированием? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 09:06 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, только примерно представляю, что это такое, не занимался. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 11:15 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, Почитай. Будет переворот сознания почище чем от utf8. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 11:39 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, у меня нет переворота сознания от utf8 - я просто вижу, что это отстой, который мне навязывают и который мне не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 12:12 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Как будет угодно. Я не навязываюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 12:50 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
mayton, боюсь, вы меня неправильно поняли. Вы мне предоставили очень много полезной информации, в том числе и по поводу utf8 (хоть это и не привело к тому, что я стал его считать полезной вещью). Спасибо за это. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 13:16 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
А функциональное программирование вещь интересная.. правда мне в работе оно пригодится пока что вряд ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 13:21 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene NewПравда ведь, нечего опускать на уровень иероглифов и прочих недоразвитых. Алфавит - это наше преимущество. И это очень существенно для нашего мышления. Куда вас опускают? У вас отбирают алфавитное письмо и заставляют использовать эскимосскую слоговую письменность, угрожая переехать Ладой Калиной вдоль и поперек в случае отказа? А что касается «недоразвитых»… Наши алфавит и орфография ровно так же отражают историю развития письменности, как и другие варианты: просто почитайте на досуге про тот же хангыль , узнаете много интересного. Теперь про ударения. Найдите букварь и попросите простого русского человека™ сосчитать буквы в тексте с проставленным ударением. Скорее всего, он в слове «мама» насчитает четыре буквы, а в слове «лошадь» — шесть, а в вашем массиве будет пять и семь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 15:34 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2, У вас отбирают алфавитное письмо и заставляют использовать эскимосскую слоговую письменность Меня заставляют воспринимать отдельные слова и даже символы как файлы. Наши алфавит и орфография ровно так же отражают историю развития письменности, как и другие варианты: просто почитайте на досуге про тот же хангыль, узнаете много интересного. Ничего не так же. У нас алфавит больше тысячи лет, а недоразвитые до сих пор из иероглифов или полуиероглифов не выползут. сосчитать буквы в тексте с проставленным ударением Ударения это не буквы, а спецсимволы. Да и не пишет их никто в текстах давно уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 16:13 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Вы бы эта ... Поаккуратнее с кванторами всеобщности ... А то неудобно может получиться ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 17:34 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, найдите букварь. Или тут посмотрите . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:04 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2, пример вредительства. Плохо составленный и оформленный букварь. Даже у меня в глазах начинает рябить, когда смотрю на страницу по ссылке, тем более у несчастных детей. Модератор: Оффтопик убирайте под спойлер ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 09:22 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ок, я просто не знал как убирать. Уточняю - плохой современный букварь, а старый советский по сравнению с ним образец со знаком качества. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 11:00 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, мы же тут не качество букварей обсуждаем. И в советских букварях было ударение (во всяком случае, в самом начале обучения), и в нынешних осталось. Еще оно есть в учебниках русского для иностранцев, в словарях и т.п. В общем, штука нишевая, безусловно, но нужная. И я сильно сомневаюсь, что обучающиеся будут считать знак ударения отдельным символом наравне с буквами, т.е. для них в слове с ударением и без него одинаковое количество букв. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 12:38 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Ы2, это уже забота специальных типографских программ или просмотрщиков. Ведь в utf8 в итоге то же самое - как отдельный символ идет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 13:38 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Eugene New, вы опять забыли про свою исходную — строку как массив символов. Давайте вернемся к вашим баранам. Не нравятся Юникод и UTF8? — Не используйте. Нравится cp1251? — Пользуйтесь на здоровье. Скорее всего, она протянет еще лет десять, как минимум. Не годится ни то, ни другое? — Пишите проект стандарта, возможно, им заинтересуется кто-то еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 13:48 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
В качестве ещё одного финального аккорда. Пока я не видел чтобы кто-то навязывал unicode как формат представления строковых литералов в памяти приложений. Основные юзкейсы пока: - внешние файлы текстовой природы - производные от них xml, и офисные документы - веб содержимое страниц - исходники К этим файлам у нас - практически всегда доступ последовательный и проблемы индексатора или substr не наблюдается. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2018, 13:42 |
|
Юникод и utf8
|
|||
---|---|---|---|
#18+
Прошу прощения за внезапный up! Сейчас копирую 2 терабайта с NTFS на Ext4. Слава богу что обе ФС поддерживают из коробки многобайтные кодировки имен файлов. Я-бы не пережил ситуацию когда экономия на байтах заставила-бы меня играть с настройками и эспериментировать до тех пор пока я не перенесу все киррилические имена а также имена содержащие прочие символы из диапазона других языков. По сабжу я так не прикалываюсь но в файлах много скачанного материала который достаточно сложно как-то ограничить. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2019, 13:48 |
|
|
start [/forum/search_topic.php?author=said78&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
187ms |
get tp. blocked users: |
1ms |
others: | 490ms |
total: | 922ms |
0 / 0 |