Oberon space
General Category => Общий раздел => Тема начата: Berserker от Май 26, 2011, 12:56:58 pm
-
Хорошо повышать надёжность языка, убирая из него потенциально опасные возможности. Впорос: почему в Обероне не запретили использовать несколько подряд идущих операторов? Тогда не нужно извращаться со сменой знаков (AND - &, OR - |) и результат всегда очевиден. Оберон ещё ладно, а вот то, что в остальных языках творится...
Лично я никогда не заучивал приоритеты операций для очередного языка Х. Использую скобки. Считаю приоритеты анахронизмом и потворством лени.
-
Без этих анахронизмов у вас получится лисп :-)
-
Без этих анахронизмов у вас получится лисп :-)
С чего бы это? т.е. почему , скажем, не Форт?
-
2Berserker: Вероятно, Вы имели в виду "операции" (operators), а не "операторы" (statements). ;)
В Обероне приоритеты операций определены неудачно, а в Си с этим вообще бардак, даже говорить не хочется :)
-
Да, операции. Но смысл не только в том, что в очередном языке таблица приоритетов удачная/неудачная, а в том, что приоритеты зачастую есть потенциальный источник ошибок. Если запретить двум операциям идти одной за другой, то проблема исчезнет и на любом ЯП код будет одинаково читаться и восприниматься.
-
Да, операции. Но смысл не только в том, что в очередном языке таблица приоритетов удачная/неудачная, а в том, что приоритеты зачастую есть потенциальный источник ошибок. Если запретить двум операциям идти одной за другой, то проблема исчезнет и на любом ЯП код будет одинаково читаться и восприниматься.
Это будет неюзабельно совершенно:
a + b - c
a && b && c
вполне нормальные читабельные выражения.
Скобки появляются сами собой, как способ группировать логически связаные подусловия:
ok && (a || b)
Поэтому проблем из-за порядка операций в хорошем коде не возникает вообще. Я вот до сих пор не помню эти приориты для C++. Недавно лазил в таблицу, потому что наткнулся на древнючий код со сложным условием и без скобок.
Короче, не придумывайте экстремизмы, их и так много в оберонах :)
-
вполне нормальные читабельные выражения.
А если для операций разных групп?
(a + 3) || (b + 5)
d && (!e)
-
вполне нормальные читабельные выражения.
А если для операций разных групп?
(a + 3) || (b + 5)
d && (!e)
Не, ну естественно унарные операции (унарный '!') должны иметь больший приоритет, чем бинарные. Никто (!e) не пишет. И (!a && !b) тоже читается нормально, если пробелы не забывать.