Ein wirklich erstaunliches Ergebnis!!! - Seite 7

 
MuruFigi >> :

Nun, ich habe auf der zweiten Seite zugestimmt, dass wir in diesem Fall nicht von einem Fehler im Compiler sprechen sollten, sondern von einem Fehler im Gehirn der Entwickler. Nichts für ungut, ich habe diesen Thread eher zum Lachen gemacht.

Was ich jetzt nicht verstehe, ist Folgendes.

Worauf basiert die Entwicklung des MQL-Compilers? Wenn sie in einer normalen Sprache entwickelt wurde, müssen die Programmierer von der Tatsache verrückt geworden sein, dass Multiplikations- und Additionsoperationen die gleiche Priorität haben. Wie hätten sie das übersehen können? Setzt wirklich jeder Klammern, wo er will und wo er nicht will? Übrigens, auch zu viele Klammern machen den Code übersichtlicher. Und wenn Ihre Programmierer arithmetische Operationen wie 2+3*4 schreiben, schreiben sie auch 2+(3*4), oder Gott bewahre, dass sich ein Fehler in einem C++-Compiler einschleicht und die Verschachtelung von 100 Klammern in einem Ausdruck manuell gezählt wird:)

Dies ist ein Fehler in den Gehirnen von C-, Java-, Fortran-, MathCad- usw. usw. Entwicklern.


Wie du es immer noch nicht kapierst!


ZS


Obwohl ich zugeben muss, dass es auch bei mir eine Weile gedauert hat, bis ich es begriffen habe.

 
sol писал(а) >>

Obwohl ich zugeben muss, dass es auch bei mir eine Weile gedauert hat, bis ich das erkannt habe.

Erst jetzt wurde klar, warum einige logische Kombinationen nicht richtig funktionieren wollten. Ich musste künstliche Klammern hinzufügen.

Ich konnte es vorher nicht erklären. Aber ich habe das Thema auch nicht angesprochen. Durch Herumstochern habe ich die richtige Lösung gefunden. Aber wie oft musste ich herumstochern, um alles zu ändern?

 
nen >> :

Erst jetzt wurde klar, warum einige logische Kombinationen nicht richtig funktionieren wollten. Ich musste künstliche Klammern hinzufügen.

Zuvor gab es keine Erklärung dafür. Aber ich habe es auch nicht erwähnt. Durch Herumstochern habe ich die richtige Lösung gefunden. Aber wie oft musste ich herumstochern, um alles zu finden?

RTFM


*rofl*

 
MuruFigi >>: Setzt wirklich jeder Klammern, wo er sollte und wo er nicht sollte?

Natürlich nicht alle hintereinander, aber ich tue es immer. Und zwar aus reiner Gewohnheit, lange bevor ich von diesem "Fehler im Kopf der Entwickler" erfuhr. Und warum muss ich mich noch einmal in die Hilfe vertiefen, um die Prioritäten herauszufinden, wenn ich auch ohne sie auskommen kann, indem ich Klammern setze? Für mich war dieser "Bug" also keine Katastrophe, auch wenn er mich amüsiert hat.

Und früher, als ich etwas Boolesches in C geschrieben habe, habe ich sie auch gesetzt, obwohl ich keine Zweifel an den Prioritäten hatte. Um ehrlich zu sein, glaube ich, dass ein komplexer boolescher Ausdruck ohne Klammern nicht sehr lesbar ist.

P.S. Bitte verwenden Sie nicht so ein schwachsinniges Beispiel wie 2+3*4. Wäre ein solch kluger Schachzug mit Prioritäten bei arithmetischen Operationen geschehen, hätte ich absolut keine Skrupel, dies als echten Fehler zu bezeichnen.

Im Übrigen:

  1. Das Distributivitätsgesetz (Öffnen von Klammern):
    x 1 oder (x 2 und x 3 ) = (x 1 oder x 2 ) und (x 1 oder x 3 )
    x 1 und (x 2 oder x 3 ) = (x 1 und x 2 ) oder (x 1 und x 3 )
  2. ...

Daraus folgt, dass aus der Sicht der Booleschen Algebra die Operationen und und die gleiche Priorität haben.

Andrei, wie kommst du zu dem Schluss, dass die Prioritäten dieser Operationen in der Booleschen Algebra gleich sind? Gegenbeispiel:

bei a=1, b=0, c=0

(a oder b) und c = (1 oder 0) und 0 = 0

a oder (b und c) = 1 oder (0 und 0) = 1

 
Wenn der Entwickler aus dem Ausland käme, würde man dem Themenstarter zumindest für die Entdeckung des Fehlers danken. Und das Thema wäre schnell geschlossen worden mit dem Hinweis, dass die Arbeit an der Behebung bereits in vollem Gange ist: Sie legen Wert auf ihren Ruf (das kostet eine Menge Geld). Und wir sagen "du Dummkopf", lies die Dokumentation, Spezifikationen, Tabellen usw. Dies wäre nicht der Fall, wenn MT4 einen Konkurrenten hätte.
 
MuruFigi >> :

In welcher Sprache wird der MQL-Compiler entwickelt? Denn wenn sie in einer normalen Sprache entwickelt wird, hätten die Programmierer zunächst einmal schockiert sein müssen, dass ihre Multiplikations- und Additionsoperationen die gleiche Priorität haben. Wie hätten sie das übersehen können?

Nun, hier ist ein weiteres Beispiel für Übertreibung. Dennoch berichtet der Themenstarter, dass er den Thread als Scherz begonnen und die Dokumentation zu diesem Zeitpunkt bereits gelesen hatte.

 
Rosh >> :

Nun, hier ist ein weiteres Beispiel für Übertreibung. Der Initiator sagt jedoch, dass er das Thema als Scherz begonnen hat und die Dokumentation inzwischen gelesen hat.

Ich hab's :-) Vielleicht stimmt es ja, dass große Entdeckungen in aller Ruhe und mit ganz unterschiedlichen Zielen gemacht werden.

 
Galaxy >> :

Ich habe genug davon :-). Vielleicht stimmt es ja, dass große Entdeckungen in aller Ruhe gemacht werden, und zwar zu ganz anderen Zwecken.

Diese "Entdeckung" kann kaum als große Entdeckung bezeichnet werden. Es lohnt sich, diese Tatsache festzustellen und sie zu vergessen. Im Allgemeinen ist das Thema der Priorität boolescher Operationen weit hergeholt: Es wäre für die Entwickler billiger, die Bildung boolescher Ausdrücke mit verschiedenen Operationen ohne Klammern einfach zu verbieten und solche Konstruktionen als ungültig zu betrachten.

 
Mathemat >> :

Andrew, woraus leiten Sie eigentlich ab, dass die Prioritäten dieser Operationen in der Booleschen Algebra gleich sind? Gegenbeispiel:

bei a=1, b=0, c=0

(a oder b) und c = (1 oder 0) und 0 = 0

a oder (b und c) = 1 oder (0 und 0) = 1

a = schön

b = intelligent

c = reich

x = a && b && c ;

y = a || b || c ;


Ich frage mich, was dir lieber ist, Andrej: x = 1 oder y = 1?

 
Mathemat >> :

Andrew, woraus haben Sie eigentlich abgeleitet, dass die Prioritäten dieser Operationen in der Booleschen Algebra gleich sind?

Von der Symmetrie der Operationen. Und die Symmetrie der Operationen ergibt sich direkt aus den zugeordneten Formeln.

Eine symmetrische Operation kann keinen Vorrang vor einer anderen haben.

>> :

Ich frage mich, was Andrey vorziehen würde: x = 1 oder y = 1?

Ich würde es vorziehen, Eric, zu argumentieren, ohne persönlich und spöttisch zu werden.

___________________________________

Wie auch immer, ich will damit sagen.

Das Ergebnis des Ausdrucks A && B || C ist im Sinne der Booleschen Algebra undefiniert.