|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov rdb_dev нужно, если необходимо построить отношения при пересечении строковых множеств на основе символьного ключа. Basil A. Sidorov В языках программирования это, обычно, "массив". А когда (кто-то) работает с юникодом, то это будет массив кодовых точек. Которые, внезапно, ни разу не символы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 15:24 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Понятно, что когда-то начиналось с того, что сейчас называют UCS-2. Потом долепились составные символы и получился UTF-16. Так как составные символы "практически никому не нужны" и "интерфейс charAt трогать нельзя", то работа с кодепойнтами прилепилась нашлепкой - "если кому надо, за практическую константу со всем разберутся". Нет, совершенно странное представление. Составные символы, accent mark, разные control char и прочее были с самого начала Unicode но вот кодовое пространство для всех вообще символов, определили в 2 байта - "65 536 кодов должно хватить всем" ))) но, как быстро оказалось, не хватило. И "wide char" легким движением руки... преврашается... преврашается... в UTF-16 ))) т.е. совершенно НЕ wide char IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 15:41 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevИ "wide char" легким движением руки... преврашается... преврашается... в UTF-16 ))) т.е. совершенно НЕ wide char ....а потом подавляющее большинство программистов довольствуются тем, что он обратно совместим с интересным ИМ диапазоном символов и забивают на всё стальное. То есть повторяется история с char, превратившимся в UTF-8, когда все знают, что шаг влево-шаг вправо карается расстрелом, но делать полную и правильную поддержку - всем лень. Отсюда и рождаются топики petrav-а. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 15:55 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну да, это общая проблема жизненного цикла интерфейсов, когда "дописывать после default" приходится, потому что никто не берет на себя задачу, как "вставиться в середину" (она и не решаема обычно толком, без выбрасывания всего нажитого непосильным трудом). вот utf-16 и "вставился" в ucs-2, как сумел, и старые интерфейсы "сохранил", а новые, по вашим словам - "не символы" (с чем я не согласен, но это не имеет значения) Почитал сейчас первоначальный пропозал на то, что потом стало utf-8, в то время, когда ucs еще не знал, что такое составные символы. Похоже текст опирается на одобренную консорциумом статью Кена Томпсона, текст которой я не нашел. Похоже Томпсон и привнёс самое понятие составной кодировки, прилетевшей позже в ucs бумерангом. Так вот ни на какой отъем у программиста прав работы с двухбайтными кодировками не претендуется. Вы там работайте, как вам заблагорассудится, а с файловой системой обходитесь, пожалуйста, вот так... http://www.open-std.org/Jtc1/sc22/WG20/docs/N193-FSS-UTF.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 16:21 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
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 непонятно зачем (единственный результат данной абстракии - тормозить на любом чихе), а как возникает задача банально обойти строку (классический интератор, б#$%^) тут один сплошной ВигВам. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 16:49 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevТак нормальную поддержку должны были бы сделать авторы языка/фреймворка Так я про них и говорю. Что GLIBC, что WinAPI, что прочие RTL со старыми функциями обращаются в стиле "работает - не трожь". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 17:09 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Leonid KudryavtsevТак нормальную поддержку должны были бы сделать авторы языка/фреймворка Так я про них и говорю. Что GLIBC, что WinAPI, что прочие RTL со старыми функциями обращаются в стиле "работает - не трожь". А я про Java 9 ((( которую "со старыми функциями" назвать как-то сложно. Unicode 2.0 это Июль 1996 (по русской википедии), а сейчас 2020 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 17:18 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Сложно было интератор для строки прикрутить? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 17:31 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev Ничто не мешает строить красно-чёрное дерево Всё, чего хочет petrav - массив кодов, который будет совпадать с массивом символов. Это другая концепция и сейчас уже можно вполне уверенно утверждать, что эту концепцию похоронила жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 17:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Подумал сейчас вот что: Конструктивный подход, это всегда комбинация нежелания разговаривать с нежеланием переделывать. То, что получается в итоге, называют инженерным решением. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 17:42 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Есть тоже мысль. Многие решения из тех которые не были удачны с инженерной точки зрения - внезапно внедрились и работают. Возможно практика применения - слабо избирательна по отношению к инженерной эстетике. Пример. Архитектура x86 . Крайне неудачная. Мало регистров широкого назначения. Практически только EAX. Все остальные - узкой специализации. Нелепая сегментная адресация. Нахрена она нужна - непонятно. Еще пример. Ядро Microsot Windows. Крайне неудачный API. Сравните функцию CreateFile(...) ее определение и назначение параметров и функцию Unix open(..). Это земля и небо. Уродство против лаконичности. И еще пример - файловые системы MS с точки зрения дизайна. Эти нелепые имена дисков. C:,D:... Эта регистровая толерантность. Эти странные резервированные имена. NULL, COM, LPT. Эти нелепые симлинки на директории. (Почему файлы не поддержали?). Эти перевернутые слеши. Вобщем это все решения которые к моему вящему ужасу - удачно внедрились. Хотя смотреть на низ без слёз невозможно. В них нет инженерной эстетики. Как знаете. Смотрите на какой-то механизм. И душа радуется. Красиво. А бывает возьмешь другой... и видешь.. нагромождение заплаток и историю переделок. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:13 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:27 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonСравните функцию CreateFile(...) ее определение и назначение параметров и функцию Unix open(..). Это земля и небо. Уродство против лаконичности Крайне неудачный пример. CreateFile() имеет такой функционал, который для open() не обещают даже в следующем ядре. Достаточно упомянуть только FILE_ATRIBUTE_TEMPORARY и FILE_FLAG_DELETE_ON_CLOSE. И это ещё придётся забыть, что для open() имя файла это всё ещё просто кучка байт, которая сохраняется в файловой системе "как есть", что делает использование файла из двух программ с разными локалями весьма забавным аттракционом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 18:28 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Тебе удобно использовать CreateFile ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 20:03 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Dimitry Sibiryakov, Тебе удобно использовать CreateFile ? А что там неудобного? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 20:25 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav mayton Dimitry Sibiryakov, Тебе удобно использовать CreateFile ? А что там неудобного? Чувак! Функция с семью! Семью аргументами, Карл! Это что за дизайн вообще? Мне чтобы открыть существующий бинарный файл на чтение нужно 3 аргумента. Это путь файла. Режимы открытия (маска). И маска привилегий (опционально) если нужно создавать новый. Да еслиб тебе на собеседовании кто-то придумал такую функцию - ты должен был его за руку схватить. Остановить. Сказать - что ты вообще дизайнишь? Тебе.... это все... зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 21:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonТебе удобно использовать CreateFile ? Да. Более того, я его и под линуксом использую. Но вот с вышеназванными флагами под линухом напряг. Delete-on-close эмулируется исключительно криво через удаление сразу после открытия, что не позволяет совместное использование временного файла, а на приоритеты кэширования нельзя повлиять в сторону увеличения вообще никак. То есть всё, что может open(), можно эмулировать через CreateFile(), но не наоборот. И это ясно показывает кто чьё жалкое подобие. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 22:08 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonМне чтобы открыть существующий бинарный файл на чтение нужно 3 аргумента. И ещё два-три вызова совершенно левых функций чтобы установить недостающие флаги дескриптора, файла и совместного доступа. "Поздравляю, Шарик." Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 22:11 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Да вы ребята, мозохисты. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 22:38 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Еще пример. Ядро Microsot Windows. Крайне неудачный API. Сравните функцию CreateFile(...) ее определение и назначение параметров и функцию Unix open(..). Это земля и небо. Уродство против лаконичности. И еще пример - файловые системы MS с точки зрения дизайна. Эти нелепые имена дисков. C:,D:... Эта регистровая толерантность. Эти странные резервированные имена. NULL, COM, LPT. Эти нелепые симлинки на директории. (Почему файлы не поддержали?). Эти перевернутые слеши. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 02:16 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Pipes - вполне себе полезная штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 11:07 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov "Поздравляю, Шарик." Эй. Это было обидно. И необоснованно. Может обоснуешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 11:22 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonМожет обоснуешь? Обосновать, что один ядерный вызов быстрее трёх и не подвержен гонкам потоков? Это, как бы, очевидно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 12:37 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonМожет обоснуешь? Обосновать, что один ядерный вызов быстрее трёх и не подвержен гонкам потоков? Это, как бы, очевидно. Мой знакомый доцент математики говорил что когда говорят "этож очевидно" - в ответ надо бить в морду. Кому-то очевидно что белые люди должны ставать на колени перед неграми и каяться за все свои коллонизаторские деяния в прошлом. Мне вот - неочевидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 14:11 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonМой знакомый доцент математики говорил что когда говорят "этож очевидно" - в ответ надо бить в морду. Он точно математик? У них половина доказательств теорем так делается. Неверующие могут открыть "man 3 open" и прочитать список его флагов. Обращая особое внимание на те, у которых написано "делает то же самое, что флаг Х функции У" и версию в которой они появились. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 14:18 |
|
|
start [/forum/topic.php?fid=57&msg=39985395&tid=2017371]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 154ms |
0 / 0 |