powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Использование приоритетности операторов или скобки
25 сообщений из 107, страница 1 из 5
Использование приоритетности операторов или скобки
    #38823768
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда сталкиваюсь с кодом, в котором разработчики не используют скобки, а выстраивают выражения используя приаритетность выполнения операторов. я вот на память эту приоритетность не помню, мне удобнее все оформлять скобками.
Насколько использование приоритетности выполнения операторов прибавляет крутизны. По мне так просто создается плохочитаемый код.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823794
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George-III,

наоборот, лишние скобки создают нечитаемый код.
поэтому лишние скобки нужно убирать.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823796
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Некоторые разработчики думают, что мировой запас скобок жёстко ограничен, и их следует использовать только в самых необходимых случаях" (с) одна хорошая книга по программированию.

1. Не помните приоритетность - плохо. Равно можете не помнить правила дорожного движения, правила грамматики итд.

2. "Вам удобнее" и "Вам плохо читаемо" - это не аргумент.

3. Крутизна тут не при чём.

4. Нехватка скобок ухудшает читаемость кода. Избыток скобок ухудшает читаемость кода. Слишком длинные и сложные выражения, в том числе со скобками и в том числе без скобок, ухудшают читаемость кода. В любом случае важна адекватность и чувство меры.

5. Идеального кода в мире мало. Важным для программиста является умение разобраться в неидеальном коде.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823814
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George-IIIя вот на память эту приоритетность не помню, мне удобнее все оформлять скобками.


Если ты не знаешь язык программирования, на котором пишешь -- учи его. Приоритеты -- одна из составляющих языка программ.
Во многих (в большинстве) ЯП приоритеты операций более-менее соответствуют приоритету аналогичных операций из математики и булевой алгебры. Учи математику и булеву алгебру, если ты ещё их не знаешь (хотя это совсем странно, 4 класс школы, если я не ошибаюсь, а булева -- нач. курс института, но на это я дам подсказку -- AND -- называют логическим умножением (& или && ),
OR -- логическим сложением (| или ||), поэтому относительные приоритеты у этих операций такие же, как и у соотв. операций алгебры чисел -- у AND больше, у OR меньше. Запомнив эти другие названия этих операций ты всегда будешь помнить их приоритеты. Надо ещё запомнить, что логическое НЕ имеет самый большой приоритет (больше AND и OR), можно считать, что NOT -- это логический унарный минус (смена знака). А XOR используется достаточно редко, там можно и скобки поставить.)
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823828
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer"Некоторые разработчики думают, что мировой запас скобок жёстко ограничен, и их следует использовать только в самых необходимых случаях" (с) одна хорошая книга по программированию.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823851
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВо многих (в большинстве) ЯП приоритеты операций более-менее соответствуют приоритету аналогичных операций из математики и булевой алгебры.
Проблемы с приоритетом идут как правило на стыке арифметических и логических операций. Ещё бывают вопросы с приоритетом сравнения, ну и изредка экзотика типа порядка выполнения 1 >> 2 >> 3.

Вот за что не люблю си-подобные языки, так это как раз за кучу "лишних" скобок.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823859
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНе помните приоритетность - плохо. Равно можете не помнить правила дорожного движения, правила грамматики итд.Приоритетность в разных языках и даже диалектах разная. В отличие от ПДД. Я бы посмотрел, как бы ты помнил ПДД, будь они свои для каждой улицы...

George-IIIНасколько использование приоритетности выполнения операторов прибавляет крутизны. По мне так просто создается плохочитаемый код.
Для начала подели приоритетность на абсолютную и языкозависимую. Использование первой естественно. Использование второй - более чем сомнительное занятие. Код не только плохочитаем, но и может оказаться непереносимым. Например, в MS SQL приоритет XOR выше, чем у NOT, а в MySQL наоборот...
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823867
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinasoftwarerНе помните приоритетность - плохо. Равно можете не помнить правила дорожного движения, правила грамматики итд.Приоритетность в разных языках и даже диалектах разная. В отличие от ПДД. Я бы посмотрел, как бы ты помнил ПДД, будь они свои для каждой улицы...
Я бы посмотрел, как ты программируешь на наборе языков, сравнимом с количеством улиц.

ПДД свои для каждой страны, но особых проблем у меня не возникло. Просто перед пересечением границы стоит прочитать список "что там не так и как именно". При этом пересекать границы приходится пожалуй что чаще, чем менять языки программирования. Ну а для того, что входит в текущий набор... понимать приоритеты для трёх-четырёх языков опять-таки никаких проблем не вызывает.

AkinaДля начала подели приоритетность на абсолютную и языкозависимую. Использование первой естественно. Использование второй - более чем сомнительное занятие. Код не только плохочитаем, но и может оказаться непереносимым. Например, в MS SQL приоритет XOR выше, чем у NOT, а в MySQL наоборот...
Блестящий совет. То есть завтра какой-нибудь придурок делает какую-нибудь явную хрень (типа приоритета XOR выше, чем у NOT), и сразу же тот код, который сегодня был естественным и хорошим, завтра же становится более чем сомнительным и плохим.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823905
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivнаоборот, лишние скобки создают нечитаемый код.
поэтому лишние скобки нужно убирать.LISP не может согласиться с вами
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823910
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНапример, в MS SQL приоритет XOR выше, чем у NOT
Хотя если секунду подумать, вообще интересно. Как тогда этот транслятор обходится с выражением NOT A XOR NOT B.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823924
Фотография George-III
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за ответы
MasterZivУчи математику и булеву алгебру, если ты ещё их не знаешь (хотя это совсем странно, 4 класс школы, если я не ошибаюсь, а булева -- нач. курс института
Нет, я знаю приоритеты и арифметических операторов (*,+,/,-). И операторов булевой алгебры, просто для сложных выражений, которые составлены из множества булевых операторов, гораздо проще ориентироваться в коде, если приоритеты выставляются круглыми скобками.
MasterZiv но на это я дам подсказку -- AND -- называют логическим умножением (& или && ),
OR -- логическим сложением (| или ||), поэтому относительные приоритеты у этих операций такие же, как и у соотв. операций алгебры чисел -- у AND больше, у OR меньше. Запомнив эти другие названия этих операций ты всегда будешь помнить их приоритеты. Надо ещё запомнить, что логическое НЕ имеет самый большой приоритет (больше AND и OR), можно считать, что NOT -- это логический унарный минус (смена знака). А XOR используется достаточно редко, там можно и скобки поставить.)
Спасибо, тоже известно, но не помешает продублировать в памяти.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823955
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТо есть завтра какой-нибудь придурок делает какую-нибудь явную хрень (типа приоритета XOR выше, чем у NOT), и сразу же тот код, который сегодня был естественным и хорошим, завтра же становится более чем сомнительным и плохим.
Нет, он и раньше был плохим, просто не каждый это понимал.

Пример такого разночтения я привёл. И те, кто переносит свои выросшие проекты с MySQL на MS SQL, хлебают своего же дерьма полной ложкой, если заблаговременно не позаботились в т.ч. и об этой стороне переносимости кода.

Что же до "придурок" - те системы, которые широко используются, настолько широко, что с их пониманием приоритетности приходится считаться, создают вовсе даже не придурки. И их понимание приоритетности никогда не строится на пустом месте и не высасывается из пальца. Прежде чем называть их придурками, надо получить на это право - как минимум созданием чего-либо аналогичного по масштабу значимости.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823964
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarersoftwarerНапример, в MS SQL приоритет XOR выше, чем у NOT
Хотя если секунду подумать, вообще интересно. Как тогда этот транслятор обходится с выражением NOT A XOR NOT B.
Вариантов два.
NOT (A XOR NOT B) - так посчитает MS SQL
(NOT A) XOR (NOT B) - так посчитает MySQL
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823979
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сегодняшняя неделя пройдет под флагом "синтаксических холиваров".
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823983
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinasoftwarerТо есть завтра какой-нибудь придурок делает какую-нибудь явную хрень (типа приоритета XOR выше, чем у NOT), и сразу же тот код, который сегодня был естественным и хорошим, завтра же становится более чем сомнительным и плохим.
Нет, он и раньше был плохим, просто не каждый это понимал.
В том числе Akina 16944631 , согласно которому он был "естественным" до тех пор, пока у всех было одинаково.

AkinaИ те, кто переносит свои выросшие проекты с MySQL на MS SQL, хлебают своего же дерьма полной ложкой, если заблаговременно не позаботились в т.ч. и об этой стороне переносимости кода.
Как бы деликатно сказать.... сама постановка вопроса настолько идиотская, что вовсе не приоритет операций будет в этом случае главной проблемой.

AkinaЧто же до "придурок" - те системы, которые широко используются, настолько широко, что с их пониманием приоритетности приходится считаться, создают вовсе даже не придурки. И их понимание приоритетности никогда не строится на пустом месте и не высасывается из пальца.
Вы плохо представляете себе жизненный цикл систем. Скажем, однажды, в конце семидесятых годов, некоторые люди, которые писали на ассемблере первую версию Oracle, выбрали для хранения строк "паскалевский" формат, ибо им так было удобнее по их инструментальным средствам. Чуть позже, в конце восьмидесятых годов, другие люди, которые писали альтернативные rdbms на сях, выбрали для хранения строк "сишный" формат, ибо им так было удобнее по их инструментальным средствам. Прямым следствием этих двух решений стали бущующий по сей день идиотизм "пустая строка должна отличаться от null" и флейм "в оракле строки не как везде". Подобные эпизоды, безусловно, появляются не на пустом месте, но если Вы думаете, что где-то там сидят высоколобые мудрые разработчики и тщательнейше планируют все варианты и их последствия на сорок лет вперёд, то Вы глубоко заблуждаетесь.

Тем не менее, если о пустых строках в принципе можно спорить, то ряд подобных "не из пальца" решений иначе как идиотизмом не назовёшь. Скажем, в том же MSSQL очень долго unique constraint допускал один и только один null в таблице, а на попытку вставить второй говорил "нарушение уникальности". И описанная Вами оригинальная схема приоритетов - если это действительно так - ровно из той же серии. Хотя у того и другого, безусловно, есть какие-то внутренние причины, и при желании даже можно раскопать, какие.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823985
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaВариантов два.
NOT (A XOR NOT B) - так посчитает MS SQL
По идее, он вообще должен выдать синтаксическую ошибку в этом случае и требовать записать NOT A XOR (NOT B). В противном случае грамматика вместо LR(x) или чего-нибудь другого приятного становится контекстно-свободной с соответствующими последствиями для удобства и эффективности транслятора.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823991
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тут на бумажке таблицу истинности набросал.

Вобщем

Код: plaintext
1.
(NOT A) XOR (NOT B) = A XOR B



А вы говорите - слон...
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38823997
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ тут на бумажке таблицу истинности набросал. Вобщем
Дык. Именно преобразованием в обратную сторону я это и получил, прикидывая, для чего такие приоритеты вообще могут понадобиться :) Правда имхо такие вещи нужно делать в уме, равно как всякие not (a and b) etc.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824017
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не путаю:
Код: sql
1.
NOT (A XOR B) = (NOT A) XOR B = A XOR (NOT B)


т.е. вообще пофиг что приоритетнее XOR или NOT

Приведите кто-нибудь реальный пример когда приоритет меняет результат. Я такой придумать не смог.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824023
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Вы правы, если говорить только о XOR и NOT. Проблему представляет другое, а именно то, что против всякой привычной логики, XOR оказывается по приоритету выше AND.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824025
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
George-III просто для сложных выражений , которые составлены из множества булевых операторов, гораздо проще ориентироваться в коде, если приоритеты выставляются круглыми скобками.Судя по начавшемуся холиварчику, следует не только ставить скобки, но и желательно весьма сложные выражения подсчитывать за несколько ходов, разделяя их на более простые и храня промежуточные результаты в переменных.

Хотя, вам неплохо было бы привести пример сложного безскобочного выражения, так было бы яснее.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824026
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот достаточно частый пример который я объясняю своим девелоперам.

Код: plaintext
1.
2.
3.
4.
5.
int progress = getProgress();

int percent = 100 * progress/MAX_CNT; // Incorrect.

int percent = (100 * progress)/MAX_CNT; // Correct.
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824046
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For AllLISP не может согласиться с вами
В лиспе лишних скобок нет :)
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824054
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyFor AllLISP не может согласиться с вами
В лиспе лишних скобок нет :)
+1
...
Рейтинг: 0 / 0
Использование приоритетности операторов или скобки
    #38824055
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.желательно весьма сложные выражения подсчитывать за несколько ходов, разделяя их на более простые и храня промежуточные результаты в переменных.До завершения стадии отладки это может быть полезным.

softwarerописанная Вами оригинальная схема приоритетов - если это действительно так - ровно из той же серии.Несомненно. Но она немного упрощает жизнь.

PS. Мне лично скобок как бы не жалко. И лишних переменных тоже. Читабельность кода мне роднее и дороже - впрочем, я не пишу критичных секций, так что дополнительные миллисекунды и байты погоды не делают.
...
Рейтинг: 0 / 0
25 сообщений из 107, страница 1 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Использование приоритетности операторов или скобки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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