Die Sprache MQL5 von Grund auf selbst erlernen - Seite 17

 
Roman:

Das genaue Gegenteil von dem, was Sie denken!
Das Wichtigste beim Programmieren ist, die Sprache auf der niedrigstmöglichen Ebene zu beherrschen!
Für Anfänger ist eine niedrige Ebene die Syntax der Sprache ohne zusätzliche Code-Verpackungen.
Bei der Dekomposition, wie Sie es ausdrücken, geht es darum, zu verstehen, wie Flussdiagramme aufgebaut sind.
Deshalb wird ein Programmierer nicht durch philosophische Fantasien, sondern durch praktische Kenntnisse der Sprache bewertet.
Wie kann man ohne die Grundlagen der Sprache phantasieren? Wo ist die einfache Logik?
Äquivalent zu der Sprache eines Elektronik-Ingenieurs, die der Autor dieses Threads ist, zunächst Spannungen an die Platine zu liefern, und dann fragen, warum das Board durchgebrannt ))

Da bin ich anderer Meinung. Wenn Sie sich ein Ziel setzen, brauchen Sie die Sprache nicht zu kennen, Sie müssen nur ihre Möglichkeiten verstehen. Aber bei der Festlegung eines Ziels, bei der Lösung des Problems, bei der Auswahl der Algorithmen und bei der Kodierung ist es in all diesen Phasen notwendig. Ein Problem zu lösen, ohne die Syntax der Sprache zu kennen, ist manchmal ein großes Problem bei der Umsetzung)))

 
Roman:

... Äquivalent, in der elektronischen Sprache, die der Autor dieses Threads ist, um erste Spannungen auf der Platine, und dann fragen, warum das Board durchgebrannt ))

Hallo Roman! Toller Vergleich. Jetzt bin ich in der Programmierung auf der gleichen Ebene der Elektronik-Ingenieur, wenn ich ging von der Kenntnis der Grundsätze der Transistoren zu lernen, die Grundsätze der digitalen Schaltungen K155.

Allerdings gelang es vielen meiner Kollegen 1983, Computer der EU-Serie zu reparieren, ohne zu wissen, wie Transistoren funktionieren. Sie mussten nur die Algebra der Logik kennen. Es war eine Abschweifung - Nostalgie für die Sowjetzeit!

Mit freundlichen Grüßen, Vladimir.

 
Valeriy Yastremskiy:

Da bin ich anderer Meinung. Wenn man sich ein Ziel setzt, braucht man nicht die Sprache zu kennen, sondern muss ihre Möglichkeiten verstehen. Aber bei der Problemstellung, der Problemlösung, der Auswahl des Algorithmus und der Kodierung sind alle diese Schritte notwendig. Ein Problem zu lösen, ohne die Syntax der Sprache zu kennen, ist manchmal ein großes Problem bei der Umsetzung)))

Wie wollen Sie also die Möglichkeiten verstehen, wenn Sie diese Möglichkeiten nicht kennen?)
Die Problemdefinition ist die äußerste Stufe der Beherrschung der Grundlagen der Sprache, wenn Sie bereits wissen, was eine Variable ist, welche Größen sie haben kann, welchen Umfang sie hat usw.
Ich stand auch an einem Scheideweg, als ich nicht wusste, wo ich anfangen sollte, welche Sprache ich lernen und wie ich alles verstehen sollte. Es war eine Qual, denn ich habe in mehreren Sprachen versucht, die Wahrheit herauszufinden.
Aber als ich schließlich erkannte, dass mql eine C-ähnliche Sprache ist, begann ich, C zielgerichtet zu lernen und mit den Grundlagen zu beginnen.
Und als ich mit dem Grundstudium fertig war, stellte ich überrascht fest, dass ich mql praktisch schon kenne, und alles ist mir klar, nur die Syntax und die Besonderheiten sollten durch Docks verbessert werden, das ist eine Eigenschaft von mql.
Nachdem ich den prozeduralen Ansatz der Programmierung verstanden hatte, begann ich nach einem Jahr, mich mit OOP zu beschäftigen. Lange Zeit war mir das nicht klar, weil es andere Namen für dieselbe Sache gab.
Zum Beispiel, Methode und Funktion, was ist der Unterschied )) Variable und Klassenmitglied )) usw.
Aber um dorthin zu gelangen, müssen Sie die Grundlage des prozeduralen Ansatzes verstehen, und wenn Sie beginnen, die OOP-Terminologie schrittweise zu verstehen, öffnet sich das Verständnis sofort.
Das ist der Unterschied, die Wahl des anfänglichen Lernweges. Wie kann man auf Russisch schreiben, ohne Buchstaben und Satzzeichen zu kennen?
Denken Sie daran, wo Sie angefangen haben: mit Haken und Stöcken.

 
Roman:

Das genaue Gegenteil von Ihnen!
Der entscheidende Faktor beim Programmieren ist die Kenntnis der Sprache, und zwar auf einem möglichst niedrigen Niveau!

Was bringt es Ihnen? Sie beherrschen die Sprache auf sehr niedrigem Niveau. Sie wissen, welche Assembler-Befehle durch if ersetzt werden, wie die for-Schleife in goto umgewandelt wird. Sie kennen Assembler. Wo ist da der Gewinn? Sehen Sie sich die Python-Programmierer an. Sie wissen das alles nicht. Aber sie sind sehr gut im Umgang mit Funktionen, sie wissen, wie man Map/Reduce macht. Sie sind in der Lage, sie zu verfassen und sich gegenseitig zu übermitteln. Und wo ist MQL jetzt, wo nicht mehr so viel in Python geschrieben wird?

Roman:

Wie kann man sich ohne die Grundlagen der Sprache etwas vorstellen? Wo ist die einfache Logik?
Es ist ähnlich wie die elektronische Sprache, die der Autor dieses Threads ist, erstens, um Spannungen an das Board zu liefern, und dann fragen, warum das Board durchgebrannt ))

Nach Ihrem Verständnis der einfachen Logik ist es ein rezeptfreies Verfahren. Für mich ist das wie Assembler: "Was ich sehe, davon singe ich". Das hat nichts mit Logik zu tun, sondern ist einfach nur dummes Tippen. Eine Schreibkraft kann dies nach einer zweiwöchigen Schulung tun. Das ist keine Programmierung.

Roman:

Was die, wie Sie es ausdrücken, Dekomposition betrifft, so geht es darum zu verstehen, wie Flussdiagramme aufgebaut sind.

Ein Flussdiagramm ist ein Diagramm für prozedurale Sprachen. "Hier ist die for-Schleife, hier die if-Schleife". Heutzutage schreibt niemand mehr in prozeduralen Sprachen. Für eine Benutzeranwendung ist es unsinnig, z. B. C oder Pascal zu wählen. Für einen Betriebssystem-Kernel oder eine andere prozedurale Sprache ist sie die beste. Dies ist jedoch ein verschwindend geringer Prozentsatz der Aufgaben und liegt eindeutig nicht im Rahmen der Aufgabenstellung.
 
Vasiliy Sokolov:

Und was wäre der Nutzen eines solchen Wissens? Sie beherrschen die Sprache auf sehr niedrigem Niveau. Sie wissen, welche Assembler-Befehle if ersetzen und wie die for-Schleife in goto umgewandelt wird. Sie kennen Assembler. Wo ist da der Gewinn? Sehen Sie sich die Python-Programmierer an. Sie wissen das alles nicht. Aber sie sind sehr gut im Umgang mit Funktionen, sie wissen, wie man Map/Reduce macht. Sie sind in der Lage, sie zu verfassen und sich gegenseitig zu übermitteln. Und wo ist MQL heutzutage, wo sie nicht so viel wie in Python schreiben?

In Ihrem Verständnis von einfacher Logik ist das eine furchtbar verfahrenstechnische Sache. In meinem Verständnis von Logik ist es wie in Assembler: "Was ich sehe, das besinge ich". Das hat nichts mit Logik zu tun, sondern ist einfach nur dummes Tippen. Eine Schreibkraft kann dies nach einer zweiwöchigen Schulung tun. Das ist keine Programmierung.

Ein Flussdiagramm ist ein Diagramm für verfahrenstechnische JDs. "Hier ist die for-Schleife, hier die if-Schleife". Heutzutage schreibt man nicht mehr in prozeduralen Sprachen. Für eine Benutzeranwendung ist es unsinnig, z. B. C oder Pascal zu wählen. Für einen Betriebssystem-Kernel oder eine andere prozedurale Sprache ist sie die beste. Aber das ist ein verschwindend geringer Prozentsatz der Aufgaben und liegt eindeutig außerhalb des Rahmens der vorliegenden Aufgabe.
Vasily, wie stellst du dir vor, TC das Programmieren im OOP-Paradigma beizubringen, indem du die elementaren Dinge vermeidest, die er nicht hat?) Nein, vielleicht ist es möglich, aber ich kann mir nicht vorstellen...

Wie wir erklären: "Programmierung von Algorithmen (Routinen) = falscher Ansatz. Sie sollten konzeptionell vollständige, hierarchisch strukturierte, gemusterte Systeme, so genannte "Objekte", programmieren, die ihre Eigenschaften und Methoden innerhalb einer Softwareumgebung gegenseitig vererben".

Und er sagte sofort: "Ahhhh, warum hast du das nicht früher gesagt! Es macht alles Sinn.")))
 
Vasiliy Sokolov:

Und was wäre der Nutzen eines solchen Wissens? Sie beherrschen die Sprache auf sehr niedrigem Niveau. Sie wissen, welche Assembler-Befehle if ersetzen und wie die for-Schleife in goto umgewandelt wird. Sie kennen Assembler. Wo ist da der Gewinn? Sehen Sie sich die Python-Programmierer an. Sie wissen das alles nicht. Aber sie sind sehr gut im Umgang mit Funktionen, sie wissen, wie man Map/Reduce macht. Sie sind in der Lage, sie zu verfassen und sich gegenseitig zu übermitteln. Und wo ist MQL heutzutage, wo sie nicht so viel wie in Python schreiben?

In Ihrem Verständnis von einfacher Logik ist das eine furchtbar verfahrenstechnische Sache. In meinem Verständnis von Logik ist es wie in Assembler: "Was ich sehe, das besinge ich". Das hat nichts mit Logik zu tun, sondern ist einfach nur dummes Tippen. Eine Schreibkraft kann dies nach einer zweiwöchigen Schulung tun. Das ist keine Programmierung.

Ein Flussdiagramm ist ein Schema für prozedurale Sprachen. "Hier ist die for-Schleife, hier die if-Schleife". Heutzutage schreibt niemand mehr in prozeduralen Sprachen. Für eine Benutzeranwendung ist es unsinnig, z. B. C oder Pascal zu wählen. Für einen Betriebssystemkern oder eine andere prozedurale Sprache ist sie die beste. Dies ist jedoch ein verschwindend geringer Prozentsatz der Aufgaben und liegt eindeutig nicht im Rahmen der Aufgabenstellung.

Zu Ihrer Erleuchtung: Python ist in C geschrieben.
Und Python wurde entwickelt, um das Schreiben von Code zu erleichtern. Da sich diese Sprache jedoch aufgrund ihrer scheinbaren Einfachheit zu einer beliebten Sprache entwickelt hat, bleiben die Kenntnisse der Programmierer auf dem Niveau von Python.
Und nur Programmierer , die sich mit C auskennen, schreiben Bibliotheken und zusätzliche Dinge dazu. Es handelt sich um Programmierer und nicht um Programmiererinnen.
Das ist der Punkt, dass eine einfache Code-Tipperin die Programmierer mit ihrem Verständnis des Themas schlagen wird.
Du bist nur ein C#-Nik, deshalb hast du so einen Blick, aber denkst nicht einmal daran, in welcher Sprache diese C#-Sprache geschrieben ist))

 
Roman:

Wie soll man also die Möglichkeiten verstehen, wenn man sie nicht kennt?)
Die Problemstellung ist das Extremstadium der Beherrschung der Grundlagen einer Sprache, wenn man bereits weiß, was eine Variable ist, welche Größen sie haben kann, welche Bereiche sie umfasst usw.
Ich stand auch an einem Scheideweg, als ich nicht wusste, wo ich anfangen sollte, welche Sprache ich lernen und wie ich alles verstehen sollte. Es war eine Qual, weil ich mehrere Sprachen ausprobierte, um die Wahrheit zu finden.
Aber als ich schließlich erkannte, dass mql eine C-ähnliche Sprache ist, begann ich, C zielgerichtet zu lernen und mit den Grundlagen zu beginnen.
Und als ich mit dem Grundstudium fertig war, stellte ich überrascht fest, dass ich mql praktisch schon kenne, und alles ist mir klar, nur die Syntax und die Besonderheiten sollten durch Docks verbessert werden, das ist eine Eigenschaft von mql.
Nachdem ich den prozeduralen Ansatz der Programmierung verstanden hatte, begann ich nach einem Jahr, mich mit OOP zu beschäftigen. Lange Zeit war mir das nicht klar, weil es andere Bezeichnungen für dieselbe Sache gab.
Zum Beispiel, Methode und Funktion, was ist der Unterschied )) Variable und Klassenmitglied )) usw.
Aber um dorthin zu gelangen, müssen Sie die Grundlage des prozeduralen Ansatzes verstehen, und wenn Sie beginnen, die OOP-Terminologie schrittweise zu verstehen, öffnet sich das Verständnis sofort.
Das ist der Unterschied, die Wahl des anfänglichen Lernweges. Wie kann man auf Russisch schreiben, ohne Buchstaben und Satzzeichen zu kennen?
Denken Sie daran, wie Sie angefangen haben: mit Haken und Stöcken.

Ich weiß nicht, was ich sagen soll. Jeder hat seine eigene Art, denke ich. Ich bestehe nicht darauf. Aber Ziele können in verschiedenen Sprachen gelöst werden, und man kennt vielleicht nicht die Syntax, wenn man ein Ziel wählt, sondern nur die Möglichkeiten. Es gibt Bibliotheken für Websites in Python, und die Website kann in Python, PXP, Jumla, Html oder einer anderen Sprache erstellt werden, es ist eine Frage des Preises und der Verfügbarkeit von fertigen Funktionen (Skripte), und dies ist eine Problemstellung und erfordert tiefere Kenntnisse der Sprache. Für die Arbeit mit Reihen stehen folgende Skripte zur Verfügung: MKL, Python, R und Matlab. Die einheimische MCL wird für die Festlegung von Aufträgen durch die MV ausreichend sein.

Alles muss einfach harmonisch sein. Die Mechanik eines Autos zu kennen, ist nicht dasselbe wie es gut zu fahren. Aber den Mechanismus nicht zu kennen, ist schlecht für Pannen im Straßenverkehr).

Und jedem das Seine, oft ist ein guter Programmierer kein guter Algorithmiker und umgekehrt. Wenn diese Eigenschaften gut zusammenpassen, ist es normalerweise cool und teuer, aber nicht so oft.))))

 
Natürlich isoliert der prozedurale Ansatz den Programmierer von riesigen OOP-Bibliotheken, die tonnenweise vorgefertigte Lösungen enthalten. Und diese "Isolation" wirkt sich sicherlich auf das Niveau seiner Kodierung aus. Aber man kann die Bibliotheken nur erreichen, wenn man die Basis beherrscht. Das heißt, es ist möglich, ein Programm als eine Objektumgebung zu strukturieren, anstatt als eine flache funktionale Anweisung, wenn man nur ein starkes Fundament an anfänglicher Theorie und Praxis hat. Imho, natürlich.
 
Vasiliy Sokolov:

Und was wäre der Nutzen eines solchen Wissens? Sie beherrschen die Sprache auf sehr niedrigem Niveau. Sie wissen, welche Assembler-Befehle if ersetzen und wie die for-Schleife in goto umgewandelt wird. Sie kennen Assembler. Wo ist da der Gewinn? Sehen Sie sich die Python-Programmierer an. Sie wissen das alles nicht. Aber sie sind sehr gut im Umgang mit Funktionen, sie wissen, wie man Map/Reduce macht. Sie sind in der Lage, sie zu verfassen und sich gegenseitig zu übermitteln. Und wo ist MQL heutzutage, wo sie nicht so viel wie in Python schreiben?

In Ihrem Verständnis von einfacher Logik ist das eine furchtbar verfahrenstechnische Sache. In meinem Verständnis von Logik ist es wie in Assembler: "Was ich sehe, das besinge ich". Das hat nichts mit Logik zu tun, sondern ist einfach nur dummes Tippen. Eine Schreibkraft kann dies nach einer zweiwöchigen Schulung tun. Das ist keine Programmierung.

Ein Flussdiagramm ist ein Flussdiagramm für prozedurale Sprachen. "Hier ist die for-Schleife, hier die if-Schleife". Heutzutage schreibt niemand mehr in prozeduralen Sprachen. Für eine Benutzeranwendung ist es unsinnig, z. B. C oder Pascal zu wählen. Für einen Betriebssystemkern oder eine andere prozedurale Sprache ist sie die beste. Dies ist jedoch ein verschwindend geringer Prozentsatz der Aufgaben und liegt eindeutig nicht im Rahmen der Aufgabenstellung.

Es ist viel, es ist der richtige Weg, Dinge zu tun. Idealerweise sollte der Kunde ein guter Programmierer sein))) Wie viele Nerven würden dadurch gespart werden)))

Die Kenntnis einer Sprache auf niedrigem Niveau setzt die Kenntnis von Hochsprachen nicht außer Kraft, sondern vermittelt lediglich ein tieferes Verständnis für die Funktionsweise des Programms. Und wenn er weiß, wie Endlosschleifen funktionieren und wie viel Speicher sie verbrauchen, kann er sie gegebenenfalls optimieren. Nicht mehr als das.

Um ehrlich zu sein, verstehe ich den Sinn des Arguments nicht.

 
Valeriy Yastremskiy:

...

Und offen gesagt, verstehe ich den Sinn des Arguments nicht.

Ich glaube, Vasily will versuchen, einem Anfänger OOP-Denken beizubringen, bei dem alles außer OOP selbst zweitrangig ist. Beginnen Sie nicht mit Variablen, Operatoren und Arrays, sondern mit Klassen, der Vererbung von Eigenschaften, dem Aufbau von Objekthierarchien und der Anbindung leistungsfähiger Bibliotheken. Von der "Vorschule" direkt an die Universität wechseln.)))
Grund der Beschwerde: