Oberon space

General Category => Общий раздел => Тема начата: Berserker от Май 26, 2011, 12:56:58 pm

Название: Заметка: приоритеты операторов
Отправлено: Berserker от Май 26, 2011, 12:56:58 pm
Хорошо повышать надёжность языка, убирая из него потенциально опасные возможности. Впорос: почему в Обероне не запретили использовать несколько подряд идущих операторов? Тогда не нужно извращаться со сменой знаков (AND - &, OR - |) и результат всегда очевиден. Оберон ещё ладно, а вот то, что в остальных языках творится...
Лично я никогда не заучивал приоритеты операций для очередного языка Х. Использую скобки. Считаю приоритеты анахронизмом и потворством лени.
Название: Re:Заметка: приоритеты операторов
Отправлено: valexey от Май 26, 2011, 02:19:35 pm
Без этих анахронизмов у вас получится лисп :-)
Название: Re:Заметка: приоритеты операторов
Отправлено: DIzer от Май 27, 2011, 05:18:36 am
Без этих анахронизмов у вас получится лисп :-)
С чего бы это? т.е. почему , скажем, не Форт?
Название: Re:Заметка: приоритеты операторов
Отправлено: igor от Май 27, 2011, 07:19:17 am
2Berserker: Вероятно, Вы имели в виду "операции" (operators), а не "операторы" (statements).  ;)

В Обероне приоритеты операций определены неудачно, а в Си с этим вообще бардак, даже говорить не хочется  :)
Название: Re:Заметка: приоритеты операторов
Отправлено: Berserker от Май 27, 2011, 12:16:51 pm
Да, операции. Но смысл не только в том, что в очередном языке таблица приоритетов удачная/неудачная, а в том, что приоритеты зачастую есть потенциальный источник ошибок. Если запретить двум операциям идти одной за другой, то проблема исчезнет и на любом ЯП код будет одинаково читаться и восприниматься.
Название: Re:Заметка: приоритеты операторов
Отправлено: vlad от Май 27, 2011, 04:28:07 pm
Да, операции. Но смысл не только в том, что в очередном языке таблица приоритетов удачная/неудачная, а в том, что приоритеты зачастую есть потенциальный источник ошибок. Если запретить двум операциям идти одной за другой, то проблема исчезнет и на любом ЯП код будет одинаково читаться и восприниматься.

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

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

Короче, не придумывайте экстремизмы, их и так много в оберонах :)
Название: Re:Заметка: приоритеты операторов
Отправлено: Berserker от Май 28, 2011, 11:09:19 am
Цитировать
вполне нормальные читабельные выражения.
А если для операций разных групп?
(a + 3) || (b + 5)
d && (!e)
Название: Re:Заметка: приоритеты операторов
Отправлено: vlad от Июнь 02, 2011, 03:02:28 pm
Цитировать
вполне нормальные читабельные выражения.
А если для операций разных групп?
(a + 3) || (b + 5)
d && (!e)

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