powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень интересны нюанс с оператором switch
25 сообщений из 236, страница 9 из 10
Очень интересны нюанс с оператором switch
    #39985354
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
rdb_dev
нужно, если необходимо построить отношения при пересечении строковых множеств на основе символьного ключа.
Не надо витать в высоких эмпиреях, когда речь идёт о примитивной индексации по элементам фиксированного размера.
Ничто не мешает строить красно-чёрное дерево по ключу произвольной длины - по строкам и делать по ним конъюнкцию множеств один-к-одному или один-ко-многим.

Basil A. Sidorov
В языках программирования это, обычно, "массив". А когда (кто-то) работает с юникодом, то это будет массив кодовых точек. Которые, внезапно, ни разу не символы.
Когда кто-то работает с юникодом и требуется сортировка строк с вариативной настройкой по CS/CI;AS/AI;LS/LI, то используется библиотека libicu для получения ключа сортировки - последовательности байт, определяющей положение элемента в списке сортировки.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985364
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby

Понятно, что когда-то начиналось с того, что сейчас называют UCS-2.
Потом долепились составные символы и получился UTF-16.
Так как составные символы "практически никому не нужны" и "интерфейс charAt трогать нельзя",
то работа с кодепойнтами прилепилась нашлепкой - "если кому надо, за практическую константу со всем разберутся".

Нет, совершенно странное представление. Составные символы, accent mark, разные control char и прочее были с самого начала Unicode

но вот кодовое пространство для всех вообще символов, определили в 2 байта - "65 536 кодов должно хватить всем" )))

но, как быстро оказалось, не хватило. И "wide char" легким движением руки... преврашается... преврашается... в UTF-16 ))) т.е. совершенно НЕ wide char

IMHO & AFAIK
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985369
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevИ "wide char" легким движением руки... преврашается... преврашается... в UTF-16 ))) т.е.
совершенно НЕ wide char

....а потом подавляющее большинство программистов довольствуются тем, что он обратно
совместим с интересным ИМ диапазоном символов и забивают на всё стальное. То есть
повторяется история с char, превратившимся в UTF-8, когда все знают, что шаг влево-шаг
вправо карается расстрелом, но делать полную и правильную поддержку - всем лень. Отсюда и
рождаются топики petrav-а.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985374
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ну да, это общая проблема жизненного цикла интерфейсов,
когда "дописывать после default" приходится, потому что никто не берет на себя задачу, как "вставиться в середину"
(она и не решаема обычно толком, без выбрасывания всего нажитого непосильным трудом).

вот utf-16 и "вставился" в ucs-2, как сумел, и старые интерфейсы "сохранил", а новые, по вашим словам - "не символы"
(с чем я не согласен, но это не имеет значения)

Почитал сейчас первоначальный пропозал на то, что потом стало utf-8, в то время, когда ucs еще не знал, что такое составные символы.
Похоже текст опирается на одобренную консорциумом статью Кена Томпсона, текст которой я не нашел.
Похоже Томпсон и привнёс самое понятие составной кодировки, прилетевшей позже в ucs бумерангом.

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

http://www.open-std.org/Jtc1/sc22/WG20/docs/N193-FSS-UTF.pdf
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985382
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFFTOPIC Решил погуглить Java doc. Раз уж тут Java упоминули:

Вообще, отстой какой-то (((, как и предполагалось. Всегда считал String жутко дебильным классом ((( Вполне могли бы сделать нормальный интератор, что бы
for ( int ch : myString )
обеспечивал бы корректный проход по строке.

note 1: проверил, for ни с char, ни с int по String пробежать не может. foreach для строк не поддерживается. Ну не бред ли? Сложно было интератор для строки прикрутить?
note 2: даже официальный tutorial
https://docs.oracle.com/javase/tutorial/java/data/manipstrings.html
учит ходить по строкам с помощью индексов и charAt
ну и кто урод? (((


В последних версиях добавили

IntStream chars​()

Returns a stream of int zero-extending the char values from this sequence. Any char which maps to a surrogate code point is passed through uninterpreted.

Class Character

Unicode Character Representations

The char data type (and therefore the value that a Character object encapsulates) are based on the original Unicode specification, which defined characters as fixed-width 16-bit entities. The Unicode Standard has since been changed to allow for characters whose representation requires more than 16 bits. The range of legal code points is now U+0000 to U+10FFFF, known as Unicode scalar value. (Refer to the definition of the U+n notation in the Unicode Standard.)

The set of characters from U+0000 to U+FFFF is sometimes referred to as the Basic Multilingual Plane (BMP). Characters whose code points are greater than U+FFFF are called supplementary characters. The Java platform uses the UTF-16 representation in char arrays and in the String and StringBuffer classes. In this representation, supplementary characters are represented as a pair of char values, the first from the high-surrogates range, (\uD800-\uDBFF), the second from the low-surrogates range (\uDC00-\uDFFF).

A char value, therefore, represents Basic Multilingual Plane (BMP) code points, including the surrogate code points, or code units of the UTF-16 encoding. An int value represents all Unicode code points, including supplementary code points. The lower (least significant) 21 bits of int are used to represent Unicode code points and the upper (most significant) 11 bits must be zero. Unless otherwise specified, the behavior with respect to supplementary characters and surrogate char values is as follows:

The methods that only accept a char value cannot support supplementary characters. They treat char values from the surrogate ranges as undefined characters. For example, Character.isLetter('\uD840') returns false, even though this specific value if followed by any low-surrogate value in a string would represent a letter.
The methods that accept an int value support all Unicode characters, including supplementary characters. For example, Character.isLetter(0x2F81A) returns true because the code point value represents a letter (a CJK ideograph).
In the Java SE API documentation, Unicode code point is used for character values in the range between U+0000 and U+10FFFF, and Unicode code unit is used for 16-bit char values that are code units of the UTF-16 encoding. For more information on Unicode terminology, refer to the Unicode Glossary.


class String
int codePointAt(int index)
Returns the character (Unicode code point) at the specified index.

int indexOf(String str)
Returns the index within this string of the first occurrence of the specified substring.



но делать полную и правильную поддержку - всем лень. Отсюда и
рождаются топики petrav-а.
Так нормальную поддержку должны были бы сделать авторы языка/фреймворка, а не каждый программист самостоятельно пилить (((

Сначала насоздавали ненужных абстракций типа CharSequence непонятно зачем (единственный результат данной абстракии - тормозить на любом чихе), а как возникает задача банально обойти строку (классический интератор, б#$%^) тут один сплошной ВигВам.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985388
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevТак нормальную поддержку должны были бы сделать авторы языка/фреймворка

Так я про них и говорю. Что GLIBC, что WinAPI, что прочие RTL со старыми функциями
обращаются в стиле "работает - не трожь".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985392
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Leonid KudryavtsevТак нормальную поддержку должны были бы сделать авторы языка/фреймворка

Так я про них и говорю. Что GLIBC, что WinAPI, что прочие RTL со старыми функциями
обращаются в стиле "работает - не трожь".

А я про Java 9 ((( которую "со старыми функциями" назвать как-то сложно.

Unicode 2.0 это Июль 1996 (по русской википедии), а сейчас 2020
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985393
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Сложно было интератор для строки прикрутить?
Сложно .
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985395
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Ничто не мешает строить красно-чёрное дерево
Ещё раз - не надо витать в высоких эмпиреях.
Всё, чего хочет petrav - массив кодов, который будет совпадать с массивом символов.
Это другая концепция и сейчас уже можно вполне уверенно утверждать, что эту концепцию похоронила жизнь.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985397
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подумал сейчас вот что:
Конструктивный подход, это всегда комбинация нежелания разговаривать с нежеланием переделывать.
То, что получается в итоге, называют инженерным решением.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985406
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть тоже мысль. Многие решения из тех которые не были удачны с инженерной точки зрения - внезапно внедрились
и работают. Возможно практика применения - слабо избирательна по отношению к инженерной эстетике.

Пример. Архитектура x86 . Крайне неудачная. Мало регистров широкого назначения. Практически только EAX. Все
остальные - узкой специализации. Нелепая сегментная адресация. Нахрена она нужна - непонятно.

Еще пример. Ядро Microsot Windows. Крайне неудачный API. Сравните функцию CreateFile(...) ее определение
и назначение параметров и функцию Unix open(..). Это земля и небо. Уродство против лаконичности.

И еще пример - файловые системы MS с точки зрения дизайна. Эти нелепые имена дисков. C:,D:...
Эта регистровая толерантность. Эти странные резервированные имена. NULL, COM, LPT. Эти нелепые симлинки
на директории. (Почему файлы не поддержали?). Эти перевернутые слеши.

Вобщем это все решения которые к моему вящему ужасу - удачно внедрились. Хотя смотреть на низ без слёз
невозможно. В них нет инженерной эстетики. Как знаете. Смотрите на какой-то механизм. И душа радуется.
Красиво. А бывает возьмешь другой... и видешь.. нагромождение заплаток и историю переделок.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985408
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Архитектура x86 ..... Нелепая сегментная адресация. Нахрена она нужна - непонятно.

I8086 наследник I8080 ( СССР K580ВМ80, Z80 )
памяти 64 Kb было мало, сделали "640 Kb должно хватить всем" ( C )

mayton

И еще пример - файловые системы MS с точки зрения дизайна. Эти нелепые имена дисков. C:,D:...
Эта регистровая толерантность. Эти странные резервированные имена. NULL, COM, LPT.
...Эти перевернутые слеши....


ВикипедияCP/M
...
Во второй половине 1970-х годов была наиболее популярной системой для компьютеров на базе Intel 8080 и Zilog Z80, позднее была вытеснена MS-DOS[⇨]. Стала основой операционной системы DR-DOS (1988).


удачно внедрились...
.. нагромождение заплаток и историю переделок...
...смотреть на низ без слёз невозможно
no comment. Ответ и так очевиден. Если удалить лишнее и переставить местами в порядке причинно-следственной связи. IMHO
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985409
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСравните функцию CreateFile(...) ее определение
и назначение параметров и функцию Unix open(..). Это земля и небо. Уродство против
лаконичности

Крайне неудачный пример. CreateFile() имеет такой функционал, который для open() не
обещают даже в следующем ядре. Достаточно упомянуть только FILE_ATRIBUTE_TEMPORARY и
FILE_FLAG_DELETE_ON_CLOSE. И это ещё придётся забыть, что для open() имя файла это всё ещё
просто кучка байт, которая сохраняется в файловой системе "как есть", что делает
использование файла из двух программ с разными локалями весьма забавным аттракционом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Тебе удобно использовать CreateFile ?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985434
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Dimitry Sibiryakov,

Тебе удобно использовать CreateFile ?

А что там неудобного?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985440
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Dimitry Sibiryakov,

Тебе удобно использовать CreateFile ?

А что там неудобного?

Чувак! Функция с семью! Семью аргументами, Карл! Это что за дизайн вообще?
Мне чтобы открыть существующий бинарный файл на чтение нужно 3 аргумента. Это путь файла.
Режимы открытия (маска). И маска привилегий (опционально) если нужно создавать новый.

Да еслиб тебе на собеседовании кто-то придумал такую функцию - ты должен был его
за руку схватить. Остановить. Сказать - что ты вообще дизайнишь? Тебе.... это все... зачем?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985443
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТебе удобно использовать CreateFile ?

Да. Более того, я его и под линуксом использую. Но вот с вышеназванными флагами под
линухом напряг. Delete-on-close эмулируется исключительно криво через удаление сразу после
открытия, что не позволяет совместное использование временного файла, а на приоритеты
кэширования нельзя повлиять в сторону увеличения вообще никак.

То есть всё, что может open(), можно эмулировать через CreateFile(), но не наоборот. И это
ясно показывает кто чьё жалкое подобие.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985444
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМне чтобы открыть существующий бинарный файл на чтение нужно 3 аргумента.

И ещё два-три вызова совершенно левых функций чтобы установить недостающие флаги
дескриптора, файла и совместного доступа. "Поздравляю, Шарик."
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985447
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вы ребята, мозохисты.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985453
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Еще пример. Ядро Microsot Windows. Крайне неудачный API. Сравните функцию CreateFile(...) ее определение
и назначение параметров и функцию Unix open(..). Это земля и небо. Уродство против лаконичности.

И еще пример - файловые системы MS с точки зрения дизайна. Эти нелепые имена дисков. C:,D:...
Эта регистровая толерантность. Эти странные резервированные имена. NULL, COM, LPT. Эти нелепые симлинки
на директории. (Почему файлы не поддержали?). Эти перевернутые слеши.
Вообще не понимаю - нафига весь этот зоопарк, если в конечном итоге всё вырождается в концепцию all-is-database, а всё остальное - все эти pipes, streams, концепции all-is-file и т.д., лишь жрущие ресурсы и увеличивающие латентность прокладки.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985495
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pipes - вполне себе полезная штука.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985500
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

"Поздравляю, Шарик."

Эй. Это было обидно. И необоснованно. Может обоснуешь?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985522
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМожет обоснуешь?

Обосновать, что один ядерный вызов быстрее трёх и не подвержен гонкам потоков? Это, как
бы, очевидно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985553
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

maytonМожет обоснуешь?

Обосновать, что один ядерный вызов быстрее трёх и не подвержен гонкам потоков? Это, как
бы, очевидно.

Мой знакомый доцент математики говорил что когда говорят "этож очевидно" - в ответ надо бить в морду.



Кому-то очевидно что белые люди должны ставать на колени перед неграми и каяться за все свои
коллонизаторские деяния в прошлом. Мне вот - неочевидно.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39985561
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМой знакомый доцент математики говорил что когда говорят "этож очевидно" - в ответ надо
бить в морду.

Он точно математик? У них половина доказательств теорем так делается.

Неверующие могут открыть "man 3 open" и прочитать список его флагов. Обращая особое
внимание на те, у которых написано "делает то же самое, что флаг Х функции У" и версию в
которой они появились.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 236, страница 9 из 10
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень интересны нюанс с оператором switch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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