Was ich mir als professioneller Programmierer vom "Terminal" wünschen würde. Ein weiterer Thread mit Wünschen für MQL5. - Seite 6

 
Korey писал (а) >>
Etwa ein Viertel aller numerischen Algorithmen verwenden Goto. Wie wäre es, wenn ein Algorithmus erprobt, genehmigt und getestet ist, aber nicht verwendet werden kann?
zu MT ohne goto?

Stuff die Funktionalität in einer dll oder entfernen goto.

Ich frage mich immer noch, von welchen Algorithmen Sie sprechen.

 

Ich schließe mich Korey an. Hat noch niemand einen raffinierten Algorithmus gesehen, der mit goto? Diese ganze Goto-Hysterie ist eher eine Art Religion als ein tatsächliches Bedürfnis. Ein kompetenter Programmierer kann auch mit goto einen klaren und genauen Code schreiben, der besser lesbar ist als ein entsprechender Code mit bedingten Sprüngen.

P.S. Es scheint, dass Wirth selbst, der goto kritisiert hat, es trotzdem in seinem Geistesprodukt belassen hat. Und in C++, der "strukturiertesten aller strukturierten" Sprachen, scheint goto nicht verschwunden zu sein. Den Einwand der Abwärtskompatibilität mit C akzeptiere ich nicht.

 
TheXpert писал (а) >>

Eigentlich ist die Verwendung von goto ein schlechter Programmierstil und in 99% der Fälle kann Code mit goto durch ähnlichen Code mit bestehenden bedingten Anweisungen ersetzt werden.

Da bin ich anderer Meinung.

Sie können es umschreiben. Man kann aber auch sagen, dass das Fehlen von goto in einer Sprache ein schlechter Stil ist und 99 % des Codes auf der Grundlage seiner Verwendung umgeschrieben werden können.

Ich habe z. B. goto zum Verlassen komplexer verschachtelter if-else-Strukturen mit Schleifen sehr vermisst. Wenn irgendwo tief in der Struktur die Notwendigkeit einer Exit-Analyse berechnet wird, muss ich eine zusätzliche Analyse der Exit-Flags für alle diese Anlagen schreiben, was ich als unpraktisch empfinde. Es überlastet den Code. Es ist viel einfacher, sich den Zustand der Flagge zu merken und außerhalb der Analyse zu gehen.

Es muss nicht bis zur Markierung reichen. Das wurde bereits diskutiert. Wir könnten ihn hinter einem externen (benannten) Block (Operator, Schleife - was auch immer einen Körper in geschweiften Klammern hat) übergeben.

 

Nun, SK. hat bereits genau das geschrieben, was ich den richtigen Stileiferer fragen wollte (z.B. wie man aus der Tiefe eines fünffach verschachtelten if-else herauskommt).

 
TheXpert писал (а) >>

Packen Sie die Funktionalität in eine dll oder entfernen Sie goto.

Ich frage mich immer noch, von welchen Algorithmen Sie sprechen.

es geht um Fortran als Hauptquelle für numerische Methoden.
Alles, was darin enthalten ist, wurde von der American Association of Engineers geprüft und genehmigt.
und es gibt hier kein Problem - wir arbeiten mit DLL und das ist alles)))
und als ob - Sie wollen direkt in den MQ-Code einfügen, aber Sie müssen sich durch den Algorithmus wühlen, was ziemlich zeitaufwendig ist.

P.S. und vor allem gefährlich.

 
Mathemat писал (а) >>

Ich schließe mich Korey an. Hat noch niemand einen raffinierten Algorithmus gesehen, der mit goto? Diese ganze Goto-Hysterie ist eher eine Art Religion als ein tatsächliches Bedürfnis. Ein kompetenter Programmierer kann auch mit goto klaren und präzisen Code schreiben, der unter Umständen besser lesbar ist als der entsprechende Code mit bedingten Sprüngen.

P.S. Es scheint, dass Wirth selbst, der goto kritisiert hat, es trotzdem in seinem Geistesprodukt belassen hat. Und in C++, der "strukturiertesten aller strukturierten" Sprachen, scheint goto nicht verschwunden zu sein. Einwände gegen

Ich akzeptiere keine Abwärtskompatibilität mit C.

Ich werde dem nicht widersprechen. Das ist richtig.

SK. schrieb (a) >>

Da bin ich anderer Meinung.

Es ist möglich, sie umzuschreiben. Man könnte aber auch sagen, dass das Fehlen von goto in der Sprache ein schlechter Stil ist und 99% des Codes auf der Grundlage seiner Verwendung neu geschrieben werden kann.

Ich habe zum Beispiel goto vermisst, um komplexe verschachtelte if-else-Strukturen mit Schleifen zu beenden. Wenn irgendwo tief in der Struktur die Notwendigkeit einer Exit-Analyse berechnet wird, muss ich eine zusätzliche Analyse der Exit-Flags für alle diese Anlagen schreiben, was ich als unpraktisch empfinde. Es überlastet den Code. Es ist viel einfacher, sich den Zustand der Flagge zu merken und außerhalb der Analyse zu gehen.

Es muss nicht bis zur Markierung reichen. Das wurde bereits diskutiert. Wir könnten sie außerhalb von (benannten) Blöcken (Operator, Schleife - was immer einen Körper innerhalb geschweifter Klammern hat) übergeben.

Pause würde nicht funktionieren?


Alles in allem hat jeder seinen eigenen Stil und sein eigenes Verständnis, und damit ist die Sache erledigt.

SK. Wenn Sie damit Probleme haben, wenden Sie sich bitte an mich, ich werde Ihnen helfen, je nach Verfügbarkeit von Zeit.

 
TheXpert писал (а) >> Pause reicht nicht aus?

Dies gilt nur für Schleifen oder Schalter (übrigens eine nicht unbedingt notwendige Konstruktion, die ebenso elegant durch eine if...else-Kette ersetzt werden kann). Alles ist relativ.

 
TheXpert писал (а) >>

Pause würde nicht reichen?

Generell gilt: Jeder hat seinen eigenen Stil und sein eigenes Verständnis, lassen Sie uns das Thema an dieser Stelle abschließen.

SK. Wenn Sie Probleme damit haben, werde ich Ihnen helfen, wenn ich Zeit habe.

Pause reicht nicht aus. Sie hat eine begrenzte Wirkung.

Und Sie sollten nicht unhöflich sein.

 
SK. писал (а) >>

Und Sie sollten nicht unhöflich sein.

Das dachte ich auch nicht.

 
Korey писал (а) >>

es geht um Fortran als Hauptquelle für numerische Methoden.
Alles, was darin enthalten ist, wurde von der amerikanischen Ingenieurvereinigung getestet und genehmigt.
und hier gibt es kein Problem - wir arbeiten mit DLL und das ist alles)))
und als ob es ihn gäbe - Sie wollen ihn direkt in den MQ-Code einfügen, aber Sie müssen sich durch den Algorithmus durcharbeiten, was ziemlich zeitaufwendig ist.

P.S. Und das Wichtigste: Es ist gefährlich.

Fortran, gab es goto. Das hat aber nichts mit der Effizienz der numerischen Methoden zu tun. In MatLab ist es genauso implementiert (sogar noch mehr) und es gibt dort kein goto. Goto hat eine Geschichte, die auf die Assembler-Programmierung zurückgeht (move to label). Die scheinbare Einfachheit dieses Operators ist irreführend. Angenommen, es gibt fünf if-Anhänge else. Und hat goto wo Sie brauchen und das ist es, aber dann gibt es lokale und globale Variablen, Stack, Zeiger, Arrays, etc. Was ist mit ihnen zu tun? Implementierung der korrekten Ausgabe von -Anhängen in Assembler, unter Berücksichtigung aller denkbaren Fehler ((. Es ist schwer herauszufinden, wie man es selbst in Hochsprache richtig macht, während es in Assembler ein echtes Chaos ist.

Wenn ich der Entwickler wäre, würde ich versuchen, MQL5 die Möglichkeit zu geben, in MathCad(MatLab) geschriebene Programme anzuhängen. Es wäre einfach und leicht (und nicht die rechte Hand am linken Ohr). Das sind Milliarden von Arbeitsstunden, die eingespart werden, und ein riesiger Schritt in der Fähigkeit, Daten zu verarbeiten. Um diese Fähigkeit zu erhalten, und die Hauptanstrengung zur Verbesserung des Terminals