Ein wirklich erstaunliches Ergebnis!!! - Seite 6

 
Reshetov писал(а) >>

Clive Sinclair entwickelte einst den billigen Personal Computer ZX-Spectrum. Nachdem die erste Version in großen Mengen ausverkauft war, stellte sich heraus, dass die Entwickler eine Menge Fehler im ROM hatten. Also entschied man sich, die Fehler zu dokumentieren, anstatt sie zu beheben, um die volle Kompatibilität mit früheren Versionen herzustellen. Und die Entscheidung erwies sich als richtig, denn die Fehler wurden später verwendet, um die Software eben dieses Computers vor dem Knacken zu schützen.


Ich glaube, dass der in diesem Thread beschriebene Fehler auch beibehalten und zum Schutz von Expert Advisors verwendet werden kann, d.h. zum Einfügen einer logisch falschen Bedingung, z.B. zur Überprüfung des Verfallsdatums. Und diejenigen, die dekompilieren, sollen verrückt werden.

Ich hoffe, dass die Diskussion über diesen Fehler die MQL5-Entwickler motivieren wird, ihn zu beheben. Ich werde ohnehin alle Programme in MQL5 neu schreiben müssen.

 
nen >> :

Die Diskussion über diesen Fehler wird die MQL5-Entwickler hoffentlich dazu anregen, ihn zu beheben. Ich werde ohnehin alle Programme in MQL5 neu schreiben müssen.

Ein Beweis, dass es sich um einen Irrtum handelt, her damit!

Eigentlich eine gegenteilige Aussage:


Die Grundgesetze der Booleschen Algebra

Zwei Formeln der Booleschen Algebra sind äquivalent, wenn die ihnen zugeordneten Funktionen gleich sind (d. h. sie nehmen auf allen Mengen von Argumenten die gleichen Werte an). Im Folgenden sind die grundlegenden Gesetze der Booleschen Algebra aufgeführt, die identische Umformungen von Formeln der Booleschen Algebra ermöglichen (beachten Sie, wie ähnlich sie den Gesetzen der klassischen Arithmetik sind):

  1. das Gesetz der doppelten Verneinung: nicht x = x
  2. das Gesetz der Kommutativität (das Ergebnis ändert sich nicht durch die Permutation der Argumente):
    x 1 oder x 2 = x 2 oder x 1
    x 1 und x 2 = x 2 und x 1

  3. Das Gesetz der Assoziativität (die Reihenfolge der Berechnungen)
    x 1 oder (x 2 oder x 3 ) = (x 1 oder x 2 ) oder x 3
    x 1 und (x 2 und x 3 ) = (x 1 und x 2 ) und x 3

  4. das Distributivitätsgesetz (Öffnen der 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 )
  5. ...

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

 
Das ist kein Irrtum. Das ist ein verdammter Irrtum.
 
TheXpert писал(а) >>

das Distributivitätsgesetz (öffnende 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 )

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

Sei nicht gehässig. Ihr Beispiel unterscheidet sich von dem, mit dem die Diskussion begann. Schauen Sie genauer hin.

 
keekkenen писал(а) >>

Eigentlich ist das kein Thema für einen Programmierer, denn die Spezifikation jeder Sprache steht an erster Stelle und es spielt keine Rolle, dass es irgendwo andere Standards gibt...

und eine einheitliche Norm ist ein Wunschtraum, wissen Sie.

Ich denke, das ist die beste Idee.

Jede Sprache hat ihre eigenen Normen. Zum Beispiel haben C++ und Pascal unterschiedliche Regeln für die Berechnung von ganzen Zahlen. In einigen Sprachen beginnen die Indizes mit 0, in anderen mit 1. Ich glaube nicht, dass das alles eine Rolle spielt.

Es handelt sich um eine Fehlinterpretation der Naturgesetze, d.h. derjenigen Gesetze, die sich der menschlichen Kontrolle entziehen. Und die von Menschen geschaffenen Regeln und Gesetze sind das Vorrecht ihrer Schöpfer. In diesem Fall ist es nur wichtig, dass die Gesetze verkündet werden; in diesem Fall werden die Regeln veröffentlicht.

Konzentrieren wir uns lieber auf den angewandten Bereich:)

 

Meine Herren, auf Seite zwei dieses Threads habe ich einen Link und ein Zitat aus der Dokumentation - Prioritäten und Reihenfolge der Operationen- angegeben. Ich werde sie noch einmal in komprimierter Form wiedergeben:

Achtung: Die Priorität der Operationen in MQL4 unterscheidet sich leicht von der in C.


Daher ist es falsch, von einem Fehler zu sprechen.

 

Das erinnert mich an den Humor von Zadornov "Was ist zwei plus zwei mal zwei". Ein gutes Beispiel für die religiöse Debatte über den Vorrang. Und im Allgemeinen ist das Thema bärtig, du hättest die Site-Suche benutzen können - anstatt einen neuen Thread zu erstellen.

P.S. Ist MuruFigi der Feind, und warum hast du Pak eine Falle gestellt...

 
Mathemat писал(а) >>

Das Thema hat einen Bart, du hättest die Site-Suche benutzen können, anstatt einen neuen Thread zu erstellen.

Das Thema wird auch weiterhin relevant sein. Den Entwicklern scheint es zu gefallen.

Der nächste "Newbie"-Programmierer wird sich den Kopf über das Thema zerbrechen... Und alles wird sich wiederholen (hee-hee).

Und sie ist nicht aus der Luft gegriffen.

Die Entwickler haben beschlossen, jeden auf seine Weise umzuschulen...

Das wird ein ewiges Thema sein... Bis das andere Ende der Leitung müde wird von.... fortbestehen

 
Mathemat писал(а) >>

Religiöse Debatten über die Priorität

Der Brauch hier ist es, ein schräges Produkt mit krummen Händen zu machen, die aus % wachsen, aber jeder schweigt, weil es kein anderes Produkt gibt ... oder es gibt eines, aber es wäre besser, nicht zu sein ))

..

Ein einfaches Beispiel "auf eigene Faust", bei der Verwendung von if() erscheint oft ein Fehler - bei der Kombination von && und einer Reihe von Bedingungen >/</!=, die sehr seltsam ist,

Sie kopieren die Comment()-Kette zur Überprüfung - 1, 1, 1, 1, usw. - alles ist OK, aber if() "funktioniert" nicht, Sie machen eine "Treppe" if() { if() { if() { ... }}}

alles funktioniert ... metacompiler glitch ich denke, ... und was, glauben die Entwickler, sie werden eingeschüchtert werden und beweisen, ... hehe

 
Rosh писал(а) >>

Meine Herren, auf Seite zwei dieses Threads habe ich einen Link und ein Zitat aus der Dokumentation - Prioritäten und Reihenfolge der Operationen- angegeben. Ich werde sie noch einmal in komprimierter Form wiedergeben:

Achtung: Die Priorität der Operationen in MQL4 unterscheidet sich leicht von der in C.

Daher ist es falsch, von einem Fehler zu sprechen.

Nun, ich habe auf der zweiten Seite zugestimmt, dass, wenn es sich um einen Fehler im Compiler handelt, wir über einen Fehler im Kopf des Entwicklers sprechen sollten und nicht im Compiler. Nichts für ungut, ich habe diesen Thread eher zum Spaß erstellt.

Was ich jetzt nicht verstehe, ist Folgendes.

Worauf basiert die Entwicklung des MQL-Compilers? Wenn es in einer normalen Sprache entwickelt wurde, müssen sich die Programmierer vor allem darüber geärgert haben, 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:)