Eine Frage an die OOP-Experten. - Seite 11

 
Petros Shatakhtsyan:

Wenn ein Programmierer in die Welt des Forex einsteigt, muss er kein Profi sein und OOP kennen.

Es ist besser, die Feinheiten des Marktes zu lernen und eine profitable Handelsstrategie zu entwickeln. Dabei spielt es keine Rolle, ob Sie OOP verwenden oder nicht. Die Rentabilität des Expert Advisors wird darunter nicht leiden.

Sie müssen Ihre Energie nicht vergeuden.

Das ist es ja: Sie kann es. Ein Freund von mir hat einen Teil seiner Einlage wegen eines Fehlers in seinem Code verloren, während OOP Fehler weniger wahrscheinlich macht.
 
Реter Konow:

George, es geht nicht nur um das Gedächtnis. Ich habe für mich eine komfortable Entwicklungsumgebung geschaffen, in der ich sowohl meine Muttersprache als auch Englisch verwende. Zweisprachiger Code wird viel besser behalten als einsprachiger Code. Vor allem, wenn man nicht an Standardwörter gebunden ist und Variablen mit beliebigen Namen benennen kann. Bewährt. Ich habe die Professionalität des Programmierens einfach ignoriert und angefangen zu schreiben, was ich wollte. Das Ergebnis war, dass ich mich schnell in meinem Code zurechtfand und ihn leicht lesen, abrufen und weiterentwickeln konnte. Den Rest kennen Sie...

Ich glaube nicht, dass es helfen kann. Für mich sind die Namen von Variablen in jeder Sprache fast sofort aus dem Gedächtnis gelöscht, ich stehe hinter dem Computer auf und erinnere mich nur noch an die allgemeinen Prinzipien und kann nicht mehr sagen, welche Variablen an welcher Stelle eingegeben wurden.

Übrigens ist das der Grund, warum ich immer Paare von mqh-mq5-Dateien verwende, anstatt Klassen komplett in mqh-Dateien zu schreiben - ich muss oft in die Header-Dateien schauen, nur um mich daran zu erinnern, was in dem einen oder anderen Fall verfügbar ist, ich habe die notwendigen Header-mqh-Dateien in Tabs geöffnet, und ich wechsle zu ihnen, wenn ich diese Informationen wieder auffrischen muss. Wenn ganze Klassen (und noch mehr mehrere Klassen) in einer mqh-Datei beschrieben werden, ist es schwieriger, durch diese Datei zu "hüpfen", selbst mit Hilfe von Tabs.

Ich kann nicht alle Strukturen in meinem Speicher behalten, obwohl ich in meiner Jugend, wie ich bereits erwähnt habe, sogar in Assembler geschrieben habe, aber es gibt keine anderen Möglichkeiten - man hat nur Speicheradressen, und das Maximum, das Makro-Assembler erlaubt, ist die Erstellung von Namen für bestimmte Bereiche mit Hilfe von Makrosubstitutionen. Das funktioniert auch. Aber ich bin schon lange davon überzeugt, dass auf diese Weise die Zahl der Fehler viel größer und die Fehlersuche bei solchem Code viel schwieriger ist.

Ich habe oben bereits ein Beispiel genannt: Ein Fehler tritt auf und eine Variable wird aus irgendeinem Grund falsch geändert. Und auf die Variable wird von vielen Stellen im Programm aus zugegriffen. Wie kann man eine Stelle finden, an der ein Fehler vorliegt? Bei der OOP-Kapselung ist es ganz einfach: Wir setzen einen Haltepunkt in der Schnittstellenfunktion, die die Variable ändert, und sobald eine falsche Änderung auftritt, halten wir an und sehen anhand der Aufrufhierarchie sofort, wo die falsche Änderung vorgenommen wurde.Und mit deinem Ansatz, Peter, müssen wir den gesamten Code durchforsten, alle Stellen, an denen auf diese Variable zugegriffen wird, untersuchen, überall Haltepunkte setzen und alle Aufrufe analysieren, nicht nur die fehlerhaften.

 
Aliaksandr Hryshyn:
Das ist die Sache, sie kann darunter leiden. Ein Freund von mir hat einen Teil seiner Einlage wegen eines Fehlers in seinem Code verloren, während OOP Fehler unwahrscheinlicher macht.

Das bedeutet, dass er kein guter Programmierer ist. In komplexen OOP-Konstrukten kann man mehr durcheinander kommen als ohne sie.

Die Klassen müssen dort eingesetzt werden, wo es notwendig ist. Mir ist aufgefallen, dass einige Programmierer irgendwie besessen davon sind, viele Funktionen dort anzuwenden, wo sie nicht notwendig sind. Das Gleiche gilt für den Unterricht.

Anstatt ein kompaktes und kurzes Programm ohne OOP zu schreiben, fangen manche Programmierer an, Klassen und viele Funktionen einzusetzen, und aus einer einfachen Lösung wird ein kilometerlanger Text.

 
Petros Shatakhtsyan:

Das bedeutet, dass er kein guter Programmierer ist. In komplexen OOP-Konstrukten kann man mehr durcheinander kommen als ohne sie.

Wenn alle anderen Dinge gleich sind? Das bezweifle ich sehr. Wenn die Komplexität der Konstrukte die gleiche ist, ist es viel einfacher, sie mit OOP zu verstehen.

Es hebt jedoch nicht die Regel "mit einer Kanone über einen Spatz" auf, es macht keinen Sinn, große OOP-Komplexe zu verwenden, wenn die Aufgabe sehr einfach und kompakt ist.

Obwohl, wie hier schon gesagt wurde - OOP ermöglicht es uns, Klassenbibliotheken zu erstellen, die dann in vielen Projekten verwendet werden.

Sagen wir, die gleichen Array-Klassen, Dateiklassen... Selbst wenn Sie einen sehr einfachen Indikator schreiben, ohne OOP zu verwenden, ist es viel einfacher, eine Klasse CFile zu deklarieren und ihre Funktionen zu verwenden, als die Standardfunktionen für die Arbeit mit Dateien zu nutzen.Ganz zu schweigen von der Möglichkeit, CFile einfach durch spezifischere zu ersetzen, z. B. habe ich eine CLogFile-Klasse mit der Fähigkeit, automatisch die Zeit und einige zusätzliche Daten in Zeichenketten einzufügen (für Protokolldateien) oder die CIniFile-Klasse, die Daten in Standard-Ini-Dateien organisieren und diese dann bei Bedarf lesen und verwenden kann.

 
Petros Shatakhtsyan:

Das bedeutet, dass er kein guter Programmierer ist. In komplexen OOP-Konstrukten kann man mehr durcheinander kommen als ohne sie.

Die Klassen müssen dort eingesetzt werden, wo es notwendig ist. Mir ist aufgefallen, dass einige Programmierer irgendwie besessen davon sind, viele Funktionen dort anzuwenden, wo sie nicht notwendig sind. Das Gleiche gilt für den Unterricht.

Anstatt ein kompaktes und kurzes Programm ohne OOP zu schreiben, fangen manche Programmierer an, Klassen und viele Funktionen einzusetzen, und aus einer einfachen Lösung wird ein kilometerlanger Text.

Ist es in Ordnung, dass die eigentliche Arbeit aus hundert Zeilen besteht und die restlichen paar tausend Zeilen eine vor langer Zeit geschriebene und getestete Bibliothek sind? )))
 
Vladimir Simakov:
Ist es in Ordnung, dass die eigentliche Arbeit aus hundert Zeilen besteht und die restlichen paar tausend Zeilen eine Bibliothek sind, die vor langer Zeit geschrieben und getestet wurde? )))

Wenn ein Programmierer in seinem Programm vorgefertigte Klassen verwendet, wie z.B. diese: CTrade, CAccountInfo, CPositionInfo, bedeutet das nicht, dass sein Programm auf OOP basiert.

Es kommt darauf an, ob der Programmierer solche Klassen selbst erstellt oder sie einfach verwendet, ohne die Interna (auf Quelltextebene) dieser Klassen zu kennen.

 
Georgiy Merts:
....

Ein Beispiel wurde bereits oben genannt - ein Fehler ist aufgetreten, eine Variable wurde aus irgendeinem Grund nicht korrekt geändert. Und auf die Variable wird von verschiedenen Stellen im Programm aus zugegriffen. Wie fängt man einen Ort, wo Fehler ? Bei der OOP-Kapselung ist es ganz einfach: Wir setzen einen Haltepunkt in der Schnittstellenfunktion, die die Variable ändert, und sobald eine falsche Änderung auftritt, halten wir an und sehen anhand der Aufrufhierarchie sofort, wo die falsche Änderung vorgenommen wurde.Und mit Ihrem Ansatz, Peter, müssen wir den gesamten Code durchforsten, alle Stellen suchen, an denen ein Verweis auf diese Variable auftritt, überall Haltepunkte setzen und alle Aufrufe analysieren, nicht nur die fehlerhaften.

Ja, mein Kernel wird in allen Teilen des Programms verändert und es treten Fehler auf, aber ich brauche keine Haltepunkte. Ich rechne im Kopf und mache mir an mehreren Stellen Gedanken, um die Werte zu überprüfen. So finde ich es. Ich betone - ich kenne mein Programm sehr gut.

Aber auf der anderen Seite habe ich mit diesem Wissen, ohne syntaktische Hindernisse und in meiner Muttersprache enorme Möglichkeiten für eine schnelle Entwicklung. Und deshalb bin ich gegen OOP in meinen Lösungen.

Die Aufspaltung des Codes, seine fremde Einsprachigkeit, die neue Syntax, die zusätzlichen Regeln - all dies wird die Entwicklung des Programms verlangsamen. Ich werde mehr Aufwand betreiben und weniger Ergebnis erzielen. Das weiß ich mit Sicherheit.


Wenn meine Aufgabe darin bestünde, ein Programm aus vorgefertigten Codestücken zu erstellen und zu debuggen, würden nur OOP und Bibliotheken ausreichen. Das Anknüpfen und die Entwicklung neuer Lösungen sind zwei verschiedene Dinge. Viele Menschen befürworten OOP, weil sie Teile des Codes anderer Leute verwenden und so Aufwand sparen wollen. Ich erstelle meine eigenen Lösungen mit proprietärer Technologie und habe andere Bedürfnisse und Ansichten zu OOP.

 
Реter Konow:

Ja, mein Kernel wird in allen Teilen des Programms verändert und es treten Fehler auf, aber ich brauche keine Haltepunkte. Ich rechne im Kopf und mache mir an mehreren Stellen Gedanken, um die Werte zu überprüfen. So finde ich es. Ich betone - ich kenne mein Programm sehr gut.

Aber der Vorteil ist, dass ich mit diesem Wissen, dem Fehlen syntaktischer Hindernisse und der Muttersprache enorme Möglichkeiten für eine schnelle Entwicklung habe. Und deshalb bin ich gegen OOP in meinen Lösungen.

Die Aufspaltung des Codes, seine fremde Einsprachigkeit, die neue Syntax, die zusätzlichen Regeln - all dies wird die Entwicklung des Programms verlangsamen. Ich werde mehr Aufwand betreiben und weniger Ergebnis erzielen. Das weiß ich mit Sicherheit.


Wenn meine Aufgabe darin bestünde, ein Programm aus vorgefertigten Codestücken zu erstellen und zu debuggen, würden nur OOP und Bibliotheken ausreichen. Das Anknüpfen und die Entwicklung neuer Lösungen sind zwei verschiedene Dinge. Viele Menschen befürworten OOP, weil sie Teile des Codes anderer Leute verwenden und so Aufwand sparen wollen. Ich erstelle meine eigenen Lösungen mit proprietärer Technologie und habe andere Bedürfnisse und Ansichten zu OOP.

Ich empfehle, mindestens einmal die VC++-Dialogfeldvorlage zu verwenden, eine Anwendung auf der Grundlage von CDialog von MFC zu erstellen, alle Arten von Steuerelementen im visuellen Modus darauf zu setzen und vorgefertigte Funktionen zu verwenden , um die ganze Macht von OOP zu verstehen.

Und ich möchte auch hinzufügen, dass Borland C++ sehr praktische Klassen für die Arbeit mit Oracle hat. Ich habe bis 2012 damit gearbeitet, ich weiß nicht mehr wie.

 
Petros Shatakhtsyan:

Ich empfehle, mindestens einmal die VC++-Dialogfeldvorlage zu verwenden, eine Anwendung auf der Basis von CDialog von MFC zu erstellen, alle Arten von Steuerelementen im visuellen Modus darauf zu setzen, vorgefertigte Funktionen zu verwenden, um die ganze Macht von OOP zu verstehen.

Und ich möchte noch hinzufügen, dass Borland C++ über sehr praktische Klassen für die Arbeit mit Oracle verfügt. Ich habe bis 2012 damit gearbeitet, ich weiß nicht mehr wie.

In dieser Diskussion meinen wir mit Macht unterschiedliche Dinge. Für Sie drückt sich Leistung in der schnellen und einfachen Zusammenstellung von vorgefertigten Codestücken aus Bibliotheken aus, von denen es bereits eine große Anzahl gibt. Leichte Bauweisen sind auch Power. Aber es ist anders. Ich spreche von der Kraft der Entwicklung neuer Lösungen. Von Anfang an. Die Möglichkeit, ein Programm in der Entwicklungsumgebung ohne vorgefertigte Codestücke zu entwickeln. Schließlich portieren sie keine grafischen C++-Bibliotheken nach MQL. Sie mussten Ihre eigenen Lösungen auf dem gleichen Niveau entwickeln. Und hier wird die Leistung nicht durch die Geschwindigkeit des Bauens, sondern durch die Geschwindigkeit der Programmentwicklung getestet. Ich habe zweieinhalb Jahre gebraucht, um meine eigene Auszeichnungssprache von Grund auf zu entwickeln. Meine API. Dies ist mehr als grafische MQL-Bibliotheken. Ich war sehr nahe daran, einen visuellen Konstruktor zu erstellen. Und das ist ein Indikator für die Stärke des Ansatzes. Schade, dass es hier niemand braucht...
 

es ist die zweite Hälfte von 2019.... aber sowohl der 20. als auch der 25. und .... Wird auch über die Notwendigkeit der Verwendung von OOP streiten?

))))

Wenn es uns gefällt, verwenden wir es, wenn es uns nicht gefällt, verwenden wir es nicht.

wenn Sie sich angewöhnt haben, Programme zu schreiben, indem Sie zuvor geschriebene kleine Unterprogramme verwenden - schreiben Sie, Sie sind mit dem falschen Bein aufgestanden... Sie fügen all diese Unterprogramme in den Quellcode ein und erhalten ein großes Durcheinander an Code


geben den Leuten viele Möglichkeiten der offenen Quelle, es ist immer noch nicht das Gleiche, trimmen Funktionalität zu reinem C, wieder ist es nicht das Gleiche ))))

ZS: Ich vermute, dass einige der Entwickler das Forum trotzdem lesen... Ich denke, dieser Thread wird sie auf jeden Fall aufmuntern! ))))