Auf Wiedersehen, Roboter - Hallo, Marasmus - Seite 12

 
simpleton:

Übrigens, was die Erfahrung im Management betrifft. Vor 5 Jahren haben wir uns im mql5-Forum über die Aussichten von MT5 gestritten, und ich sagte damals, dass die Zeit es zeigen wird. Fünf Jahre sind vergangen und wir sehen, dass die Gemeinschaft MT5 abgelehnt hat.

Sie haben ein Informationsdefizit. Wir werben nie mit unserem Kundenstamm und unserer Umsetzung.


Ich übersetze keine allgemeinen Grundsätze, keine Theorie - nicht für die Theorie selbst, sondern für die Anwendung in der Praxis. Sie werden solche schwerwiegenden "Fehler" in denselben C/C++-Compilern nicht finden.

Und ich habe sie gefunden und sogar den Autoren darüber berichtet.


Wenn Sie sagen, dass in diesem Fall "eine statische Klassenmethode kein Recht hat, in den Inhalt der Klasse einzudringen", warum hat sie dann im Falle einer dynamischen Objekterzeugung bereits dieses Recht?

Ich habe gesagt: "Übermäßiger Schutz, lasst uns das in Ordnung bringen". In der Theorie klingen die Bedingungen einfach, aber in der Praxis funktionieren die statischen/dynamischen Implementierungen unterschiedlich, was zu Diskrepanzen führt.


Was ist mit der Tatsache, dass sich eine nicht-statische Implementierung genau so verhält?

Das Gleiche gilt für die Regel "privat ist privat", die die Nuance "für Designer/Entwickler machen wir eine Ausnahme" außer Kraft gesetzt hat. Das werden wir ändern.


Wenn es Fehler in der Sprachimplementierung gibt, dann gibt es natürlich auch Fehler. Sie sprechen von totaler Qualitätskontrolle - also beseitigen Sie Implementierungsfehler im MQL4++-Compiler in der Praxis, so dass es fast so schwierig ist, Fehler zu finden wie in C++-Compilern, da Sie eine solche Kontrolle haben. Ich bin nach wie vor der Meinung, dass ein Parser nicht dazu beitragen wird, Fehler wie die von mir aufgezeigten zu beseitigen.

Das stimmt, es sind Fehler im Compiler, den wir von Grund auf selbst geschrieben haben. Dies ist also die übliche Art und Weise des Sammelns von Schwadern.

Die totale Qualitätskontrolle ist ein systematischer Ansatz für die Arbeit an Fehlern und ein klarer Fokus auf die Fehlersuche. Das ist genau das, was wir tun. Sie hingegen erklären, dass Sie gegen Zwang sind und keine strenge Kontrolle mit technischen Mitteln wollen.



Es geht nicht um mögen oder nicht mögen. Es gibt ein Werkzeug. Warum sollte ich mich weigern, alle seine Möglichkeiten zu nutzen?

In diesem Fall geht es nicht einmal darum, dass es mir gefällt". Es ist Myers, der es so sehr mag. Und aus irgendeinem Grund versucht niemand, ihn zu beschuldigen, er wolle C++-Compilern "absichtlich ein Bein stellen".

Wir haben eine gute Erklärung - "dies ist keine C++-Sprache, sondern eine spezialisierte MQL4/MQL5-Sprache. Wir müssen also nicht alles unterstützen". Aber in jedem Fall wird das Verhalten so weit wie möglich auf das bekannte C/C++ reduziert.


Das ist keine einfache Aufgabe, die nicht auf Anhieb zu lösen ist. Hier müssen Sie sich anstrengen, und zwar nicht zu knapp. Die große Mehrheit der MQL-Benutzer sind keine Programmierer. Dies muss bei der Sprachgestaltung berücksichtigt werden. Aber ich bin sicher, dass die Aufgabe gelöst werden kann.

Wenn überhaupt, würde es ausreichen, einige Strukturen zum alten MQL4 hinzuzufügen und einige Dinge wie Prioritäten zu Operationen zu bereinigen, wie es für MQL4++ gemacht wurde, und das wäre ein vernünftiger Kompromiss. Der Erfolg von MT4 war weitgehend auf die fehlende "Cleverness" der Sprache zurückzuführen. Dies ist jetzt nicht der Fall. Und es gibt viel mehr Fehler in der Compiler-Implementierung, weil MQL4++ viel komplexer ist als das alte MQL4 und das Entwicklerteam sich kaum verändert hat.

Hier stimme ich mit Ihnen überein, aber ich denke, es liegt vor allem daran, dass die Wettbewerber nicht verstehen, was sie da tun.

In den letzten 14 Jahren haben wir 5 Handelsplattformen 5 Mal von Grund auf neu geschrieben.

Das ist ein besserer Weg, etwas wirklich Cooles zu schaffen, als den alten Esel mit Schwebebausteinen zu beladen. Deshalb haben wir mit der Veröffentlichung von MT5 und dem neuen MQL5 eine große Zukunft für die nächsten 10 Jahre vor uns.

Wer aber herumsitzt und das alte Projekt aufschiebt und denkt: "Lass den Spatz in der Hand, Hauptsache, ich werde nicht gefeuert, wenn ich ein neues anfange und scheitere", der verliert den Respekt des Managements, wird als impotent abgeschrieben und verschwindet langsam von der Bildfläche.

 
Renat:
Sie haben ein Informationsdefizit. Wir werben nie mit unserem Kundenstamm und unserer Umsetzung.

Ich richte mich nach den öffentlichen Informationen und der Unterstützung für die Vorgängerversion, d.h. MT4.

Als MT4 herauskam, wurde MT3 ziemlich schnell nicht mehr unterstützt und angeboten - alle wechselten zu MT4. Für das Paar MT4 - MT5 ist dies nicht geschehen, auch wenn viel Zeit vergangen ist. Und es gibt immer noch eine klare Tendenz zu MT4.

Sie haben sogar von MT5 auf MT4 zurückportiert, einschließlich des Compilers. Haben Sie irgendetwas vom MT4 auf den MT3 portiert, 4 Jahre nach dessen Veröffentlichung?

Renat:
Und das taten sie und meldeten sie sogar den Autoren.

Aber es gibt einen Unterschied: Es ist wahrscheinlich hunderte, wenn nicht tausende Male schwieriger, einen Fehler in modernen C/C++-Compilern zu finden als in MQL4++.

Renat:

Ich habe immer gesagt: "Übertriebener Schutz, lasst es uns in Ordnung bringen". In der Theorie klingen die Bedingungen einfach, aber in der Praxis funktionieren die statischen/dynamischen Implementierungen unterschiedlich, was zu Diskrepanzen führt.

Das Gleiche - die Regel "privat heißt privat" hat die Regel "für Konstruktoren/Destruktoren eine Ausnahme machen" außer Kraft gesetzt. Wir werden das korrigieren.

Das stimmt, es sind Fehler/Inkonsistenzen im Compiler, den wir selbst von Grund auf neu geschrieben haben. Dies ist also die übliche Art und Weise, Rechen aufzusammeln.

Die totale Qualitätskontrolle ist ein systematischer Ansatz für die Arbeit an Fehlern und ein klarer Fokus auf die Fehlersuche. Das ist genau das, was wir tun.

Es genügt, die üblichen Regressionstests durchzuführen, die nicht einmal eine spezielle "Engine" erfordern. Es gibt eine Zugriffskontrolle in Klassen/Strukturen in der Sprache - schreiben Sie einmal Tests dafür in Form von kompilierbaren MQL-Programmen. Einige sollten erfolgreich kompilieren, andere mit einem bestimmten Fehler. Das ist die gesamte Qualitätskontrolle an diesem besonderen Ort. Es stimmt, die Tests, die alle Funktionen der Zugangskontrolle abdecken, müssen zuerst geschrieben werden...

Renat:
Im Gegensatz dazu sagen Sie, dass Sie gegen Zwang sind und keine strenge Kontrolle mit technischen Mitteln wollen.

Das Gegenteil ist nicht der Fall. Der MQL-Compiler für MQL-Programme könnte so eingestellt werden, dass er sowohl Warnungen als auch das, was einige C++-Compiler als Bemerkungen bezeichnen, standardmäßig enthält. Aber ich "behaupte" nur, dass zumindest die Bemerkungen deaktiviert werden sollten. In MQL-Compiler für MQL-Programme. Und jetzt kann nichts in diesem Sinne im MQL4++ Compiler deaktiviert werden.

Insbesondere bei der Implementierung des MQL-Compilers mangelt es an Qualitätskontrolle, da Fehler in diesem Compiler so leicht zu erkennen sind. Was meinen Sie mit strenger Qualitätskontrolle von MQL-Programmen?

Renat:
Wir haben eine gute Erklärung - "dies ist nicht C++ Sprache, sondern spezialisierte MQL4/MQL5. Daher sind wir nicht verpflichtet, sie alle zu unterstützen". Aber in jedem Fall wird das Verhalten so weit wie möglich auf das bekannte C/C++ reduziert.

Großartig. Man kann nicht alles unterstützen. Aber was unterstützt wird, darf nicht so viele Fehler in den einfachsten Grundkonstruktionen enthalten.

Unterstützen Sie die Zugriffskontrolle auf Klassen-/Strukturmitglieder? Mindestens alle Grundfälle in den einfachsten Grundkonstrukten fehlerfrei unterstützen.

Nehmen Sie die gleiche Zugangskontrolle - in den einfachsten Grundkonstrukten:

/******************************************************************************/
class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  B b;
}

Dies kompiliert ohne Fehler:

'3.mq4' 3.mq4   1       1
0 error(s), 0 warning(s)                1       1

Wir sehen jedoch, dass dieser Code aus zwei Gründen nicht in C++ kompiliert werden kann:

$ clang -c 3.cpp
3.cpp:10:3: error: unknown type name 'B'
  B b;
  ^
1 error generated.

Die Klasse B ist innerhalb der Klasse A definiert, so dass sie in OnStart() als A::B referenziert werden sollte:

class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  A::B b;
}

Aber das ist noch nicht alles - der geänderte Code lässt sich immer noch nicht mit dem C++-Compiler kompilieren:

$ clang -c 3.cpp
3.cpp:10:6: error: 'B' is a private member of 'A'
  A::B b;
     ^
3.cpp:4:9: note: declared private here
  class B { };
        ^
1 error generated.

Aus irgendeinem Grund funktioniert die Zugriffskontrolle in MQL4++ generell für Methoden und Daten - Klassenmitglieder, aber nicht für Typen.

Wenn der Anwendungsbereich für die Klasse B als A::B angegeben wird, erzeugt der MQL4++-Compiler die folgenden Fehler:

'3.mq4' 3.mq4   1       1
'B' - struct member undefined   3.mq4   12      6
'b' - undeclared identifier     3.mq4   12      8
'b' - some operator expected    3.mq4   12      8
expression has no effect        3.mq4   12      6
3 error(s), 1 warning(s)                4       2

Warum ist dieses "struct member undefined"?

Auch hier gilt, dass die C++-Compiler keine Probleme mit Typen innerhalb von Klassen haben. Der MQL4++-Compiler hingegen schon.

Diese Fehler wurden zufällig gefunden, als man versuchte, das Myers-Singleton zu implementieren. Einige der Fehler wurden von mir gefunden, andere von anderen Diskussionsteilnehmern. Es zeigt, wie leicht man bei der Programmierung in MQL4++ über Compiler-Implementierungsfehler stolpern kann. Und man muss nicht absichtlich nach Fehlern suchen, um über sie zu stolpern, sondern einfach versuchen, die Aufgabe zu lösen.

Bitte beachten Sie, dass dies alles kritische Fehler für eine ernsthafte Nutzung von MQL4++ sind.

Offensichtlich gibt es keine Regressionstests der oben genannten Art, zumindest nicht für die einfache Zugriffskontrollprüfung des MQL4++-Compilers. Andernfalls wäre das Problem schon längst entdeckt und behoben worden.

Renat:
Wir haben in den letzten 14 Jahren 5 Handelsplattformen 5 Mal von Grund auf neu geschrieben.

Das ist ein besserer Weg, etwas wirklich Cooles zu schaffen, als den alten Esel mit Schwebebausteinen zu beladen. Deshalb haben wir mit der Veröffentlichung von MT5 und dem neuen MQL5 eine große Zukunft für die nächsten 10 Jahre vor uns.

Andererseits verlieren diejenigen, die sich hinsetzen und das alte Projekt schreiben und dabei denken: "Lass den Spatz in der Hand, Hauptsache, ich werde nicht gefeuert, wenn ich ein neues Projekt beginne und scheitere", den Respekt des Managements, werden als impotent abgeschrieben und verlassen langsam die Szene.

Ich stimme zu, dass proaktives Handeln mit innovativer Entwicklung die wichtigste Komponente ist, aber sie ist nicht die einzige. Und eine Fliege in der Salbe kann ein Fass Honig verderben.

Eine dieser Färbungen ist ein deutlicher Mangel an Qualität. Der Grund, etwas in MQL zu erstellen, ist dadurch verloren gegangen.

 

Ich habe mir über SSE2, vielleicht nicht im Thema, aber auch gerne, etwas angehört.

Ich muss einen der Computer austauschen, nicht alle, aber es lenkt vom Thema ab, nicht für die Entwicklung, nicht für den Handel, außer um das Forum zu lesen.

 
MT5 Großartig! Es ist magisch, darauf Pyramiden zu bauen.
 

Hallo Forenbenutzer!

Ich bin dabei, auf mt5 umzusteigen und würde gerne

um Pavlik zu fragen.

Pawlik, wenn Sie mich sehen, schicken Sie mir eine Nachricht.

r.klassen.ruit@web.de

pansa

 
TimeMaster:

Wenn Sie eine große Anzahl von Ablassbriefen, Eulen usw. haben, die sich in neuen Builds nicht kompilieren lassen, dann ist es sinnvoll, genauer hinzuschauen und sich "die Brust zu schütteln". Sie sollten alles Nützliche behalten und keine Zeit damit verschwenden, es für neue Builds neu zu schreiben und zu debuggen.

Irgendwann wurde mir langweilig).

TimeMaster:

Wirklich erfahrene Programmierer oder solche, die es werden wollen, verfolgen immer Innovationen, Bugs und Glitches, die ihr Brot sind. Es ist das Schreiben von Code ohne Fehler, das als gute Programmierung gilt. Wenn Sie nicht die Energie, die Zeit, die Möglichkeit oder den Wunsch haben, alle Neuerungen von "Metakvot" zu erfassen, verwenden Sie die Sprache, die Sie fließend beherrschen. Die DLLs wurden nicht abgeschafft, Sie können Ihre eigenen, fein abgestimmten Algorithmen einfügen.

Woran orientieren sich echte Trader oder solche, die es werden wollen? ) Das verfügbare Autotrading, das Hauptmerkmal von MT, ist in Vergessenheit geraten und hat sich unter den ständigen Neuerungen unzähliger Builds verirrt... Autotrading-Optionen, die durch einen seriöseren Ansatz bei der Programmierung verfügbar sind, sagen wir - "ist". Ich selbst habe nur ein kleines, fast vergessenes Konto auf MT. Habe heute 2 Stunden damit verbracht, MT-Tools zu rehabilitieren, so wie es aussieht, brauche ich 10 Mal mehr. Ich bin mir nicht sicher, ob ich es brauche, vielleicht werde ich es wieder tun, aber eher "aus alter Erinnerung". Im Grunde habe ich mich entschieden.

 
Figar0:

Das verfügbare Autotrading, das Hauptmerkmal von MT, ist in Vergessenheit geraten und hat sich in den ständigen Neuerungen unzähliger Builds verloren... Die Autotrading-Optionen, die durch seriösere Programmieransätze verfügbar sind, sind, sagen wir, "da". Ich selbst habe nur noch ein kleines, fast vergessenes Konto auf MT. Habe heute 2 Stunden damit verbracht, MT-Werkzeuge zu rehabilitieren, so wie es aussieht, brauche ich 10 Mal mehr. Ich bin mir nicht sicher, ob ich es brauche, vielleicht werde ich es wieder tun, aber eher "aus alter Erinnerung". Im Grunde habe ich mich entschieden.

Eigentlich funktioniert auch jetzt noch alles, wenn nur die alten Funktionen genutzt werden. Einige Dinge können viel einfacher und zuverlässiger gemacht werden, zum Beispiel die Berechnung von Lücken in der Historie: vorher (mcl++) verursachte die Möglichkeit der Berechnung der Historie mit Lücken einige "Kopfschmerzen" (als Folge davon, dass der "Schwanz" der Historie zuerst geladen wurde und dann fehlende Balken hineingeschrieben wurden), ich musste "Krücken" benutzen. Alles ist jetzt viel einfacher. Sie können keine zusätzlichen Funktionen nutzen und MKL in seiner alten/verbesserten Form weiter verwenden. Die Ausnahmen sind die Programme, die über die Arrays hinausgegangen sind (falsch berechneter Index oder nicht zugewiesener Speicher) - diese haben garantiert nicht funktioniert und höchstwahrscheinlich vorher falsch.
 
Figar0:

Irgendwann wurde es langweilig)

Wessen Schuld ist es, dass jemand einen Haufen Code hat?

Figar0:

Im Grunde habe ich mich entschieden.

Versucht jemand, sich zurückzuhalten? Mit dem Lasso gefesselt und festgehalten???

 
AlexeyVik:

Wessen Schuld ist es dann, dass jemand einen Haufen Code hat?

Was hat der Scheiß-Code damit zu tun? Einige grundlegende Dinge haben sich geändert
 
TheXpert:
Was hat der Scheißcode damit zu tun? Einige grundlegende Dinge haben sich geändert
Ich frage mich nur (ich verwende den alten Code, er funktioniert): welche grundlegenden Dinge?