Автор Тема: Заметка: приоритеты операторов  (Прочитано 8787 раз)

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Заметка: приоритеты операторов
« : Май 26, 2011, 12:56:58 pm »
Хорошо повышать надёжность языка, убирая из него потенциально опасные возможности. Впорос: почему в Обероне не запретили использовать несколько подряд идущих операторов? Тогда не нужно извращаться со сменой знаков (AND - &, OR - |) и результат всегда очевиден. Оберон ещё ладно, а вот то, что в остальных языках творится...
Лично я никогда не заучивал приоритеты операций для очередного языка Х. Использую скобки. Считаю приоритеты анахронизмом и потворством лени.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Заметка: приоритеты операторов
« Ответ #1 : Май 26, 2011, 02:19:35 pm »
Без этих анахронизмов у вас получится лисп :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re:Заметка: приоритеты операторов
« Ответ #2 : Май 27, 2011, 05:18:36 am »
Без этих анахронизмов у вас получится лисп :-)
С чего бы это? т.е. почему , скажем, не Форт?
« Последнее редактирование: Май 27, 2011, 05:25:00 am от DIzer »

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Заметка: приоритеты операторов
« Ответ #3 : Май 27, 2011, 07:19:17 am »
2Berserker: Вероятно, Вы имели в виду "операции" (operators), а не "операторы" (statements).  ;)

В Обероне приоритеты операций определены неудачно, а в Си с этим вообще бардак, даже говорить не хочется  :)

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re:Заметка: приоритеты операторов
« Ответ #4 : Май 27, 2011, 12:16:51 pm »
Да, операции. Но смысл не только в том, что в очередном языке таблица приоритетов удачная/неудачная, а в том, что приоритеты зачастую есть потенциальный источник ошибок. Если запретить двум операциям идти одной за другой, то проблема исчезнет и на любом ЯП код будет одинаково читаться и восприниматься.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Заметка: приоритеты операторов
« Ответ #5 : Май 27, 2011, 04:28:07 pm »
Да, операции. Но смысл не только в том, что в очередном языке таблица приоритетов удачная/неудачная, а в том, что приоритеты зачастую есть потенциальный источник ошибок. Если запретить двум операциям идти одной за другой, то проблема исчезнет и на любом ЯП код будет одинаково читаться и восприниматься.

Это будет неюзабельно совершенно:
a + b - c
a && b && c
вполне нормальные читабельные выражения.

Скобки появляются сами собой, как способ группировать логически связаные подусловия:
ok && (a || b)Поэтому проблем из-за порядка операций в хорошем коде не возникает вообще. Я вот до сих пор не помню эти приориты для C++. Недавно лазил в таблицу, потому что наткнулся на древнючий код со сложным условием и без скобок.

Короче, не придумывайте экстремизмы, их и так много в оберонах :)

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re:Заметка: приоритеты операторов
« Ответ #6 : Май 28, 2011, 11:09:19 am »
Цитировать
вполне нормальные читабельные выражения.
А если для операций разных групп?
(a + 3) || (b + 5)
d && (!e)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Заметка: приоритеты операторов
« Ответ #7 : Июнь 02, 2011, 03:02:28 pm »
Цитировать
вполне нормальные читабельные выражения.
А если для операций разных групп?
(a + 3) || (b + 5)
d && (!e)

Не, ну естественно унарные операции (унарный '!') должны иметь больший приоритет, чем бинарные. Никто (!e) не пишет. И (!a && !b) тоже читается нормально, если пробелы не забывать.