|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Есть возможность проверить себя и без отладчика сообразить, что делает этот код? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Это же за гранью добра и зла. Впервые сегодня увидел такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2020, 21:03 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
В С много такой гадости, С изобретали не в угоду читабельности, все было направлено на производительность, тогда это было актуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2020, 21:10 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Это же за гранью добра и зла. Впервые сегодня увидел такое. Почему впервые? Duff's device много раз сюда постили. Это по сути оно же. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2020, 22:14 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky petrav Это же за гранью добра и зла. Впервые сегодня увидел такое. Почему впервые? Duff's device много раз сюда постили. Это по сути оно же. Я только что впервые узнал о таком устройстве. Я вот тут думал, а как такую конструкцию вообще объяснить на словах? Она же абсурдна. И догадался. Я всегда воспринимал оператор switch как расширенный if / else с нюансом, что без break мы переходим в следующую ветку. А такое восприятие неверно. Операторы case / default нужно воспринимать как метки для оператора goto. А оператор switch — это условный оператор goto. И всё встаёт на свои места. Конструкция становится логичной и простой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2020, 23:09 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
если в Duff's device использование приема оправдано, то в коде выше это действительно на грани добра и зла :) (я не знала, что switch так работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 01:20 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, на спичках экономят! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:25 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
do ... while (false) - лишний. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 10:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mini.weblab если в Duff's device использование приема оправдано, то в коде выше это действительно на грани добра и зла :) (я не знала, что switch так работает) В некоторых командах есть соглашение о том что пустые секции default или объединённые case - маркируются специальным поясняющим комментарием о том что дескыть так и надо и здесь нет ошибки разработчика. Потому-то со стороны да. Выглядит как будто просто завтык. А в данном исходнике я-бы просто отказался от switch в пользу if-else. Switch - это оператор варианта. А зачем нужен вариант без вариантов. Просто выглядит как воцафак и просто неряшливость. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:18 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonВ некоторых командах есть соглашение о том что пустые секции default или объединённые case - маркируются специальным поясняющим комментарием о том что дескыть так и надо и здесь нет ошибки разработчика. Более того, современные версии GCC выдают предупреждение, если такового комментария или соотвествующего C++17 атрибута нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:24 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
И я думаю что утилиты статического анализа такие как Sonar/PVS здесь просто должны выбросить алерт. Может не critical, но тем не меннее какой-то важности чтоб обратить внимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 13:56 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Switch - это оператор варианта... Нет конечно , не совсем так. В том смысле, в каком под оператором варианта подразумевается структурированный оператор с единственной веткой выбора. if elsif else - можно было бы поназывать вариантом "оператора варианта" (если не использовать возможности "побочных действий", таких как в стартовом примере, ломающих его до неструктурированного), а switch - нет , без специальных услилий программиста, специально выписывающего switch в сограсованном со структурным программированием стиле . Если, например, цикл целиком состоит из единственного структурированного if elsif else, то он и глазами и компилятором, потенциально, может анализироваться на тему своей завершаемости, или иных соображений, обеспечивающих формальное доказательство правильности цикла. То есть, если в цикле есть набор охран, за каждой из которых своя команда выполнения, то "традиционный анализ" требует единственного срабатывания только одной из охран, даже если по состоянию цикла могло бы сработать несколько. Это существенно используется в формальных доказательствах правильности построения цикла. На цикле, внутри которого сишный switch, такой анализ в своей первоначальной постановке просто не работает, если существуют неразделенные break-ом охраняемые команды. (Правда, на if с побочным действием тоже далеко не разбежишься) В Си switch аналог неструктурированных фортрановых вычислимых или присвоенных goto и/или vba-шного On expression GOTO line, но со своим блекджеком в виде произвольного местоположения default. mayton А зачем нужен вариант без вариантов. В VBA можно сказать, что нигде не нужен, потому что, кроме неструктурированного On expression GOTO line, там есть структурированный Select case, которому прямо в ветке можно указать список значений или диапазон Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В Си ты должен выписать столько "пустых" case, сколько элементов в "списке выбора", приводящему к единственному действию. --- В стартовом примере заявленные случаи должны попасть внутрь ветки if с побочным действием, который находится внутри default секции. Это не сложно, потому что if целиком положен внутрь switch, но заштукатуренному структурным программированием мозгу надо приглядеться. А "устройство Даффа" выносит мозг наверно каждому, кто видит его первый раз, именно пересечением - там switch начат до начала цикла, а цикл закончен после завершения switch. Ну, это особенность синтаксиса. Ни на фортране, ни на бейсике такое устройство мозг не взорвет с их неструктурированными goto. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 15:53 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Мне нравился-бы вариант в котором в case-секциях стоит функция или предикат. И при этом работает охранная логика исполнения первого условия которое вышло в true. А не константа как в большинстве use-cases. Пример: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 17:24 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton, чего-то похожего для expression можно добиваться вложениями условного оператора ? И выглядеть будет похоже: Код: plaintext 1. 2. 3.
для statement, вероятно считается - зачем заменять if, если и так работает... Хотя, есть для statement в "некоторых языках" соглашение о полноте вариантов выбора, то есть, либо должен быть выписан явный else, либо, когда его нет, и по текущему состоянию вычисления нет явной ветки для выбора, то система должна генерировать ошибку времени выполнения. Это, бывает, явно эксплуатируют... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 18:09 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby, ну ты согласен что switch накладывает слишком много ограничений на use-case аргумента? Это вроде контракт на неизменяемость условий с тех пор как мы вошли в секцию switch. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2020, 20:05 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton booby, ну ты согласен что switch накладывает слишком много ограничений на use-case аргумента? Это вроде контракт на неизменяемость условий с тех пор как мы вошли в секцию switch. Похоже, что в такой формулировке я не понимаю, с чем соглашаться, а с чем нет. "изменяемость" или "не изменяемость" "условий" не имеет самостоятельного значимого для switch контекста, после того как решение о переходе на конкретную метку уже принято. До морковкиного заговения можно обсуждать - важно или нет - изменилось ли состояние переменной, по значению которой мы оказались "здесь" , если мы уже здесь . И должно ли после принятия решения оно оказываться "здесь" проверяемо "тем же", что и "до принятия решения". Насчет "много ограничений" - не вижу этого - требуется значение, приводимое к целочисленному виду. Скажем так, как на самый первый взгляд, это даже свободнее вариантов, настаивающих на логическом значении в каждой ветке. Более того, я даже не знаю, ставится ли, и какое, формальное ограничение на число веток. Basic, как счастливо взял от фортрана 255 как максимум, так и живет с этим. Подозреваю, что для Си этот вопрос, почти традиционно, отдаётся на усмотрение реализации. Короче, для своего времени - зашибись конструкция. Но следования "канонам" структурного программирования никто не обещал. Пропессорские выдумки о том, как студенты должны писать программы, пожалуйста, в одну корзину, а мучения взрослых инженеров со положенными на них (или взятыми добровольно на себя) обязательствами о том, как и на чем им прямо сейчас на самом деле писать - придется складывать в другую. Прямо-таки почти навязывается встречный вопрос - должны ли мы немедленно вспомнить о господине Гослинге, например, озаботившемуся вопросом реорганизации рабкрина неправильного языка в правильный для каждого браузера, да более того - вообще для всего интернета. Или пришло-таки время вспомнить о ржвачине... Если серьёзно - не трожьте (в смысле не судите) Си лапками, замаранными структурным программированием. А вот как именно и почему точно о вопросе структурированного оператора выбора не заботится C++ - это малёк за рамками моей компетенции. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2020, 00:42 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
На языке условного ассемблера алгоритм выглядит примерно так: Код: asm 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2020, 10:40 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_devпримерно так Авотхрен. Если список вариантов плотный, то он выглядит как одна команда "jmp table[al]". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2020, 12:13 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, финты ушами оптимизации не принципиальны. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2020, 13:14 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
По поводу инженеришки Гослинга и его JVM байткодов (опкодов). Есть отдельная инструкция tableswitch (0xAA) . По сути представляет аргументами case-константы и jump-offsets куда надо прыгнуть. Вобщем-то и всё. Современные сборочные конструкции со строками в switch возможно уже собираются как-то по другому. На условных переходах. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2020, 13:35 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Кей Хорстман на Joker сетует об отсутствии expression для multi-way branch. Якобы для if-else есть а для switch нету. Упоминает о дихотомическом поиске для switch jump table. И о sequental для patterns. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2020, 23:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Хрень какая-то! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 05:28 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
SQL2008, где хрень?! Там всё отлично! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 10:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Если принять во внимание пост Буби и также тот факт что Си считается портабельным ассемблером, то в нем (ассемблере) можно сделать ВСЁ! Тоесть располагать ключевые слова языка в любом порядке для достижения цели. Также как и __asm мнемоники вы можете располагать как угодно лишь-бы работало. И никто вас не покритикует. И мы имеем дело с архаизмом. И хотя мой консервативный мозг смотрит в сторону большей строгости и чеков в фазе компилляции я готов махнуть рукой на этот стиль и просто согласиться с тем что разработчики Bell Labs были первопроходцами и решали насущные проблемы разработки операционок и телефонного софта. Для них стиль стоял не на первом месте, хотя для нас сегодня, измученных нарзаном PSV-Studio и Сонаром такой подход кажется немыслимым кощунством. По сути смысл обсуждения должен быть таков. >> Оправдывает ли такое резкое использование синтаксиса полезные эффекты и оптимизации ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 11:20 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton >> Оправдывает ли такое резкое использование синтаксиса полезные эффекты и оптимизации ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 12:21 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev mayton >> Оправдывает ли такое резкое использование синтаксиса полезные эффекты и оптимизации Как часто такое бывает в практике современного С/C++ разработчика? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 12:53 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton, в практике прикладника, возможно, никогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 12:57 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev SQL2008, где хрень?! Там всё отлично! Хрень в том, что после обработки default идут обработчики case! И после default должен быть break. Хотя если он стоит последним, как принято, то может break и не нужен. Хотя я всегда пишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 17:20 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
SQL2008, кто тебе сказал такую глупость? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 17:50 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Вот блин. Я же простой вопрос спросил. Как часто. А мне ответили - как Одессе. Давайте оценим % соотношений прикладников и НЕ-прикладников. Заметьте... я следую парадоксу ложной дихтомии и употребляю тактичный термин НЕ-прикладник имея в виду всех оставшихся. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 17:58 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton, Как часто - не знаю, но одно с уверенностью могу сказать - такая фича понадобиться с вероятностью 100%! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 18:27 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev mayton, Как часто - не знаю, но одно с уверенностью могу сказать - такая фича понадобиться с вероятностью 100%! Ну... хорошо. Я готов согласиться что когда-то кому-то она вдруг понадобиться. А не достаточно ли нам будет __asm секции для решения этой проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 18:37 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton, малопортабельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 18:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
А закладываться на то, что у всех процессоров одинаковый конвейер - портабельно, значит??? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 18:45 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton /// Для них стиль стоял не на первом месте, хотя для нас сегодня, измученных нарзаном PSV-Studio и Сонаром такой подход кажется немыслимым кощунством. думать им приходилось обо всем разом . И о портабельности, и о компактности получаемого кода, и об эффективности как результата компиляции, так и работы программиста. Может быть ты не поверишь, но и о культуре сопровождения кода в большой корпорации тоже. У Кернигана можно найти упоминание о том, произвольность местоположения default была выбрана сознательно , в расчете на то, что при возникновении необходимости дописывать что-то в существующий switch, корпоративные программисты хотели бы и будут размещать новые ветки ниже уже существующих, а не произвольным образом втыкивать их между старыми, превращая старый код в неузнаваемый. mayton >> Оправдывает ли такое резкое использование синтаксиса полезные эффекты и оптимизации А в чем резкость? Если не является резкостью отсутствие break после каждой ветки, почему его отсутствие после default - обычной, по сути метки, за малой оговоркой, среди прочих - смущает? Все как для прочих меток - может быть break, а может и нет. Стартовый код прост как палка: для набора значений, известных как "хорошие случаи" просто goto на метку return True. Иначе провести доп проверку (с побочным действием) и решить - true оно return или нет. При этом нет сомнения, что студент за такой код должен быть немедленно отчислен. :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 19:05 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
boobyУ Кернигана можно найти упоминание о том, произвольность местоположения default была выбрана /сознательно/, в расчете на то, что при возникновении необходимости дописывать что-то в существующий switch, корпоративные программисты хотели бы и будут размещать новые ветки ниже уже существующих, а не произвольным образом втыкивать их между старыми, превращая старый код в неузнаваемый. А некоторые советуют размещать ветки в порядке возрастания значений. Это, якобы, позволяет компилятору генерировать более оптимизированный код... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 19:09 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Стартовый код прост как палка: для набора значений, известных как "хорошие случаи" просто goto на метку return True. Иначе провести доп проверку (с побочным действием) и решить - true оно return или нет. Если говорить о switch, то там набор запрещённых значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 19:30 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Может быть ты не поверишь, но и о культуре сопровождения кода в большой корпорации тоже. У Кернигана можно найти упоминание о том, произвольность местоположения default была выбрана сознательно , в расчете на то, что при возникновении необходимости дописывать что-то в существующий switch, корпоративные программисты хотели бы и будут размещать новые ветки ниже уже существующих, а не произвольным образом втыкивать их между старыми, превращая старый код в неузнаваемый. Да уж, специфические были у Кернигана представления о корпоративных программистах. Типа о читабельности кода вообще не заботятся, а просто будут вкорячивать новые case в конец списка. Хули там думать, код писать нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 19:33 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov boobyУ Кернигана можно найти упоминание о том, произвольность местоположения default была выбрана /сознательно/, в расчете на то, что при возникновении необходимости дописывать что-то в существующий switch, корпоративные программисты хотели бы и будут размещать новые ветки ниже уже существующих, а не произвольным образом втыкивать их между старыми, превращая старый код в неузнаваемый. А некоторые советуют размещать ветки в порядке возрастания значений. Это, якобы, позволяет компилятору генерировать более оптимизированный код... А как это переводится на человечий язык? неужто кто-то из компиляторов двоичный поиск по таблице значений реализует? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:21 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov А закладываться на то, что у всех процессоров одинаковый конвейер - портабельно, значит??? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:22 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby А как это переводится на человечий язык? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:30 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, сдаётся, у вас теоретические представления о читабельности реального "промышленного" прикладного кода, сроком жизни хотя бы лет в 15-20 и непрерывно изменяемого при этом... Не трожь писанное не тобой, дописывай в конец - замечательной осторожности принцип для применения в жизненном цикле эпических прикладных непрерывно развиваемых промышленных поэм... Это сейчас в моде "рефакторинг" до степени не узнавания родной мамой со свистелками и перделками. А в традиционной промышленности, после того, как изначальный код написан и программист уволился - никто не знает , что там делается. Тронешь - убьёт, без резиновых сапог - не входи. Допиши и подпишись, чтобы у табе потом интересовались, пока ты жив, что на твоём участке делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:32 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev booby А как это переводится на человечий язык? Нет. Порядок следования вариантов никак не может изменить эффективность индексированного доступа к элементам таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby petrav, сдаётся, у вас теоретические представления о читабельности реального "промышленного" прикладного кода, сроком жизни хотя бы лет в 15-20 и непрерывно изменяемого при этом... Не трожь писанное не тобой, дописывай в конец - замечательной осторожности принцип для применения в жизненном цикле эпических прикладных непрерывно развиваемых промышленных поэм... Это сейчас в моде "рефакторинг" до степени не узнавания родной мамой со свистелками и перделками. А в традиционной промышленности, после того, как изначальный код написан и программист уволился - никто не знает , что там делается. Вы только что описали крайне низкоквалифицированную команду. Без вариантов. Я сам работаю в промышленности и наблюдаю системы, которые и по 30-ть лет развиваются. И да, гавнокода там много, всё как в команде вами описанной. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:38 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, "промышленная система" и "команда" - это антонимичные понятия, по Гамбурскому счёту. для работы с "промышленной системой" по определению годится произвольный выловленный из уличной толпы человек. Промышленный прикладной программист не должен быть образован, иначе он работать не сможет . Сразу, вместо работы, начнёт switch-и рефакторить. Когда по любой причине произвольно схваченный за рукав не годится - объявляется, что существует "команда", которой нужны "штыки" (в смысле обученные солдаты, если и не умеющие пользоваться, то хотя бы представляющие правдоподобно, что значит слово "штык"). Бывает, когда "команда" уходит, то, что после неё остаётся, автоматически превращается в обыкновенный "промышленный код". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:59 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby petrav, "промышленная система" и "команда" - это антонимичные понятия, по Гамбурскому счёту. для работы с "промышленной системой" по определению годится произвольный выловленный из уличной толпы человек. Промышленный прикладной программист не должен быть образован, иначе он работать не сможет . Сразу, вместо работы, начнёт switch-и рефакторить. Когда по любой причине произвольно схваченный за рукав не годится - объявляется, что существует "команда", которой нужны "штыки" (в смысле обученные солдаты, если и не умеющие пользоваться, то хотя бы представляющие правдоподобно, что значит слово "штык"). Бывает, когда "команда" уходит, то, что после неё остаётся, автоматически превращается в обыкновенный "промышленный код". Это вы нейронную сеть запрограммировали, что она на форуме такие перлы от вашего имени выдаёт? Мне кажется архитектура НС неудачно выбрана. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 22:11 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Промышленный прикладной программист не должен быть образован, иначе он работать не сможет . Но всё же вы меня заинтересовали. Давайте начнём с одной мысли. Что означает ваша процитированная мной фраза? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 23:10 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav booby Промышленный прикладной программист не должен быть образован, иначе он работать не сможет . ... Что означает ваша процитированная мной фраза? Буквально то, что написано. У образованного человека невыносимый для массового производства недостаток - он имеет не просто тенденцию думать, но и принимает сам этот процесс за самостоятельную ценность. Обоснование уменьшения количества ошибок от увеличения количества дум вызывает большой скепсис, а количество строк кода от увеличения дум уменьшается несомненно. Когда человек думает, он код не пишет, по крайней мере рабочий код. В "промышленности" нет задачи иметь в штате "умного человека", но есть задача выпустить "много кода". Как это обеспечить, в условиях, когда роботы еще не заменили человека-программиста? Конечно, строители обеспечили механизацию и непрерывность каменного строительства еще в древнем мире: - рабочий на каменоломне не занимается транспортировкой, перевозчик не занимается обработкой, каменотес не кладет из камня стены. И каждому из них полезно не знать, чего ради все их труды. Просто для того, чтобы глубокая задумчивость не останавливала производственный процесс. Кое-какими из этих идей программирование, как промышленная отрасль, уже вооружилась, но в целом все еще пока сохраняет признаки средневекового ремесленничества или крестьянского быта, когда каждый "субъект" не просто выполняет всю работу целиком, а чистосердечно считает себя архитектором результата, извлекая из этого ценностные смыслы. Это по сути несовместимо с массовым или вообще любым крупным производством, которое подразумевает, что малое количество инженеров, используя труд большого количества рабочих, может быть использующих механизмы, способны обеспечить управление большими объёмами производства или сооружением крупных конструкций за разумное время. В задачу каких-то других инженеров входит создание самих механизмов. Вторые, применительно к программированию, занимаются созданием компиляторов, стандартных или специализированных библиотек, а первые изобретением "лучших практик" и их "внедрением". Все остальные рабочие должны просто писать прикладной код. Человек, склонный размышлению и стремящийся к ученому знанию, становится немедленно вреден, когда зона его любопытства расширяется за пределы кода, к которому он приставлен. Знать выданный в использование инструмент это хорошо, использовать "стандартную библиотеку" - тоже годится, а думать плохо. Вот и всё, приблизительно, если не сильно растекаться по древу. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 01:51 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby, Пожалуйста, в какой стране вы лично наблюдали работу промышленных прикладных программистов? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 10:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Можно попробовать в разных компилляторах создать декодер кодовой страницы (например win1251-UTF-16) на case-switch и посмотреть как разные компилляторы соберут это. В линейный. Бинарный поиск. Или хеш-поиск. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 10:50 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Можно попробовать в разных компилляторах создать декодер кодовой страницы (например win1251-UTF-16) на case-switch и посмотреть как разные компилляторы соберут это. В линейный. Бинарный поиск. Или хеш-поиск. Такой декодер он может и в обычный массив перевести где индексом будет 1251. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 12:25 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav mayton Можно попробовать в разных компилляторах создать декодер кодовой страницы (например win1251-UTF-16) на case-switch и посмотреть как разные компилляторы соберут это. В линейный. Бинарный поиск. Или хеш-поиск. Такой декодер он может и в обычный массив перевести где индексом будет 1251. Может или переведет? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 12:44 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton petrav пропущено... Такой декодер он может и в обычный массив перевести где индексом будет 1251. Может или переведет? Можно проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 12:47 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Мне щас некогда. Но я вечером сделаю тестовые сорцы. Сгенерить надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 13:13 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
https://www.sql.ru/forum/1134172/tyapnichnyy-koi-8r тут уже делали перевод кодировок оттуда: Код: plaintext 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428.
https://godbolt.org/z/h5aKza gcc 10 switch заменил на таблицу Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 14:29 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Мда. Как-то раз я гуглил в интернетах что-то по Oracle. И нашёл.... свой собственный блджад вопрос 10 летней давности здесь в скруле и ответ к нему. Вот это был сюрприз мать ево. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 14:33 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
m_Sla, Какой страшный switch. Вот красивый, но работает идентично. Код: plaintext 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2020, 23:42 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Интересная история. Почему ASCII <= 127 ? Почему не <= 255 ? Почему char == signed char ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2020, 23:50 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Интересная история. Почему ASCII <= 127 ? https://tools.ietf.org/html/rfc1489 petrav Почему не <= 255 ? Значит мой switch компактный не содержит ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2020, 23:56 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный Значит мой switch компактный не содержит ошибок. Да вы тут ни причём. Возможно пространство >127 было выделено под локальные кодировки. Но, во-первых, меня смущает такая прозорливость. Во-вторых почему char знаковый тип? Это противоречит предполагаемой прозорливости. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2020, 00:03 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Да вы тут ни причём. Возможно пространство >127 было выделено под локальные кодировки. Но, во-первых, меня смущает такая прозорливость. Во-вторых почему char знаковый тип? Это противоречит предполагаемой прозорливости. char такой, какой требуется по стандарту. An object declared as type char is large enough to store any member of the basic execution character set. If a member of the basic execution character set is stored in a char object, its value is guaranteed to be nonnegative. If any other character is stored in a char object, the resulting value is implemen- tation-defined but shall be within the range of values that can be represented in that type. The three types char, signed char, and unsigned char are collectively called the character types. The implementation shall define char to have the same range, representation, and behavior as either signed char or unsigned char. Знаковость у него определяется производителем компилятора. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2020, 01:40 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный, Да. Согласен. Break там был лишний. Но тема референсного топика была не о switch, А о минимизации булевых функций. Поэтому мы не акцентировали на этом сильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2020, 08:14 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный m_Sla, Какой страшный switch. Вот красивый, но работает идентично. Код: plaintext 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133.
а не лучше ли "а,и,е" вытащить вперёд и вообще отсортировать по частоте? default: return koi8r; это совершенно точно надо в начало ставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2020, 14:20 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Почему ASCII <= 127 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2020, 19:33 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
И не надо забывать про терминалы с семибитным RS232. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2020, 20:10 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза а не лучше ли "а,и,е" вытащить вперёд и вообще отсортировать по частоте? Нет, потому что всё равно конвертируется в массив такой switch А дальше он сам его отсортирует. Алексей Роза это совершенно точно надо в начало ставить. Без разницы где ему висеть. Он всё равно проверяет диапазон входного массива. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 00:04 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov И не надо забывать про терминалы с семибитным RS232. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 07:26 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный Нет, потому что всё равно конвертируется в массив такой switch А дальше он сам его отсортирует. в смысле "сам"? т.е. он непременно должен каждый раз перебирать 127 значений и никак это не изменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 11:37 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
С точки зрения теорий Шеннона английский текст обладает плонтностью 1.3 бит на символ безотносительно кодировки. Соотв если апач хорошо жмёт контент в gzip - мы можем ожидать неизменный результат и для 8 и для 16 и для 32 бит на символ. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 11:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton С точки зрения теорий Шеннона английский текст обладает плонтностью 1.3 бит на символ безотносительно кодировки. Соотв если апач хорошо жмёт контент в gzip - мы можем ожидать неизменный результат и для 8 и для 16 и для 32 бит на символ. Вот поэтому и нужен не utf-8, а uc-32. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 11:48 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Вот поэтому и нужен не utf-8, а uc-32. Во-вторых, вы так и не можете понять простой вещи: составные символы останутся составными в любой кодировке. Фиксированное число бит у этой кодировки или переменное - без разницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:07 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Соотв если апач хорошо жмёт контент в gzip у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие, потом уже незначительный рост а вот затраты проца растут значительно ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:20 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Вот поэтому и нужен не utf-8, а uc-32. Во-вторых, вы так и не можете понять простой вещи: составные символы останутся составными в любой кодировке. Фиксированное число бит у этой кодировки или переменное - без разницы. Я это отлично понимаю. Давайте по другому. Допустим у нас UC-32. Приведите пример составного символа, будем смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:22 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза mayton Соотв если апач хорошо жмёт контент в gzip у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие, потом уже незначительный рост а вот затраты проца растут значительно Я просто акцентирую внимание на том что для информационной энтропии разрядность источника - не играет роли. Для энтропии просто интересна частота неких абстрактных символов. Кстати эта вся теория рождалась задолго до появления битов и байтов . Клод Шеннон - знатный старец среди кибернетиков и электротехников. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:27 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Приведите пример составного символа, будем смотреть. Где это проявляется на практике? Например, при отображении этого самого "ивана-краткого" в Far3. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:33 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Приведите пример составного символа, будем смотреть. Ну если кто-то включил полную декомпозицию, наверно, он знает что делает, ему это надо и он проблемы решит? Мне не нужна такая декомпозиция. Т.е. я не вижу проблемы с "Й" в UC-32. А вот проблемы в utf-8 я вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:44 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Юникод обязан работать не только у вас и для включения полной декомпозиции существуют вполне весомые аргументы. P.S. ConEmu и Хабр по ссылке оттуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:50 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petravА вот проблемы в utf-8 я вижу. И в чём её проблема? PS: Ни Far3, ни Notepad, ни один из других известных мне просмотрщиков текстовых файлов на Windows не умеет работать с декомпозицией, что меня удручает, поскольку именно в таком формате идёт программа передач с телевизора. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:52 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Юникод обязан работать не только у вас и для включения полной декомпозиции существуют вполне весомые аргументы. У вас, мне кажется, какой-то неверный подход. Юникод обязан работать у всех, но не работает. При чём не работает у неглупых людей. Может проблема с Юникодом? Но ладно. Какие есть весомые аргументы включить полную декомопозицию? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 13:04 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Какие есть весомые аргументы включить полную декомопозицию? P.S. Юникод не работает тогда, когда очередной petrav считает, что "вот эту фигню можно не делать - бред же". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 13:10 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Какие есть весомые аргументы включить полную декомопозицию? Подождите. Ну вот мы полностью декомпозировали "йод", получилось четыре символа utf-8, "й" распалась на два, так? Но тривиальным алгоритмом поиска мы всё равно не найдём "иод". Я прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 13:18 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Но тривиальным алгоритмом поиска мы всё равно не найдём "иод". Я прав? Существуют диапазоны юникодных символов и всяческая диакритика расположена во вполне конкретных местах. И разные варианты пробела занимают вполне конкретные места и разные варианты дефисов - тоже. Следовательно, корректному "юникодному" алгоритму надо понимать - какой именно "тип" у найденного кода, но не всегда требуется анализ конкретного кода в уже известном диапазоне ("типе"). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 13:38 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav получилось четыре символа utf-8 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 13:39 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Но тривиальным алгоритмом поиска мы всё равно не найдём "иод". Я прав? Существуют диапазоны юникодных символов и всяческая диакритика расположена во вполне конкретных местах. И разные варианты пробела занимают вполне конкретные места и разные варианты дефисов - тоже. Следовательно, корректному "юникодному" алгоритму надо понимать - какой именно "тип" у найденного кода, но не всегда требуется анализ конкретного кода в уже известном диапазоне ("типе"). Т.е. вы хотите сказать, что в стандарте Юникода прописано, что после русской буквы "е" допустим диакритический знак, причём именно такой как в этой букве "ё"? И что в русском языке допускается заменить "ё" на "е"? И немец, который ни бум-бум в русском, сможет учитывать этот нюанс (при разработке поискового движка) используя исключительно стандарт Юникода? Или вы хотите просто определить, что символ диакретический и его отбросить в поиске? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 14:01 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav получилось четыре символа utf-8 Я не отбрасывал. Я пытаюсь понять как вы видите написание поиска по строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 14:03 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
После любой буквы допустим любой диакритический знак. И да, вне зависимости от языка его можно отбросить если нужно accent-insensitive сравнение. Как там прописано case-insensitive я не знаю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 14:04 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, почитай еще раз закрытый топик https://www.sql.ru/forum/1319689-1/msvc-i-gcc-sovmestimost-kodirovok-ishodnikov Там было много полезной инфы к сведению. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 14:15 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov После любой буквы допустим любой диакритический знак. И да, вне зависимости от языка его можно отбросить если нужно accent-insensitive сравнение. Как там прописано case-insensitive я не знаю. Т.е. в любом языке отбрасывание диакритических знаков не меняет смысла слова? Спорное утверждение. "Нёбо" — "небо", "зайка" — "заика". Но ладно, мы пишем простой поиск и отбросим все диакритические знаки после полной декомпозиции. Ведь именно о поиске после декомпозиции писал Сидоров. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 14:27 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Алексей Роза у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие судя по кол-ву букв в твоей жизни наконец-то произошло что-то важное. 1, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 14:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petravТ.е. в любом языке отбрасывание диакритических знаков не меняет смысла слова? В любом языке поиск слова идёт по написанию, а не по смыслу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 14:56 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
я не уверен, что разница между "e" и "ё" и "и" и "й" это именно диакретические символы такое трактование термина "диакретический" мне кажется достаточно вольным. при таком подходе и мягкий / твердый знак можно диакретическим символом назвать IMHO единственный знак похожий на диакретический - знак ударения. А буквы "е", "ё", "и", "й", "ь", "ъ", "ять", "фета" это все же отдельные буквы. IMHO Если кто видел древнегреческий алфавит ))) - вот там полное развличение с диакретическими символами. Буква греческого алфавита + 8 (точно не уверен, но их комбинаций еще больше!) диакретических символов которые почти к любой букве могут применяться. AFAIK В общем, тут лингвист нужен ))) ВикипедияДиакрити́ческие зна́ки (др.-греч. διακριτικός — «служащий для различения», от др.-греч. κριτικός — «способный различать»): в лингвистике — различные надстрочные, подстрочные, реже внутристрочные знаки, применяемые в буквенных (в том числе консонантных) и слоговых системах письма не как самостоятельные обозначения звуков, а для изменения или уточнения значения других знаков; в типографике — элементы письменности, модифицирующие начертание знаков и обычно набираемые отдельно ... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 15:14 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
По версии википедии, называть фигню над буквой ё диакретическим знаком некорректно https://ru.wikipedia.org/wiki/Ё#Название_надстрочного_элемента Официального и общепринятого термина для выносного элемента, присутствующего в букве «ё», нет. Традиционное языкознание и педагогика использовали слово «двоеточие»[К 3], в последние же сто лет чаще всего обходятся менее формальным выражением «две точки»[К 4], либо вообще стараются избегать отдельного упоминания этого элемента[К 5]. Использование иноязычных терминов (умлаут, трема, диерезис или диалитика) применительно к данной ситуации считается некорректным , так как это диакритические знаки и прежде всего обозначают определённую фонетическую функцию, хотя, например, А. А. Реформатский их использовал[3]. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 15:22 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Т.е. вы хотите сказать, что в стандарте Юникода прописано, что после русской буквы "е" допустим диакритический знак, причём именно такой как в этой букве "ё"? Если (вдруг) вам потребуется обработка текста детской книжки (с расставленными ударениями), то корректный алгоритм будет корректным, а "оптимизированный" - облажается. P.S. Как говАривал дедушка Энштейн: "Делайте просто, но не проще, чем нужно". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 15:49 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза в смысле "сам"? т.е. он непременно должен каждый раз перебирать 127 значений и никак это не изменить? Эмм. Для обычного switch это goto array pointer address. Для такого - же switch, компилятор оптимизирует и преобразует в обычный массив array get index value что сводиться к простой конструкции ArrSwitch[IDX] ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 15:57 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный Для обычного switch это goto array pointer address. Ну это в лучшем случае, при хорошем оптимизаторе. А так - да, может быть так что switch обычный будет перебираться пока не найдёт свой собственный элемент конструкцией else-If. Так что вы были не далеки от правды. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 15:59 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Т.е. вы хотите сказать, что в стандарте Юникода прописано, что после русской буквы "е" допустим диакритический знак, причём именно такой как в этой букве "ё"? Если (вдруг) вам потребуется обработка текста детской книжки (с расставленными ударениями), то корректный алгоритм будет корректным, а "оптимизированный" - облажается. Я так понимаю что полная декомпозиция строки сведётся к следующему: 1. Дважды проанализировать все байты текста в котором мы ищем подстроку. 2. Выделение динамической памяти. 3. Копирование всего текста. А зачем нам для поиска "по Сидорову" вообще делать декомпозицию? Если мы можем алгоритм поиска по utf-8 параметризовать политикой: Код: plaintext 1. 2. 3. 4. 5.
И в один проход, без всякой декомпозиции и копирования, in place найти нужную нам строку? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:08 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Если вас смутил тип CharType могу предложить такую политику: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:11 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav 1. Дважды проанализировать все байты текста в котором мы ищем подстроку. 2. Выделение динамической памяти. 3. Копирование всего текста. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:20 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav 1. Дважды проанализировать все байты текста в котором мы ищем подстроку. 2. Выделение динамической памяти. 3. Копирование всего текста. Т.е. вы предлагаете для скорости кешировать результаты полной декомпозиции? Но в таком случае она тем более не нужна, точнее она вообще не нужна. Нам нужна не декомпозиция, а удаление диактретики вообще (й -> и...). И составные символы нам тоже не нужны. И буквой Ё проблем нет. У нас только одна проблема: если на вход нашей программы какой-то пудель нам подсунет результаты полной декомпозиции. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:30 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, Просто в тексте поиска заменяйте Й,И,E,Ё на X и в искаемом тексте. Проблемы не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:34 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Т.е. вы предлагаете для скорости кешировать результаты полной декомпозиции? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:35 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный petrav, Просто в тексте поиска заменяйте Й,И,E,Ё на X и в искаемом тексте. Проблемы не будет Я собственно это и предлагаю. Просто Сидоров рассуждает так: UC-32 нам не подходит, потому что нам всё равно нужны составные символы для поиска. Типа для поиска нужно Ё заменить на два символа. И пока он не смог обосновать зачем это нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:39 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrov, Basil A. Sidorov я перечитал дискуссию два раза и вообще не понял, что Вы сейчас обсуждаете ((( Последнее понятное сообщение 22174105 всё что дальше, лично мне вообще не понятно, о чем разговор. Кроме акцент марк (диакритик марк) есть и управляющие символы (перевод строки, разрывный - не разрывный пробел, "разрещение" на перенос в данном месте слова), и языки где одной букве соответствует дофига начертаний (вроде в арабских языках написание буквы зависит от предыдущей/следующей буквы), и иероглифы, и все прочее. И в общем, Basil A. Sidorov совершенно прав, что fixed, что utf, основная сложность совершенно в другом будет заключатся ((( Unicode он в меньше степени про кодировку, в большей про обработку и полиграфию. Сам читал в 2000-ом и ничего не понял ))) к тому же, выяснилосль, что: 1) Unicode древнегреческий язык не поддерживает 2) ни одного Unicode шрифта и Ms Word с нормальной поддержкой диакритик знаков все равно нет. Т.к. буквы разноширинные и даже если взять диакритик марк из шрифта, он над буквой будет черти где рисоваться. Марки есть, пользоваться невозможно Для древнегреческого тогда использовали самопально-нарисованные обычные (неUnicode) шрифты и "обычный" текст в 1251 (Ms Word думал что 1251, на деле древнегреческий). Как сейчас - не знаю. 3) те шрифты которые есть, нужно покупать у Adobe В 2000-ом все было очень печально. Полной фигней этот Unicode оказался (((. Подозреваю сейчас не сильно лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 16:59 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Типа для поиска нужно .... И пока он не смог обосновать зачем это нужно. Поскольку один и тот же символ может кодироваться по разному, желательно его "нормализовать". Привести к единому варианту. Пример с русским языком не корректен. Нужно брать языки с accent mark ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:05 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav нам всё равно нужны составные символы для поиска ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:05 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav нам всё равно нужны составные символы для поиска Может я неправильно понял? Это что значит? Basil A. Sidorov petrav Какие есть весомые аргументы включить полную декомопозицию? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:10 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Может я неправильно понял? Это что значит? Практически это означает, что нет смысла вводить в язык программирования и в API высокого уровня тип (w/mb)char: string - и никаких гвоз..., тьфу, чаров. Не char как эквивалент байта, а char, как эквивалент "символ алфавита". Да, для реализации низкоуровневого API потребуются коды, но, скорее всего, разумнее будет использовать int. Точно так же, как "современный" readch возвращает int, хотя "было время", когда возвращал (знаковый) char. petrav Basil A. Sidorov Искать "йод" и "иод", как пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:24 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav Может я неправильно понял? Это что значит? Да petrav вроде и не спрашивал про составные. Его вопрос в основном касался оптимизации хранения (байты) и скорости доступа к производльному i-му символу в строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Попытаюсь дополнить более корректным примером. Для ряда применений, при обработке/сравнении/поиске может оказаться, что H20 - информации о superscripts / subscript нет H 2 O - Combining characters, за которые ратует Basil A. Sidorov (просто цифра 2 + доп. информация о режиме отрисовке) H Unicode Symbol с кодом U+2082 0 - Precomposed characters, как хочет petrav одно и то же note: возможно путаница в терминах Combining / Precomposed , читайте стандарт сами ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:38 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Да petrav вроде и не спрашивал про составные. Его вопрос в основном касался оптимизации хранения (байты) и скорости доступа к производльному i-му символу в строке. petrav желает сидеть на двух стульях: ему требуется индексный доступ и юникод одновременно . "Не бывает" (ц) комедия "Чародеи", голос скатерти-самобранки. P.S. Можно ещё и графа Калиостро из другой комедии вспомнить: "Седалища не хватит" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:45 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton … вопрос в основном касался оптимизации хранения (байты) и скорости доступа к производльному i-му символу в строке. здесь простая и очевидная вилка. если под капотом строки исходный поток байт, то для uft-8 скорость доступа к i-му символу строки линейна по i, и у тебя нет иных вариантов. Если же ты критически зависишь от константного доступа к произвольному символу строки - ты не можешь работать с ней в сыром виде, и должен заплатить за это расходом памяти на преобразование. Вопрос "что такое строка?" здесь приобретает диалектический, философский характер. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:48 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Давайте лучше перейдем в плоскость 4х алгоритмов нормализации, которые существуют в документации по Microsoft.Net framework и Java. https://docs.microsoft.com/en-us/dotnet/api/system.text.normalizationform?view=netcore-3.1 https://docs.oracle.com/javase/tutorial/i18n/text/normalizerapi.html Пример теста который успешен. Данные взяты с Microsoft, функция нормализации из OpenJDK. Код: java 1. 2. 3. 4.
Аналогичные алгоритмы я находил в реализациях Python3. Почему я настойчиво предлагаю пойти в обратную сторону. Тоесть не в стандарт а именно в реализацию и от нее - в обратку. Тесть если мы увидим в реализации то что нас шокирует или каким-то образом вызовет вопросы - мы идем в стандарт и читаем. Я считаю что дискуссия зашла в тупик и ходит по кругу. Petrav - господин очень настойчивый и целеустремленный. Но имеет место некая зашоренность которая не позволяет ему просто выйти на уровень принятия той или иной концепции работы со строками. Он считает что индексация строки очень важна. И в таком решиме мы еще 5-10 лет проговорим. А говорили уже на эту тему много. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:51 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Движок сломал красивое начертание композитной буквы. Я сделаю скриншот. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:53 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Тесть если мы увидим в реализации то что нас шокирует или каким-то образом вызовет вопросы - мы идем в стандарт и читаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:56 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Да petrav вроде и не спрашивал про составные. Его вопрос в основном касался оптимизации хранения (байты) и скорости доступа к производльному i-му символу в строке. petrav желает сидеть на двух стульях: ему требуется индексный доступ и юникод одновременно . "Не бывает" (ц) комедия "Чародеи", голос скатерти-самобранки. P.S. Можно ещё и графа Калиостро из другой комедии вспомнить: "Седалища не хватит" Именно поэтому я и апеллирую к практике применения композиций. А именно к документации по Microsoft/Oracle технологиям. Ни в одной из них композиция не является частью самой строки. А вынесена в отдельную прикладную библиотеку - нормализатор. И судя по дизайну его практика применения - опциональна. Тоесть прикладной программист сам решает когда ему применять нормализацию и когда нет. Нужны ли ему ударения? Нужен ли ему немецкий умляют как диактитика? Это пойдет от прикладной задачи. Тоесть бизнес должен это отдельно заявить. В обычных юзкейсах (99.9%) об которые бъется бедняга Петрав нормализация ему дай бог не понадобиться. Какая у него там нормализация в самолётах? Чорт его знает. Ему бы лишних микросекунд наковырять... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:58 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Вопрос "что такое строка?" здесь приобретает диалектический, философский характер. Насколько я помню стандарт Unicode, там и понятия, что такое "символ", "буква" , "получившаяся картинка на бумаге" приобретает диалектический, философский характер. А Вы сразу на "строка" замахнулись ))) По поводу строк юникоде говорит следующее: http://unicode.org/reports/tr14 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 17:59 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton В 2004 сталкивался с ПРИКЛАДНОЙ задачей, когда сильно хотелось Unicode... но Unicode и компьютеры "не смогли". Банальное описание надписей на предметах и нагробиях + поиск по ним https://jalita.com/guidebook/kerch/istoriko-arkheologicheskiy_muzey.shtml https://ru.wikipedia.org/wiki/Пантикапей ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 18:17 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton В 2004 сталкивался с ПРИКЛАДНОЙ задачей, когда сильно хотелось Unicode... но Unicode и компьютеры "не смогли". Вы какраз попали на версию MS Net Framework 1.1. Одна из первых. А на каком языке были разработки? Я не думаю что unicode не могли. Технически там не бох весть какая проблема. Может со шрифтами был косяк? Я помню что ранние TrueType тоже работали только в национальном диапазоне. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 18:25 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton А на каком языке были разработки? https://www.sql.ru/forum/110900/oracle-forms-6i-i-utf-8 ))) mayton Я не думаю что unicode .... со шрифтами... Нужного языка в Unicode просто НЕ БЫЛО ((( Ну не подумали в Unicode об древнегреческом языке и Precomposed characters (которые так милы сердцу Petrov) для греческого там просто НЕТ (((, соответственно и в шрифтах таких комбинаций символов нет. Combining characters (отдельно греческая буква + акцент марки) ни одно средство в то время отрисовывать вообще не умело. Ни Rich Edit control, ни MS Word. А если бы даже я бы и отрисовывал (сдвинуть позицию и в одной позиции два раза нарисовать разные символы - ни бином ньютона запрограмировать) - то получилась бы полная порнография (((, т.ч. я даже заниматься этим не стал. Сам Unicode в БД мы запихнули (потом пригодилось для украинского и казахского языка и прочих, хотя с казахским вроде тоже все было весело, там тоже нужных символов в стандартном "unicode" Windows не было), но в целом, для Керчи оно оказалось не сильно нужным ((( Но об этом узнали только уже у заказчика, когда на реальные тексты посмотрели. Надеялись текст вводит нормало, а пришлось вводить "как всегда" в транскрипции - вместо нормальных букв записывается та же фраза современными буквами в капcлоке. В общем, разница такая-же как между H2O C2H5OH и H 2 O C 2 H 5 OH - жить можно, но счастья особого нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 18:44 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Мда. Нам с вами повезло пройтись по граблям этой технологии. Поддержка нормализации в Java была запихнута... эээ щас секунду сделаю блейм. Вот. Код: 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.
В 2007 году некий Дюк закоммитил первые константы относящиеся к кодификатору этих четырех алгоритмов. А вот матрица совместимости Unicode-стандартов и дотнета. Видно что было активное внесение изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 18:55 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
А вот самая олд-скульная версия документа касающася нормальных юникодовских форм https://www.unicode.org/reports/tr15/tr15-22.html Датируется 2002-03-26. Если кто знает более раниие - прошу отписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 19:00 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Ну не подумали в Unicode об древнегреческом языке P.S. Способность помнить события "времён очаковсксих и покоренья Крыма", безусловно, говорит о хорошей памяти, но ...цкая способность рассказывать о них, как о "только что случившихся"... Ну не старые же маразматики языки на завалинке чешут?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 19:01 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Я считаю что дискуссия зашла в тупик и ходит по кругу. Petrav - господин очень настойчивый и целеустремленный. Но имеет место некая зашоренность которая не позволяет ему просто выйти на уровень принятия той или иной концепции работы со строками. Он считает что индексация строки очень важна. Я придумал хорошую аналогию. Знаете, золотое правило проектирования С++: если ты не используешь какой-то навороченный функционал С++, то ты и не платишь накладные расходы за этот функционал. Виртуальные функции кажутся не производительными? Не используй их. Потоки С++ медленные? Используй I/O из унаследованного Си. Разворачивание стека не нравится, отключи исключения, но тогда без STL. И т.д. А с Юникодом всё наоборот. Мне не нужны акценты, какие-то составные символы, нюансы арабских языков и т.д. Но за всё за это я уже заплатил. У меня поломалась визуализация данных и печать отчётов. Я переписывал алгоритмы. И я считаю, что можно было сделать лучше. Не платить за то что не используешь. Я, конечно, понимаю, что в системах вёрстки журналов, в текстовых редакторах, в поисковых движках, в браузерах — все навороты Юникода нужны. Я только За. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 19:59 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, ну и слава богу. Я тебе очень сильно советую хотя-бы немного попрограммировать на C#. Чтоб просто посмотреть как некоторые вещи реализованы. После этого вернись к С++ и превнеси какие-то идеи или принципы какие ты увидел. Вариться всю жизнь в С++ - это означает быть флюсо-подобным специалистом. Надо расширять кругозор. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 20:31 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Я тебе очень сильно советую хотя-бы немного попрограммировать на C#. А ведь Java и JavaScript хранят строки в utf-16 и у классов String в этих языка есть оператор [] и метод length(). Вот в Европе какой процент программистов перед вызовом [] резко остановится и начнёт думать, а что там такое записано? Может суррогатная пара? Вот какой процент по вашему мнению? Я понимаю, что в вэбе это редко нужно. PS: У меня около 8-ми лет стажа на SQL, JavaScript, C# (WinForms, ASP.NET). Но я уже мало что помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 20:57 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, Современная Java хранит строки чуть сложнее. У строки уже есть 2 варианта хранения. При едином интерфейсе снаружи. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 21:17 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton, Угу. Правда от константы для charat они все равно не отказались. Им самим это больно было бы. И боролись там не за скорость, а за память. Нюанс состоит в том, что всяка ява/basic исходит из того, что строка уже есть . И за всяки плюшки, сорта длины строки или её хеш-кода уже заплачено к моменту, когда пришло время за константу обращаться к её символам или определять длину/хеш-код. Между тем, есть масса задач, для которых представление строки "стандартным" библиотечным типом - это слишком дорогой платеж за её построение. Из этого не следует, что не требуется опознавать текущий символ в каком-нибудь CharSequence, или даже опознавать в нём целый набор отслеживаемых слов. Но топик, вообще-то имени switch. Прочитал на днях, что уже после первой стандартизации ANSI ещё какое время goto case 5: признавали за легальную, но не рекомендуемую конструкцию. Потом зачем-то решили разделить метки на правые и левые. Конструкция goto case 5: при таком разделении оказалась левой. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 21:38 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton petrav, Современная Java хранит строки чуть сложнее. У строки уже есть 2 варианта хранения. При едином интерфейсе снаружи. А что возвращает оператор [] у Ява String? PS: Если вам не интересно, то не отвечайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 21:57 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Вот в Европе какой процент программистов перед вызовом [] резко остановится и начнёт думать, а что там такое записано? Может суррогатная пара? Вот какой процент по вашему мнению? Я понимаю, что в вэбе это редко нужно. Дональд Кнут считает что нужно сначала писать правильную и работающую программу. А потом ее уже оптимизировать. Моя точка зрения с этим вобщем совпадает. Ты должен в первую очередь прототипировать задачу. Решать ее в виде теч-демо и предлагать заказчику. Дальнейшие улучшения - это технические дебты которые можно пустить отдельной категорией. Разумеется я трачу время на обдумывание алгоритмов и структур данных. Но поверь я ни секунды не думаю над строками. Их API в моих языках вылизан десятилетиями и как правило он лучше чем я о нем думаю. Интринзики на ассемблере давно покрыли все строковые операции типа compare, substing, indexOf e.t.c. даже в Java. Ну нету сегодня ни одного основания думать о том как реализован get(i) для i-го символа. Он - константа уверяю тебя. Все о чем писал Василий в части Unicode стандартов - это правильно. Другое дело что это правильно в каком-то узком диапазоне кейсов. Я работал и DeucheBank и уверяю тебя ни секунды у меня не было багов с нормализацией. Да я просто не ведал что это такое. Весь контент в Excel файлов и в базах данных мы получали обычным utf-8 или unicode-16. И символы немецкого языка были в виде ä, ö, ü (0x0228, 0x0246, 0x0252) односимвольных букв. Возможно немцы сами никогда не используют эти combining characters или нам просто везло. Попробуй полазить по немецким сайтам и посмотреть как отдается веб-содержимое. Найдешь хоть один комбо-символ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 22:01 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav mayton petrav, Современная Java хранит строки чуть сложнее. У строки уже есть 2 варианта хранения. При едином интерфейсе снаружи. А что возвращает оператор [] у Ява String? PS: Если вам не интересно, то не отвечайте. Давай глянем. В последней транковой версии исходников OpenJDK. Почему я беру именно эту версию? Это эстраполяция на будущие разработки. То что входит в эту ветку потом релизится. remote.origin.url=https://github.com/unofficial-openjdk/openjdk Вот вобщем 2 разных реализации. Для UTF16 и латиницы. src/java.base/share/classes/java/lang/String.java Код: java 1. 2. 3. 4. 5. 6. 7.
Operator[] отсуствует. Тоесть он есть но определён только для массивов. Перегрузку индексатора для произвольного класса java не поддерживает. Java - это достаточно консервативный язык. Те кто хотят синтаксических сахаров - идут в Scala/Kotlin. И получают более мощный ЯП но в принципе байткод тот-же самый. Местами байткод будет хуже т.к. подтянет больше зависимостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 22:42 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный ВсеРазумный Для обычного switch это goto array pointer address. Ну это в лучшем случае, при хорошем оптимизаторе. А так - да, может быть так что switch обычный будет перебираться пока не найдёт свой собственный элемент конструкцией else-If. Так что вы были не далеки от правды. и чё если там миллионы их и всё это в цикле? да это противоречит всей философии C/C++, где именно на программисте лежит ответственность за то, где он что разместит. Невозможность убрать такой неэффективный поиск - это какой-то нонсенс. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 23:10 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav ВсеРазумный petrav, Просто в тексте поиска заменяйте Й,И,E,Ё на X и в искаемом тексте. Проблемы не будет Я собственно это и предлагаю. Просто Сидоров рассуждает так: UC-32 нам не подходит, потому что нам всё равно нужны составные символы для поиска. Типа для поиска нужно Ё заменить на два символа. И пока он не смог обосновать зачем это нужно. а тут предлагается английский текст искать русскими буквами или мы всё таки сначала определяемся с таблицей, по которой ищем? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 23:23 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Попробуй полазить по немецким сайтам и посмотреть как отдается веб-содержимое. Найдешь хоть один комбо-символ? https://www.bike-components.de/ прям сразу в верхнем меню но это utf, а не unicode ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 00:17 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonStringUTF16.charAt(value, index); Теперь лезем глубей: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Внезапно никаких проверок на композиты, и прочую фигню, тупо пара байт по заданному смещению. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 00:22 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза, Давайте на примере разберёмся что есть что. Возьмём к примеру GCC 10.2 так как я им пользуюсь в основном. Возьмём для примера обычное извлечение из массива Код: plaintext 1. 2. 3. 4. 5.
Получаем Код: sql 1. 2.
Теперь испробуем конструкцию switch создав подобную ситуацию Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Получаем на выходе аналогичный код Код: sql 1. 2.
А теперь имитируем через switch в плане else - if Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
На выходе получаем страшный и уродливый ASM представляющий из себя else - if конструкцию где если 10000 элементов, то он будет долго перебирать до последнего. Ты пишешь Алексей Роза где именно на программисте лежит ответственность за то, где он что разместит. Невозможность убрать такой неэффективный поиск - это какой-то нонсенс. Есть возможно контралировать. И вот тут как раз придуман goto array pointer, что бы не иметь миллион else - if Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
На выходе мы получаем красивый код Прыжка Адресации Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 00:45 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Самая лучшая идея это создание goto array pointer Теперь вспомним что большинство автоматов к примеру в PHP работает со стандартным switch. Можно только представить на сколько скорость увеличится, если избавиться от switch конструкции в целом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 00:52 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav Я придумал хорошую аналогию. P.S. Насчёт "не пользуешься - не платишь" - это вы загнули. Платишь. Необходимостью помнить семантику разных типов конструкторов, способов инициализации и всякой прочей неочевидной чешуи, которая мне, например - никуда не впилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 05:52 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav А что возвращает оператор [] у Ява String? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 05:54 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Попробуй полазить по немецким сайтам и посмотреть как отдается веб-содержимое. Найдешь хоть один комбо-символ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 05:57 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Внезапно никаких проверок на композиты, и прочую фигню, тупо пара байт по заданному смещению. Именно по этой причине в NIO (java 1.4+) существует CharSequence и "вот это вот всё". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 06:09 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Попробуй полазить по немецким сайтам и посмотреть как отдается веб-содержимое. Найдешь хоть один комбо-символ? Я не сомневаюсь что комбо существует. Я говорю - если мы возьмём 100 немецких сайтов, и 97 из них не используют комбо - то я делаю вывод что практика их применения настолько редка, что ей можно пренебречь. Именно это я хотел сказать Петраву. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 08:40 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А некоторые советуют размещать ветки в порядке возрастания значений. Это, якобы, позволяет компилятору генерировать более оптимизированный код... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 08:59 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev SQL2008, кто тебе сказал такую глупость? :) Существует определенный сложившийся стиль написания кода. Разумеется никто не запрещает писать "через задницу", а нормальный текст назвать глупостью. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 11:57 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev SQL2008, кто тебе сказал такую глупость? :) Давайте вернемся к коду Итак, какой смысл в данном случае имеет оператор default? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 12:01 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
SQL2008, 22172656 boobyСтартовый код прост как палка: для набора значений, известных как "хорошие случаи" просто goto на метку return True. Иначе провести доп проверку (с побочным действием) и решить - true оно return или нет. Если вы переместите default в конец, то либо увеличите число выходов из функции, ухудшив и читаемость и её размер, либо если еще захотите структурированного "единственного выхода", добавите переменных для хранения возвращаемого результата. Код в любом случае ухудшится и для чтения и для компиляции. А в своем исходном виде он легко читается и компактно компилируется. 2Basil A. Sidorov в интерфейсе строки в java есть работа с codepoints. Нормальная в смысле возврата int в качестве значения Но подозреваю, что там может оказаться подстава. В том смысле, что у меня нет уверенности, что ява-строки умеют работать с набором кодовых плоскостей в одной строке. Надо смотреть реализацию. Если у кого-то есть ссылки на актуальные исходники, например для 8-ки, бросьте пожалуйста ссылку в этот топик. Глянуть может быть и интересно было бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 12:57 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
SQL2008, ассемблер осилишь или транслировать в "ыудусе"? 22170869 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 13:12 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный Есть возможно контралировать. И вот тут как раз придуман goto array pointer, что бы не иметь миллион else - if Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
На выходе мы получаем красивый код Прыжка Адресации Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
А сравнить с другими вариантами, где case 2 выше всех, например? Вы таки утверждаете, что в асме всегда будет "по-своему" отсортированный код и там не учтутся предпочтения программиста в упорядочивании поиска? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 13:19 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
=> Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
=> Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
=> Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Код: plaintext 1. 2. 3. 4. 5. 6.
В таком случае, в котором ты написал default выше... Ему всё равно где он стоит Тоже самое но с switch - else - if Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
=> Код: plaintext 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
=> Код: plaintext 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
=> Код: plaintext 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.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
=> Код: plaintext 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.
То есть теперь, глядя на это... Можно смело покрутить у виска человеку, который говорит что расположение DEFAULT в коде влияет на что - то. И вроде ты просил поменять ещё сторонами goto array Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
=> Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Сохранил свой порядок ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 13:38 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Если вы переместите default в конец, то либо увеличите число выходов из функции, ухудшив и читаемость и её размер, либо... rdb_dev SQL2008, ассемблер осилишь или транслировать в "ыудусе"? 22170869 Компилятор не глупый. Давайте посмотрим что он на деле сделает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Никто не был прав) Потому что код - говнокод без логики ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 13:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный ... код - говнокод без логики зачем же делать глупость , компилируя его? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 13:53 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby ВсеРазумный ... код - говнокод без логики зачем же делать глупость , компилируя его? Что бы показать что он делает на данный момент. А делает он это, как раз таки не с проста. Прошу обратить внимания на Код: plaintext 1.
А мы помним что Код: plaintext 1.
И компилятор это знает. А значит он просто берёт, вырезает всё до - того, что будет использовано вообще в коде.. Таким образом, мы должны обмануть компилятор, и сказать что ты ничего не знаешь, вот таким образом Код: plaintext 1.
И переписать код, вот таким образом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
И тогда мы увидим наш asm в виде switch else - if Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 14:00 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный То есть теперь, глядя на это... Можно смело покрутить у виска человеку, который говорит что расположение DEFAULT в коде влияет на что - то. ну вообще default то можно всегда в конец ставить, его место там. но вот то что перемещение case никак не меняет асм - это странно конечно... Может потому что мало значений и они типа в кеше помещаются? Реально пробегать по всему циклу из миллиона значений это какая-то дичь А если if/elseif/else ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 14:24 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза Может потому что мало значений и они типа в кеше помещаются? Неа..Как Я говорил раньше, компилятор не глупый... Так что да, он их сам сортирует как ему лучше будет использовать код. Это в 2020г называется - оптимизацией. Алексей Роза Реально пробегать по всему циклу из миллиона значений это какая-то дичь А если if/elseif/else ? Если ты напишешь elseif конструкцию. То она будет аналогично со switch и это во всех компиляторах так... Включая Delphi и так далее. Что бы реально избавиться от этой конструкции, надо использовать goto array pointer ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 14:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Если у кого-то есть ссылки на актуальные исходники, например для 8-ки, бросьте пожалуйста ссылку в этот топик. Глянуть может быть и интересно было бы. Я поищу в том-же OpenJDK бранч или тег с которого релизилась восьмерка. И можно даже посмотреть какие были сделаны изменения в HEAD ревизии за прошедшие лет 6. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 14:36 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза, Компилятор создал дубликат функции https://godbolt.org/z/zGEb7q Он понял что ничем не отличается код ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 14:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Код: plaintext 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
Чёт прожал и не заметил Там везде по = ровно было ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:27 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный Неа..Как Я говорил раньше, компилятор не глупый... Так что да, он их сам сортирует как ему лучше будет использовать код. Это в 2020г называется - оптимизацией. ок, спрошу по-другому: а почему он ЭТО считает оптимизированным кодом? Почему перебирать миллион значений каждый раз - это оптимально? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:28 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза, Потому что это универсально. К примеру у тебя есть "1, 2, 3, 8343, 9453, 88667" (Уже отсортированный компилятором) И как ты хочешь, что бы он оптимизировал код, не перебирая ? Ну допустим он возьмёт "1,2,3" и запишет их как goto array pointer А остальные "8343, 9453, 88667" ему всё равно придётся перепроверить через else-if] Вот так и выходит, что изначально так и было сделано. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:35 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза, Вот кстати подтверждения, если раньше мы получали извлечение из массива Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но если нарушить порядок, и сделать большие цифры. То мы получим Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:39 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
блин, а что это у вас такое авторif (i = 1) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:39 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный К примеру у тебя есть "1, 2, 3, 8343, 9453, 88667" (Уже отсортированный компилятором) да не надо мне их сортировать я знаю, что 8343 случается в 10 раз чаще, и поставил его вперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:40 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза, При этом, если радиус небольшой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
после 2 сразу 4 и потом 8 то он увеличивает табоицу массива Код: plaintext 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.
И вот это как раз тот самый случай Goto array to pointer В таком случае оно работает ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:41 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза ВсеРазумный К примеру у тебя есть "1, 2, 3, 8343, 9453, 88667" (Уже отсортированный компилятором) да не надо мне их сортировать я знаю, что 8343 случается в 10 раз чаще, и поставил его вперёд. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Компилятор сам знает. ASM не поменялся, от того что ты поставил выше Ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
вот норм порядок и безо всякой компиляторской отсебятины https://godbolt.org/z/P1Mzxn ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:43 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
и странно, что "умный компилятор" просто 52 не оставил, ведь там константа в compile-time ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:46 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза и странно, что "умный компилятор" просто 52 не оставил, ведь там константа в compile-time Она же не inline функция, что бы таким баловаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 15:48 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Алексей Роза, Глянул что там у тебя. Кстати, умный компилятор Пошёл дальше. И увидел что функция никак не используется. Ничего полезного не делает. И по этому Код: plaintext 1. 2. 3.
Пустая процедура main Код: plaintext 1. 2. 3. 4. 5.
Код: plaintext 1. 2.
Однако сё работает. Код: plaintext 1.
Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 16:20 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby У Кернигана можно найти упоминание о том, произвольность местоположения default была выбрана сознательно , в расчете на то, что при возникновении необходимости дописывать что-то в существующий switch, корпоративные программисты хотели бы и будут размещать новые ветки ниже уже существующих, а не произвольным образом втыкивать их между старыми, превращая старый код в неузнаваемый. А куда втискивать новые CASE программистам, которые кодят после программистов, которые уже втыкнули свой код после default? Мне кажется, что вы просто глумитесь ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 16:47 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Может быть проще для логики кодо-генерации. Открыть оператор switch() и сразу бросить дефолтную секцию и потом уже дописывать кейсы по мере поступления фактов. Как опциональные аргументы. Минус 1 переменная в генераторе. И по поводу количественных limitations. Тоже ведь никто не гарантирует что код на "C" писал человек. Вполне может быть продукт biacc/byzon/antlr/Zubr генерации. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2020, 19:01 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Тупанул. Зачем качать когда и так онлайн доступно. Вобщем вот так лучше Актуальная версия. https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/lang/String.java Версия примерно по релизному тегу JDK-8-b120 https://github.com/openjdk/jdk/blob/9a9add8825a040565051a09010b29b099c2e7d49/jdk/src/share/classes/java/lang/String.java ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 11:18 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
исходник Код: plaintext 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
(g++.exe (Rev2, Built by MSYS2 project) 9.2.0) Судя по генерируемому коду, оптимизатор C++ пытается уменьшить количество инструкций перехода. Поэтому в результате получается откровенный маразм, больше похожий на работу какого-нибудь обфускатора. результат Код: asm 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. 43. 44. 45. 46. 47. 48. 49.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 13:19 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_devСудя по генерируемому коду, оптимизатор C++ пытается уменьшить количество инструкций перехода. Ну ты же сам ему сказал оптимизировать на скорость, а переходы плохо сочетаются со спекулятивным выполнением в процессорах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 13:31 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev, Давно известно, что машинные оптимизаторы/генераторы далеки от совершенства. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 13:33 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton, спасибо за ссылки. Я так понимаю, что кишки у новой версии от 9ки тянутся. В 8ке, в более поздних релизах, возможно, она тоже подтянута. Актуальная версия, как база, годится для реализации любого типа кодировки и представления строки. Впечатление у меня такое: Понятно, что когда-то начиналось с того, что сейчас называют UCS-2. Потом долепились составные символы и получился UTF-16. Так как составные символы "практически никому не нужны" и "интерфейс charAt трогать нельзя", то работа с кодепойнтами прилепилась нашлепкой - "если кому надо, за практическую константу со всем разберутся". Встретил упоминание занятного документационного бага - исходный код обманка, показывающая "как оно было бы", если бы на самом деле реализовывалось на java. Кто-то раскопал, что в каких-то местах исходный код не соответствует работе фактически используемых интризиков, и "хорошо бы поправить". Не знаю, стали исправлять исходник или нет, лень искать регистрацию этого бага... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 13:38 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Шипилев ЕМНИП где-то рассказывал зачем нужен код-обманка но честно говоря я не очень запомнил. Кажется в его докладах по Lord Of String. Или что-то в этом роде. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 14:12 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ну ты же сам ему сказал оптимизировать на скорость, а переходы плохо сочетаются со спекулятивным выполнением в процессорах. Код: sql 1. 2.
а дальше хоть по test rcx, rcx , хоть по таблице переходов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 14:48 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_devrepne scasb Эта конструкция в современных процессорах существует только для взад совместимости и тормозит как последний слоупок. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 15:00 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, есть ещё не менее простой способ: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 15:22 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev, А есть ещё проще и лучше И быстрее И качественнее Код: plaintext 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. 43. 44. 45.
Код: plaintext 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.
Ты скажешь, чел, но тут много mov. А я тебе скажу, если тебе надо заполнить таблицу не 256 символами, а юникодом 65535 то MOV будет столько же. Но при этом скорость извлечение 65535 - 1 элемента будет ровна извлечению 1 символа. Что быстро в 65535 раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 18:51 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Впечатление у меня такое: Понятно, что когда-то начиналось с того, что сейчас называют UCS-2. Потом долепились составные символы и получился UTF-16. Так как составные символы "практически никому не нужны" и "интерфейс charAt трогать нельзя", то работа с кодепойнтами прилепилась нашлепкой - "если кому надо, за практическую константу со всем разберутся". Конечно, скорее всего так и происходило. И не только с Явой, но с QString, WinApi, C# и т.д. Это как раз то, о чём я и спорю на этом форуме. В развитых языках программирования существует простой способ работы с Unicode в формате utf-16 без учёта составных символов. И для большинства европейских программистов это нормально и правильно. Но когда я начинаю защищать "wchar_t" свидетели секты utf-8 начинают во все стороны извергать религиозный гнев и кричать, что "wchar_t" — это грехопадение, а истинно правильный только utf-8. При этом сектанты кричат, что Петрав не понимает простейших вещей, что он зашоренный, что там какие-то великие умляуты и декомпозиция без которой вообще жизни нет, что длинна строки не нужна и индексация тоже и т.д. Ярко наблюдаемый религиозный экстаз во всю ширь и высь. Но сами сектанты программируют на QString, Java и JavaScript — где есть индексация и strlen(). Где тот-же самый "wchar_t". А мне предлагают использовать utf-8 для которого нет API в C++ и отказаться от wchar_t для которого API в C++ есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 20:42 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Java тащит на себе груз обратной совместимости. И UTF-16 и модифицированный UTF-8 - это всё "грехи" этого груза. Да, ПетрАВ вправе "себе любимому" изготовить библиотеку для UTF-16 или даже для UCS-2. Для его личных целей это будет "норм". Вот только "А ты не путай свою шерсть с государственной". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:05 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Java тащит на себе груз обратной совместимости. И UTF-16 и модифицированный UTF-8 - это всё "грехи" этого груза. Да, ПетрАВ вправе "себе любимому" изготовить библиотеку для UTF-16 или даже для UCS-2. Для его личных целей это будет "норм". Вот только "А ты не путай свою шерсть с государственной". Груз совместимости? Наверное, ты можешь дать ссылку где хотя бы рекомендуется воспринимать "charAt()" как deprecated. PS: Интересно, почему ты решил, что это аббревиатура и она именно такая? Просто интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:15 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev, Вот Она Мощь GCC 10.2 Про которую Я писал. Сам, взял, и сделал goto array pointer https://godbolt.org/z/zT6nG3 Код: plaintext 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.
Код: plaintext 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. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:53 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav, попробую изложить то, что думаю, хотя мне сама идея что-то излагать не очень нравится. Вы спрашивали про промышленный код. Я считаю, что о промышленном коде речь идет всякий раз тогда, когда программист автоматически, не задумываясь тянется к "библиотечному коду", что бы это ни значило. В этом смысле я сам "промышленный программист", и у меня в целом нет задачи задумываться об адекватности используемого "библиотечного кода". Про 16, 8 и прочие строки. (Как промышленный программист, да ещё и пишущий на бейсике) Строки для "обычного" программиста это то, что предоставляет либо "стандартная библиотека", либо конкретная система, в своих кишках имеющая некоторое "стандартное" представление, что такое "строки" в памяти системы и как с ними работать. Насколько я понимаю, Windows и iOS за строки именно utf-16 считают, а Linux оперирует с utf-8. Поэтому те кто давит за utf-8 просто рассказывает, что вы неудачник, если программируете для ios или windows. Здесь белые нитки по всему чёрному полю. Дальше все просто - хотите бесшовно обмениваться с системой "строками", располагайте такой "библиотечной реализацией", которая сможет это сделать без применения дополнительных преобразований. Иначе такое взаимодействием будет облагаться налогом на преобразование. С одной стороны, нельзя единственной "библиотечной" реализацией покрыть вообще все возможные потребности, в контексте которых возникает термин "строки". С другой, за построение "стандартной строки", при использовании "системных функций" налог все равно платится, если система работает с utf-16 как внутренним представлением в памяти и источником для построения строк является файл, например (файлы с такой кодировкой практически не используются). С другой стороны, счастливая жизнь в другой системе заканчивается, когда какой-то враг подсовывает этой другой системе файл в кодировке, отличной от utf-8. Очевидно, что такой враг должен быть проклят вместе со своим файлом. Касательно wchar_t есть мутные моменты - зачем-то он заявлен платформно-зависимым. Как точно думали об этом те, кто так сделал, не представляю. Как не представляю, прилетит ли на самом деле какая-нибудь подстава с этой стороны тем, кто на этот тип положился. В общем, то, что я хотел сказать состоит в том, что, может быть, это большое везение, что c++ так до с их пор и не обзавелся единым и закостенелым представлением о том, что такое строки и как с ними жить. Конечно, это кустарщина, а не "промышленное программирование", но зато ты предупрежден о том, что это твое дело, решать - что ты будешь в своих задачах принимать за "строки", и как с ними обходиться. Это не делает богом, но даёт возможность обжигать горшки. Что касается строк с целью "интернационализации", была такая компания ICU, выпускавшая библиотеки, обеспечивающие работу со всеми видами юникодных кодировок. Сейчас она принадлежит IBM, и уже с маркировкой от IMB выпуск таких библиотек для явы и си продолжается. Если нужен (любой) юникод - бери используй, грубо насмехаясь над теми, кто этого не делает (для utf-16, кажется, там именно wchar_t в качестве "символа") // http://site.icu-project.org/ ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 03:15 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Unicode = evil. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
тынц ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 03:51 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Unicode vs UTF Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 03:52 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
однако в C++ довольно странное превращение из utf-8 в utf-16, которое всё равно выливается в wchar_t... https://stackoverflow.com/questions/7153935/how-to-convert-utf-8-stdstring-to-utf-16-stdwstring ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 04:07 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
ВсеРазумный, четыре кэшлайна ради четырёх символов? Что-то я не уверен в оптимальности решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 09:04 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav где хотя бы рекомендуется воспринимать "charAt()" как deprecated ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 09:13 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov rdb_devrepne scasb ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 10:28 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov petrav где хотя бы рекомендуется воспринимать "charAt()" как deprecated Ну если это груз совместимости, то следовало бы написать в документации: "charAt()" считается устаревшим, не рекомендуется к использованию, вот вам итератор по символам. И так во всех книгах по Яве. Ведь utf-8 это круче, нужно готовить подрастающее поколение. Вот в Qt5 поступили по-взрослому: раз и кодировка по умолчанию utf-8 и это не обсуждается (не настраивается). Кстати, а не подскажешь итератор по символам в Яве, который даёт доступ к четырёх байтовым символам? Если не сложно пример кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 10:32 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby Насколько я понимаю, Windows и iOS за строки именно utf-16 считают, а Linux оперирует с utf-8. Поэтому те кто давит за utf-8 просто рассказывает, что вы неудачник, если программируете для ios или windows. Здесь белые нитки по всему чёрному полю. Я скажу во первых что - ничего подобного. Наш разговор распался на 2 бранча еще давно. Одна часть - это интернационализация, сериализация и стандарты текстовых файлов и интернета. И другая часть - это внутренняя форма представления строк в API вызовах конкретной операционной системы. И наш технический спор - спор очень многосторонний и многогранный часто переходит границы этих бранчей. Мы прыгаем то на одну тему то на другую. Моя идея о том что строка это не массив а Stream<Char> это вообще философская идея от итераторов и ФП и я ее продолжаю отстаивать как свое видение будущего для всех строковых типов данных всех языков. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 11:01 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton, Не имеет значения, на что распался разговор. Где switch и где итераторы... исключительно в плане уточнения - правильно ли я понимаю, что сейчас вы называете итераторами то, что C++ называет итераторами, и не подразумеваете итераторов в java? То что ты говоришь про итераторы - здорово. Но поворачивает на несколько страниц назад. Итератор, вероятно, должен уметь указывать на/возвращать символ. А символ-то, в конце концов, это кто? И вообще - сама строка состоит ли из символов или символ извлекается из неё, но неизвестно, из чего она там состоит? В этом месте в utf-16 мы с разбегу утыкаемся лбом в грабли, брошенные со времен ucs-2 со строгими приговором - не сметь трогать charat. Что бы вы ни думали там себе про символы - получите в качестве такового именно, что вернет charat, или пользуйтесь дописанным после default новым интерфейсом. От дырки во лбу спасают только заговоры - "да никогда в жизни вы своим кодом не упретесь ни в какие композиционный символы, поэтому фактически нигде никакой ваш код не сломается, если вы используете только charAt". Может и правда оно так. Но в этом месте желательно хотя бы сознательно понимать, что ты для себя автоматически и бессознательно выбираешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 11:44 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
petrav следовало бы Есть концептуальная вещь: нельзя индексировать строку по "символам". По кодовым точкам можно, но "вам не понравится". Эта концепция от языка не зависит и создаёт вполне обоснованные преференции для UTF8. Поскольку зоопарк (даже всего трёх) кодировок - плохо, то UTF-16/-32 должны "сдохнуть". Это тоже концептуально и тоже не зависит от языка программирования. А вот ваши домыслы про charAt() и java-доки - лучше удерживать при себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 11:47 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Есть концептуальная вещь: нельзя индексировать строку по "символам". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 12:12 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Тема достойна пятничного топика. Я подниму завтра. Мы обсуждаем только одну сторону. Оператор индекса или charAt. Это узко. Мы же не узко-мыслящие? Верно? Строка это масссив или Stream? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 12:14 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton Строка это масссив или Stream? Как там в школе учили? Свет — это одновременно и волна, и частица. Дуалистическая теория? Для простых применений массив. Для, например, сложного морфологического анализа — поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 12:45 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton ... Строка это масссив или Stream? а по какой причине - не двусвязный список? Он знает, для всякого символа - есть у конкретного символа предыдущий. Раз уж ты сказал "итераторы", в том смысле, в каком их "должно быть достаточно" для построения любого алгоритма, стой на своем, то за вычетом причуд какой-то конкретной реализации, разговор сводится к тому, какие алгоритмы на самом деле ломаются и не могут быть или дорого переписываются при переходе от представлению строки "массивом" к "двусвязному" и затем "односвязному" списку (здесь в качестве модели stream) Конкретный выбор кодирующего представления можно и проигнорировать, хотя от него может приходить какая-то своя степень сумятицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 12:46 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
booby mayton ... Строка это масссив или Stream? а по какой причине - не двусвязный список? Он знает, для всякого символа - есть у конкретного символа предыдущий. Раз уж ты сказал "итераторы", в том смысле, в каком их "должно быть достаточно" для построения любого алгоритма, стой на своем, то за вычетом причуд какой-то конкретной реализации, разговор сводится к тому, какие алгоритмы на самом деле ломаются и не могут быть или дорого переписываются при переходе от представлению строки "массивом" к "двусвязному" и затем "односвязному" списку (здесь в качестве модели stream) Конкретный выбор кодирующего представления можно и проигнорировать, хотя от него может приходить какая-то своя степень сумятицы. Я думаю что мы начнем с односвязного. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 12:49 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
rdb_dev нужно, если необходимо построить отношения при пересечении строковых множеств на основе символьного ключа. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 13:54 |
|
Очень интересны нюанс с оператором 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 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonМой знакомый доцент математики говорил что когда говорят "этож очевидно" - в ответ надо бить в морду. Он точно математик? У них половина доказательств теорем так делается. Неверующие могут открыть "man 3 open" и прочитать список его флагов. Обращая особое внимание на те, у которых написано "делает то же самое, что флаг Х функции У" и версию в которой они появились. Хочешь джентльменское пари? Я просто докажу что open(..) делает меньше действий. По другому докажу. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 14:22 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonХочешь джентльменское пари? Я просто докажу что open(..) делает меньше действий. То есть Вы на спор подтвердите то, что я сказал выше о меньшем функционале open() по сравнению с CreateFile()?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 14:25 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonХочешь джентльменское пари? Я просто докажу что open(..) делает меньше действий. То есть Вы на спор подтвердите то, что я сказал выше о меньшем функционале open() по сравнению с CreateFile()?.. Ну... я предполагаю что факты расставят все на свои места. Факты - упрямая вещь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 14:26 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonФакты - упрямая вещь. Звучит логично. Осталось только составить табличку в левом столбце которой будут флаги и возможности CreateFile(), а в правом - их аналоги у open(). Начать можно с уже упомянутых FILE_ATTRIBUTE_TEMPORARY и FILE_FLAG_DELETE_ON_CLOSE. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 14:39 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonФакты - упрямая вещь. Звучит логично. Осталось только составить табличку в левом столбце которой будут флаги и возможности CreateFile(), а в правом - их аналоги у open(). Начать можно с уже упомянутых FILE_ATTRIBUTE_TEMPORARY и FILE_FLAG_DELETE_ON_CLOSE. Мой спор основан не на возможностях о которых ты говоришь. И не на "два-три вызова совершенно левых функций чтобы установить недостающие флаги". А на перформансе. Я беру две эквивалентных конфигурации по железу. И смотрю где быстрее идет компилляция крупного проекта. И дальнейшие аргументы заслушивать уже как-то не особо интересно. Зачем нужна API богатый возможностями но которые особо не нужны. Флаги, говоришь DELETE_ON_CLOSE? Вещь полезная. Но наверное не в рамках моего пари. Вот как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 14:58 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
maytonЯ беру две эквивалентных конфигурации по железу. И смотрю где быстрее идет компилляция крупного проекта. И дальнейшие аргументы заслушивать уже как-то не особо интересно. То есть ты утверждаешь, что компиляция вызова функции с семью параметрами идёт медленнее, чем компиляция вызова функции с тремя параметрами. И это всё? Объём и состав подключенных заголовков тут как бы совсем ни при чём?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 15:08 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
Я утверждаю что дизайн функции CreateFile(..) в большинстве случаев - избыточен для практического применения. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 15:09 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
В большинстве случаев при вызове этой функции шесть параметров из семи - нули. PS: И таки да, если тебе не нужна функциональность CreateFile() - не пользуйся им. open() из стандартной CRT всё так же имеет три любимых тобой параметра, хотя я не представляю случаев когда требуется использовать последний из них. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 15:16 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
(разводя руками) Ну вот. Дернули переходник. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 15:28 |
|
Очень интересны нюанс с оператором switch
|
|||
---|---|---|---|
#18+
mayton А на перформансе. Я беру две эквивалентных конфигурации по железу. И смотрю где быстрее идет компилляция крупного проекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 17:10 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017371]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
181ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 272ms |
0 / 0 |