Воистину поразительный результат!!! - страница 7

 
MuruFigi >>:

Ну я вроде на второй странице согласился, что мол если так, то нужно говорить не о баге в компиляторе, а о баге в мозгах разработчиков. Без обид, я эту тему скорее для смеха сделал.

Мне вот что непонятно теперь.

На чем разрабатывается компилятор MQL? Ведь если он разрабатывается на нормальном языке, то программистов в первую очередь должно было расколбасить от того, что у них операции умножения и сложения имеют равный приоритет. Как они могли такое пропустить? Что неужели все подряд ставят скобки где нужно и где не нужно? Кстати, большое количество скобок тоже ухудшает наглядность кода. А когда ваши программисты пинут арифметичечкие операции типа 2+3*4 они тоже пишут 2+(3*4), а то не дай Бог бага проскочит в компиляторе С++ да и вложенность 100-ста скобок в одном выражении вручную посчитать это ж кайф:)

Это баг в мозгах разработчиков C, Java, Fortran, MathCad etc. etc. etc.


Как ты до сих пор не понял!


ЗЫ


Хотя, признаюсь, мне тоже понадобилось время чтобы это осознать.

 
sol писал(а) >>

Хотя, признаюсь, мне тоже понадобилось время чтобы это осознать.

Только сейчас стало понятно, почему некоторые логические комбинации не хотели выполняться как надо. Приходилось добавлять искусственные скобки.

Ничем не мог ранее это объяснить. Но и тему не поднимал. Методом тыка находил нужное решение. Но это сколько же надо тыкать, чтобы все перетыкать?

 
nen >>:

Только сейчас стало понятно, почему некоторые логические комбинации не хотели выполняться как надо. Приходилось добавлять искусственные скобки.

Ничем не мог ранее это объяснить. Но и тему не поднимал. Методом тыка находил нужное решение. Но это сколько же надо тыкать, чтобы все перетыкать?

RTFM


*rofl*

 
MuruFigi >>: Что неужели все подряд ставят скобки где нужно и где не нужно?

Ну не все подряд, конечно, но я - ставлю всегда. И чисто по привычке ставил их еще задолго до того, как узнал об этом "баге в голове разработчиков". А зачем мне лишний раз лазить в хелп для выяснения приоритетов, если я могу обойтись и без этого, поставив скобки? Поэтому для меня этот "баг" катастрофой не стал, хотя и позабавил.

Да и раньше, когда что-то булевское на Си писал, тоже их ставил, хотя в приоритетах не сомневался. А если честно, то считаю, что сложное булевское выражение без скобок - это нечто не очень читабельное.

P.S. Только, пожалуйста, прошу не приводить идиотские примеры типа 2+3*4. Если бы такой финт с приоритетами случился для арифметических операций, я абсолютно без угрызений совести называл бы его самым настоящим багом.

Кстати:

  1. закон дистрибутивности (раскрытия скобок):
    x 1 or (x 2 and x 3 ) = (x 1 or x 2 ) and (x 1 or x 3 )
    x 1 and (x 2 or x 3 ) = (x 1 and x 2 ) or (x 1 and x 3 )
  2. ...

Из чего следует, что с точки зрения булевой алгебры операции or и and имеют одинаковый приоритет.

Андрей, из чего ты, собственно, вывел, что приоритеты эти операций в булевой алгебре равны? Контрпример:

при a=1, b=0, c=0

(a or b) and c = (1 or 0) and 0 = 0

a or (b and c) = 1 or (0 and 0) = 1

 
Если разработчик был бы забугорный, то топикстартеру бы за находку бага как минимум спасибо сказали. И тему быстренко бы прикрыли ссылаясь что работа по исправлению уже идет полным ходом: репутацией своей дорожат (больших денег стоит). А у нас говорят "сам дурак", читай документацию, спецификацию, таблицу и т.д. Вот если был бы конкурет у МТ4 было бы совсем не так.
 
MuruFigi >>:

На чем разрабатывается компилятор MQL? Ведь если он разрабатывается на нормальном языке, то программистов в первую очередь должно было расколбасить от того, что у них операции умножения и сложения имеют равный приоритет. Как они могли такое пропустить?

Ну вот еще один образчик передергивания. И при этом топик стартер сообщает, что завел тему для прикола, и документацию к этому моменту все же прочитал.

 
Rosh >>:

Ну вот еще один образчик передергивания. И при этом топик стартер сообщает, что завел тему для прикола, и документацию к этому моменту все же прочитал.

Доприкаловался :-) Может и правда, что великие открытия делаются непринужденно, имея совсем другие цели.

 
Galaxy >>:

Доприкаловался :-). Может и правда, что великие открытия делаются непринужденно, имея совсем другие цели.

Это "открытие" вряд ли имет смысл относить к великим. Оно стоит только того, чтобы просто констатировать сам факт и забыть. Да и вообще тема приоритета булевых операций надуманна: разработчикам было бы дешевле просто запретить строить булевы выражения с разными операциями без скобок и считать такие конструкции ошибочными.

 
Mathemat >>:

Андрей, из чего ты, собственно, вывел, что приоритеты эти операций в булевой алгебре равны? Контрпример:

при a=1, b=0, c=0

(a or b) and c = (1 or 0) and 0 = 0

a or (b and c) = 1 or (0 and 0) = 1

а = красивая

b = умная

c = богатая

x= a && b && c ;

y = a || b || c ;


Интересно, что бы ты Андрей предпочел: х = 1 или y = 1 ?

 
Mathemat >>:

Андрей, из чего ты, собственно, вывел, что приоритеты эти операций в булевой алгебре равны?

Из симметричности операций. А симметричность операций напрямую следует из выделенных формул.

У одной из симметричных операций не может быть приоритета над другой.

Galaxy >>:

Интересно, что бы Андрей предпочел: х = 1 или y = 1 ?

Я бы предпочел, Эрик, спорить без перехода на личности и ерничания.

___________________________________

Вобщем я к чему

Результат выражения A && B || C с точки зрения булевой алгебры неопределен.

Причина обращения: