powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Юникод и utf8
25 сообщений из 172, страница 3 из 7
Юникод и utf8
    #39708649
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyлюбая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может.Ни одна функция, работающая с символами юникода, не может быть построена на индексном доступе.
Функция, работающая с кодами - может, но проблем в том, что для приложения это слишком низкий и крайне неудобный уровень.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708661
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovboobyлюбая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может.Ни одна функция, работающая с символами юникода, не может быть построена на индексном доступе.
Функция, работающая с кодами - может, но проблем в том, что для приложения это слишком низкий и крайне неудобный уровень.

ну, вот где-то вокруг этого и крутится вопрос про ненавижу и бесит.
Если бесит - хоть сколько-нибудь технически осмысленное.

Альтернативно можно просто памяти на элемент внутреннего представления
добавить, для сохранения индексного доступа.

И продолжить отличать внешнее и внутреннее представление строки,
всякий раз проводя нужного вида кодирование.
И память же ведь все равно ничего стоит, и кодирование/декодирование проблем производительности не создает.
Это все знают...

:)
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708669
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выбираясь из запутанного разговору к техническим минусам:

- в два раза больше памяти
либо
- невозможность доступа по индексу
либо
- каждый раз перекодировать туда-сюда.

Плюсы?
Если текст содержит только латиницу и кириллицу, ни одного плюса нет.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708672
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewЕсли"Предположение - мать всех провалов".
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708676
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
это не предположение, это условия.

И самое дикое во всем этом - это что строки больше не массивы. Это, за что его авторам надо убиться о стенку.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708678
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упреждая вопросы, а как бы сделал я.

Следовало включить в однобайтовую кодировку и стандартизировать кириллицу. Так к в мире есть два основных алфавита - латиница и кириллица.

(у китайцев НЕТ алфавита, если вам вдруг захочется их считать).
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708682
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New, алфавита нет,а тексты есть тем не менее
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708694
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,
типа как из дурака в классе запретить математику изучать. Пусть борются со своей отсталостью.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708717
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Отсталостью? А кто в последние десятилетия регулярно побеждает на олимпиадах прогр/мат ?
Или к примеру объективно известно, что женщины не пользуются мужской логикой. Тоже отсталые? В то же время также объективно по строению мозга мужики ближе к одному из приматов, нежели к женщинам.
Ну не надо же таких аргументов про отсталость в духе кальвинизма, избранных. Тут уж либо крестик, либо шорты.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708732
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708748
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://www.oracle.com/technetwork/products/globalization/efficient-plsql-133329.pdf

Вот еще жирный минус, возможно худший из всех. Нанесен сильный удар по реляционным базам данным, сильно уменьшивший их эффективность.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708755
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New https://www.oracle.com/technetwork/products/globalization/efficient-plsql-133329.pdf

Вот еще жирный минус, возможно худший из всех. Нанесен сильный удар по реляционным базам данным, сильно уменьшивший их эффективность.
Глупости. СУБД это не текст процессор. К тому же никто не запрещает оракулу представить строку ввиде таблицы с индексом
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708773
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewСледовало включить в однобайтовую кодировку и стандартизировать кириллицу. Так к в мире есть два основных алфавита - латиница и кириллица.
1) Кириллица далеко не среди основных (по числу использующих) алфавитов мира, но к технической стороне дела это не относится.
2) Сколько символов латиницы и кириллицы вы включили бы в свою универсальную однобайтовую кодировку? Вам же придется впихнуть туда все, что потребно не только англоязычным с их базовой латиницей, но и немцам, французам, испанцам, финнам, венграм, шведам и проч. То же и с кириллицей: 33 буквами русского алфавита не отделаетесь. И как только вы оставите за пределами стандартизации всю тут публику, которая сейчас благодаря Unicode не имеет проблем с использованием своих систем письменности в компьютеризированной части жизни, вы немедленно получите мировую войну новый комитет по Unicode.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708785
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СУБД это не текст процессор

И ЧО? Просто увеличение места под хранение всех строковых столбцов в два раза. Просто так - раз и база выросла вдвое. Без какой либо выгоды вообще.

Кириллица далеко не среди основных (по числу использующих) алфавитов мира,

Кириллица второй после латиницы мировой алфавит. Славяне - самая многочисленная этническая группа Европы к тому же.
Других алфавитов то и нету. Греческий потерял свое значение, вы даже не сможете прочитать название букв.

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

На кириллицу нужно 66 символов. Даже среди второй половины байтов на всякие дополнения к латинскому остается 61 - туда можно запихнуть 30 букв. А ведь еще в первых 127 символах можно поискать и найти место.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708790
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не думали о том, что потом возможна обратная оптимизация? Когда всем свой английский навяжут, везде поставят, всех приучат а потом скажут - ах, столько лишнего места, сколько лишней нагрузки, давайте ка все лишние байты отбросим и оставим только латиницу в английской версии.

Книг в бумажном виде уже почти не издается.

При моем предложении наш язык был бы прибит гвоздями к мировому стандарту.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708797
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewНа кириллицу нужно 66 символов. Даже среди второй половины байтов на всякие дополнения к латинскому остается 61 - туда можно запихнуть 30 букв. А ведь еще в первых 127 символах можно поискать и найти место.
Ну, если русские никого не угнетают, вам придется признать, что 66 букв на кириллицу не хватит: посмотрите алфавиты славян Европы, а потом еще кириллические алфавиты, используемые неславянской публикой. Посмотрите на «расширенную« латиницу: там больше знаков, чем в «основной» — и всем этим пользуются. А что делать с арабским письмом, которым пользуется раза в два больше народу, чем всей кириллицей?
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708824
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobymayton,
о конкатенации речь не шла вообще.
и она не плохая и не хорошая. Просто операция на строках.
Очень замечтательно хорошая при разумном использовании.

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

Я не очень понял суть вопроса. Интерфейс такой?
Код: java
1.
2.
3.
4.
String fastTransformObjectToLongString(Object objectToTransform) {
      // TODO:
 
}
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708825
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New СУБД это не текст процессор

И ЧО? Просто увеличение места под хранение всех строковых столбцов в два раза. Просто так - раз и база выросла вдвое. Без какой либо выгоды вообще.
База не вырастет вдвое.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708830
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovmaytonЗнаете ...Зачем так много букав?
Классик русской литературы в классическом же четырёхтомнике пишет целые абзацы на французком языке.
Дети, опять-же ...
Не знаю, как сейчас, но раньше, в литературе для детей младшего школьного возраста, принято было расставлять ударения, чтобы ребёнок, которому объяснили в школе, что "эта чёрточка на гласной буквой обозначает ударный слог", мог запоминать правильное произношение (пока) незнакомых слов, просто читая книги.
У меня сейчас появилась идея. В борьбе за позиционную строку мы можем все таки надыбать полтора битика.
Я вспомнил о такой интересной кодировке как Base85. Беря за основание системы счисления число не кратное
два в целой степени мы можем получить более плотное заполнение информацией одного разряда.

Points:

1) Ascii-7 = 128 chars
2) Кириллица = 66 chars
3) Умляуты и всякие французские и прочие символы (кроме корейско-китайских) = ? (сколько их хер ево знает)

Все это суммируем и гоним в систему счисление с некратным основанием. А?

Вот как-то так.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708842
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewЗачем это делать - тема для отдельного обсуждения. В смысле заливать свои исходники на гитхаб. Это же абсурдное действие, полностью против здравого смысла!

Речь не идет о твоей коммерческой деятельности и об исходниках на которых стоит клеймо
корпорации или об исходниках которые несут элемент тайны. Государственной. Бизнесовой и проч.

Ресь о другом.

Если у тебя есть идея. Ты ее просто реализовал. И увидел что она - классная и хочешь ей
поделится со всем миром. (Примерно так как поэт пишет стихи). Ты берешь и выкладываешь
ее в открытый доступ. И дальше - иногда случается чудо. Если сообщество оценило идею
- оно предлагает свои улучшения. И твоя идея начинает дышать и жить своей жизнью.

Так возник к примеру Linux. Не на гитхабе конечно. Но на идеях публичности, и коллаборации.

Гитхаб - это просто одна из имлементаций площадки где можно стартовать публичные проекты.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708846
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovboobyлюбая функция выделения подстроки с пятого по двадцатый символ, там где она может быть построена на индексном доступе против случая, когда не может.Ни одна функция, работающая с символами юникода, не может быть построена на индексном доступе.
Функция, работающая с кодами - может, но проблем в том, что для приложения это слишком низкий и крайне неудобный уровень.
Стоп. Василий. У меня - жесткое дежа-вю. Я помню что ты уже где-то поднимал тему code-points, combining-characters?
И очень сильно отмечал важность этого функционала в строковом API. Или даже не важность а безальтернативность.

Верно?
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708857
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton1) Ascii-7 = 128 chars
2) Кириллица = 66 chars
3) Умляуты и всякие французские и прочие символы (кроме корейско-китайских) = ? (сколько их хер ево знает)
Все это суммируем и гоним в систему счисление с некратным основанием. А?

2) Посмотрите уже, наконец, что не 66 букв надо на кириллицу. Там за сотню точно уйдет.
3) Навскидку, не менее 40 (и этим пользуются).

Я как-то давно попытался выяснить минимальное число символов, потребных для обслуживания русского языка. Получилось 14 (13 букв и модификатор), выглядело дико. Если расширить до 17, можно было легко понять написанное, если зачитывать вслух, зажав нос. Называлось Дурилица.
Но есть идея получше: переводим всех на МФА , который редуцируем до 5 символов изменения тона и общаемся свистом. Правда, язык придется тоже сменить: русский не подойдет. Зато какой выигрыш при индексном доступе.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708863
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton...
Я не очень понял суть вопроса. Интерфейс такой?
Код: java
1.
2.
3.
4.
String fastTransformObjectToLongString(Object objectToTransform) {
      // TODO:
 
}


Давай считать, что по легенде, использовать псевдокод на 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.
Declare
 SUBTYPE T_MAXSTRING is LONG;
 SUBTYPE T_CHAR is Varchar2(1 Char);
 c_filler T_CHAR :='x';  -- символ-заполнитель буфера
 c_input Varchar2(31123) := '123'; -- переменная, определяет максимально допустимую вместимость буфера, заменяемая по месту фактического использования
 c_receiver T_MAXSTRING; -- сюда вернем результат в допустимый размер c_input

  -- функция: формируем строковый буфер указанным символом,
  -- в размер указанного приёмника, не разрушая полученный для теста приемник.
  Function buff_by_stacker( pc_char in T_CHAR       -- этим символом заполнить буфер
                           , pc_stacker IN OUT NOCOPY T_MAXSTRING -- это объект-приёмник, он не должен измениться по завершении процедуры, таков контракт
                          ) Return T_MAXSTRING
  is
    c_src T_MAXSTRING;
    c_temp T_MAXSTRING;    
  Begin 
    c_src := pc_stacker;  -- сохраняем содержимое

    -- ...  здесь код, формирующий c_temp в максимально допустимый размер pc_stacker

    pc_stacker := c_src; -- восстанавливаем тестовый приемник

    Return c_temp; 
  End;                
Begin
  -- использование в "нагруженном цикле"
  For i in 1..1000
  LOOP
    c_receiver := buff_by_stacker( pc_char => c_filler       -- этим символом заполнить буфер
                                , pc_stacker => c_input     -- это объект-приёмник, он не должен измениться по завершении процедуры, таков контракт
                                 );    
  END LOOP;  
  dbms_output.put_line(c_filler ||' '||c_input||' '||substr(c_receiver,1,5)||' '||Length(c_receiver));  
End;
/




Под спойлером код-страшилка, на основании которого ложно умозаключается, что
конкатенация - плохая операция.
Так не надо делать даже маленьким детям, ни за что на свете.
Но код этот писала не конкатенация, а человек, может даже и не маленький.

Требуется оправдать конкатенацию, не используя никаких функций из набора строкового 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.
Declare
 SUBTYPE T_MAXSTRING is LONG;
 SUBTYPE T_CHAR is Varchar2(1 Char);
 c_filler T_CHAR :='x';  -- символ-заполнитель буфера
 c_input T_MAXSTRING := '123'; -- переменная, определяет максимально допустимую вместимость буфера
 c_receiver T_MAXSTRING; -- сюда вернем результат
 
  Function buff_by_stacker( pc_char in T_CHAR       -- этим символом заполнить буфер
                          , pc_stacker IN OUT NOCOPY T_MAXSTRING -- это объект-приёмник, он не должен измениться по завершении процедуры, таков контракт
                          ) Return T_MAXSTRING
  is
    c_src T_MAXSTRING;
    c_temp T_MAXSTRING;
    
  Begin 
    c_src := pc_stacker;  -- сохраняем содержимое
    c_temp := pc_char;
    While True
    LOOP
      Begin
        pc_stacker := c_temp || pc_char;
        c_temp := c_temp || pc_char;
      Exception
        When VALUE_ERROR THEN
        Exit;
      End;
    END LOOP;
    pc_stacker := c_src; -- восстанавливаем тестовый приемник
    Return c_temp; 
  End;                
Begin
  For i in 1..1000
  LOOP
    c_receiver := buff_by_stacker( pc_char => c_filler       -- этим символом заполнить буфер
                                , pc_stacker => c_input     -- это объект-приёмник, он не должен измениться по завершении процедуры, таков контракт
                                 );    
  END LOOP;
  
  dbms_output.put_line(c_filler ||' '||c_input||' '||substr(c_receiver,1,5)||' '||Length(c_receiver));  
  
End;
/

...
Рейтинг: 0 / 0
Юникод и utf8
    #39708868
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ы2, а чем вам не угодила морзянка? { - ; . ; пробел}
И свистите себе на здоровье ... художественным свистом.
...
Рейтинг: 0 / 0
Юникод и utf8
    #39708876
Ы2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Ы2, а чем вам не угодила морзянка? { - ; . ; пробел}
И свистите себе на здоровье ... художественным свистом.
Морзянка кодирует символы другого алфавита сущностями (a-la unicode code-point) переменной длины.
...
Рейтинг: 0 / 0
25 сообщений из 172, страница 3 из 7
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Юникод и utf8
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]