本当に素晴らしい出来栄えです!!! - ページ 7

 
MuruFigi >> :

まあ、そうであれば、コンパイラのバグではなく、開発者の脳のバグの話をすべきだというのは、2ページ目でなんとなく納得した。悪気はないんです、むしろ笑うためにこのスレッドを作ったんです。

今ひとつ理解できないのは、このことです。

MQLコンパイラは何をベースに開発されているのですか?普通の言語で開発されたものであれば、掛け算と足し算の演算の優先順位が同じであることにプログラマーはクラクラしたに違いない。どうして見逃したのだろう?みんな本当に好きなところにカッコをつけて、そうでないところにカッコをつけないの?ところで、あまりにも多くの括弧は、コードを明確にする。また、プログラマが2+3*4のような算術演算を書くときは、2+(3*4)とも書きますし、C++コンパイラにバグが入り込んで、一つの式に100個の括弧がネストされても手数でカウントします:)

これは、C、Java、Fortran、MathCadなどなど開発者の脳みそにあるバグです。


どうしてまだわからないんだ!?


ゼットエス


でも、私もそれに気づくのに時間がかかりました。

 
sol писал(а)>>

でも、私もそれに気づくのに時間がかかりました。

いくつかの論理的な組み合わせがうまく機能しない理由が、今になってようやく明らかになった。人工的な括弧を付けなければならなかったのです。

今まで説明できなかった。でも、私もその話題は出さなかったんです。つっこんでなんとか正解を見つけました。しかし、すべてを変えるのに、何度つっこんだら気が済むのだろう。

 
nen >> :

いくつかの論理的な組み合わせがうまく機能しない理由が、今になってようやく明らかになった。人工的な括弧を付けなければならなかったのです。

さっきは説明することがなかったんです。しかし、私もそれを持ち出しませんでした。つっこんでなんとか正解を見つけました。しかし、それをすべて見つけるのに、何度つっこみを入れたことでしょう。

アールティーエフエム


*rofl*

 
MuruFigi >>: みんな本当に括弧をつけるべきところと、つけてはいけないところにつけているのでしょうか?

まあ、もちろん全部が全部ではないですが、いつもそうしています。そして、この「開発者の頭の中のバグ」を知るずっと前から、純粋に習慣として入れていたのです。そして、括弧をつけることはなくてもできるのに、なぜもう一回Helpを掘り下げて優先順位を考えなければならないのでしょうか?ですから、私にとっては、この「バグ」は、面白がってはいても、災いではなかったのです。

また、以前は、C言語でブール演算をするときに、優先順位に疑問はなかったのですが、それを入れていました。正直なところ、括弧のない複雑なブール式は、あまり読みやすいものではないと思っています。

追伸: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. ...

ブール代数の観点からは、andとandの演算は同じ優先順位であることがわかる。

アンドレイ、ブール代数のこれらの演算の優先順位が等しいと結論づけたのはなぜですか?反例です。

a=1, b=0, c=0のとき

(aまたはb)かつc=(1または0)かつ0=0であること

aまたは(bおよびc)=1または(0および0)=1

 
開発者が海外の人なら、トピックスターターがバグを発見してくれたことに感謝するくらいはするはずです。そして、その話題は、修正作業がすでに本格化していることを指して、すぐに閉じられたことでしょう。彼らは、自分たちの評判を大切にしています(それには、多くのお金がかかります)。 そして、「このバカ」と言いながら、ドキュメントや仕様書、表などを読みます。MT4に競合他社があれば、こうはいきません。
 
MuruFigi >> :

MQLコンパイラは何で開発されているのですか?やはり、普通の言語で開発されているのであれば、プログラマーはまず、掛け算と足し算の演算の優先順位が同じであることに怒るはずだ。どうして見逃したのだろう?

さて、ここにも行き過ぎの例があります。それなのに、トピックの立ち上げ人は、冗談でスレッドを立ち上げ、結局この時点までにドキュメントを読んだと報告しています。

 
Rosh >> :

さて、ここにも行き過ぎの例があります。それなのに、発案者は冗談でトピックを立ち上げたと言い、結局この時点までにドキュメントを読んでいる。

持っています :-) 大きな発見は、まったく異なる目的を持って気楽に行われるのが本当なのかもしれません。

 
Galaxy >> :

もう十分です :-)。もしかしたら、大発見というのは、まったく違う目的を持って、気楽に行われているのかもしれませんね。

この「発見」は、大発見とは言い難い。事実を述べるだけで、忘れてしまうことに意味がある。一般に、論理演算の優先順位の問題は突飛であり、異なる演算を持つ論理式を括弧なしで作ることを禁止し、そのような構成は無効と見なす方が開発者にとって安上がりである。

 
Mathemat >> :

アンドリュー、ブール代数におけるこれらの演算の優先順位が等しいというのは、実際には何から推論しているのでしょうか?反例です。

a=1, b=0, c=0のとき

(aまたはb)かつc=(1または0)かつ0=0であること

aまたは(bおよびc)=1または(0および0)=1

a = 美しい

b = スマート

c=リッチ

x = a && b && c ;

y = a | b | c ;


x=1」と「y=1」、どちらがお好みですか?

 
Mathemat >> :

アンドリュー、ブール代数におけるこれらの演算の優先順位が等しいというのは、実際、何から推論されたのでしょうか?

操作の対称性からまた、演算の対称性は、割り当てられた数式から直接導かれる。

ある対称的な操作を他の操作に優先させることはできません。

>>:

アンドレイは、x = 1とy = 1のどちらを選ぶのだろうか?

私は、エリック、個人的なことや卑屈にならずに議論することを望みます。

___________________________________

とにかく、私が言いたいのは

A && B || C という式の結果は、ブール代数の観点からは未定義である。