Domande su OOP in MQL5

 

Ieri è venuta fuori una domanda, così ho deciso di consultare i miei fratelli)

Sabato 21.05.2016 stavo spiegando le basi dell'OOP a un uomo, usando una libreria standard come esempio. Prima programmava in MQL4, poi ha avuto una pausa di 5 anni e ha deciso di tornare. Ho iniziato ad introdurlo all'hedging in MT5, perché io stesso rifaccio tutto lì.

Per quanto strano possa sembrare, questa persona (Maxim, intendo te, se stai leggendo questo articolo :)) ha capito le basi dell'OOP e siamo anche riusciti a passare attraverso le parti più importanti usando l'esempio di una libreria standard sotto il debugger.

Ma!!! avevo promesso una registrazione, e per motivi tecnici è volato tutto a meow((

Ho promesso che farò dei video cheat sheets esattamente su OOP, penso, 10 minuti ciascuno

Domanda:

Suggerisci un argomento su OOP in MQL5 per 10 minuti. Lo posterò su YouTube, sarà utile per tutti

------------------

Scrivete tutto ciò che è interessante, lo sistemerò, cercherò di soddisfare le vostre richieste nel mio tempo libero

Buona fortuna ))

 
Alexey Volchanskiy:

Ieri è venuta fuori una domanda, così ho deciso di consultare i miei fratelli)

Sabato 21.05.2016 stavo spiegando le basi dell'OOP a un uomo, usando una libreria standard come esempio. Prima programmava in MQL4, poi ha avuto una pausa di 5 anni e ha deciso di tornare. Ho iniziato ad introdurlo all'hedging in MT5, perché io stesso rifaccio tutto lì.

Per quanto strano possa sembrare, questa persona (Maxim, intendo te, se stai leggendo questo articolo :)) ha capito le basi dell'OOP e sull'esempio della libreria standard siamo anche riusciti a passare attraverso le parti più importanti usando il debugger.

Ma!!! avevo promesso una registrazione, e per motivi tecnici è volato tutto a meow((

Ho promesso che farò dei video cheat sheets esattamente su OOP, penso, 10 minuti ciascuno

Domanda:

Suggerisci un argomento su OOP in MQL5 per 10 minuti. Lo posterò su YouTube, sarà utile per tutti

------------------

Scrivete tutto ciò che è interessante, lo sistemerò, cercherò di soddisfare le vostre richieste nel mio tempo libero

Buona fortuna ))

Alexey, fai degli esempi sui posti meno coperti nell'aiuto - puntatori, puntatori di funzioni, lavoro con le classi template, ecc. Anche se, onestamente, a mio parere, un tale video su C++ in abbondanza e non aumenterà la conoscenza, per aumentare la conoscenza avete bisogno di letteratura, webinar e diligenza.
 
coderex:
Alexey, fai degli esempi sui posti meno coperti nell'aiuto - puntatori, puntatori di funzioni, lavorare con le classi template, ecc. Anche se, francamente, a mio parere, un tale video su C++ è abbondante e non aumenterà la conoscenza in alcun modo, avete bisogno di letteratura, webinar e diligenza per migliorarla.
Non ci sono puntatori in MQL, ci sono descrittori) I puntatori (condizionali) alle funzioni sono stati introdotti di recente, una sorta di stampella per adattarsi al concetto generale di "tutti gli algo-trader sono suicidi, non date loro puntatori".
 
Alexey Volchanskiy:
Non ci sono puntatori in MQL, ci sono maniglie)) I puntatori (condizionali) alle funzioni sono stati introdotti recentemente, è una specie di stampella per adattarsi al concetto generale "tutti gli algo-trader sono suicidi, non devono usare puntatori".

Alexei, non aggrapparti alle parole :) Se avessi scritto "descrittori", per qualche motivo sono sicuro che non mi avreste capito immediatamente. Per quanto riguarda ciò che è stato introdotto di recente e ciò che è stato introdotto molto tempo fa, non cambia l'essenza, queste domande sull'aiuto sono sospese nell'aria, non c'è una parola o un po' su di esse. E questi nomi, per quanto possano comportarsi in modo diverso per quanto riguarda C++ e MQL, hanno tutti lo stesso aspetto, almeno, gli sviluppatori stanno cercando di farlo in questo modo. Ho anche visto che hanno già introdotto il confronto dei puntatori :) Anche se onestamente, per MT non riesco a immaginare dove usarlo.

Ma comunque, penso che se coprirete queste domande, molti codificatori principianti vi saranno grati. Ho visto il tuo video l'altro giorno; sai come spiegare le cose in modo chiaro :)

 
coderex:

Alexei, non aggrapparti alle parole :) Se avessi scritto "descrittori", per qualche motivo sono sicuro che non mi avreste capito immediatamente. Per quanto riguarda ciò che è stato introdotto di recente e ciò che è stato introdotto molto tempo fa, non cambia l'essenza, queste domande sull'aiuto sono sospese nell'aria, non c'è una parola o un po' su di esse. E questi nomi, per quanto possano comportarsi in modo diverso per quanto riguarda C++ e MQL, hanno tutti lo stesso aspetto, almeno, gli sviluppatori stanno cercando di farlo in questo modo. Ho anche visto che hanno già introdotto il confronto dei puntatori :) Anche se onestamente, per MT non riesco a immaginare dove usarlo.

Ma comunque, penso che se coprirete queste domande, molti codificatori principianti vi saranno grati. Una volta ho guardato il tuo video, sai come spiegare le persone in modo chiaro :)

Imho, in nessun caso non si dovrebbe fare di un video educativo una versione estesa di aiuto. Lo scopo è quello di educare, non di illuminare i dettagli indegni.
 
Alexey Volchanskiy:

Domanda:

Suggerisci un argomento su OOP in MQL5 per 10 minuti, lo metterò su YouTube, cioè, sarà utile per tutti

La OOP dovrebbe essere spiegata senza alcun codice e tutta quella nomenclatura astrusa come classi, oggetti, puntatori, ecc. ecc.

Come funziona un corso di programmazione classica? All'inizio, uno studente cerca agonizzante di passare dal pensiero umano alle basi della programmazione (cicli, funzioni, variabili e altre cose come quel "bagaglio di conoscenze" necessario). Poi, quando la confusione di funzioni, variabili e if forma una struttura più o meno ordinata, allo studente viene detto: "Guarda: esiste una cosa come l'OOP. Dimentica ciò che ti è stato insegnato prima e ricomincia a pensare come un umano". Ciò che segue è una rottura di modelli, il "bagaglio di conoscenze" appena ottenuto con tanta difficoltà viene gettato sul mucchio della spazzatura, e la persona si ritrova da qualche parte tra il cielo e la terra. Naturalmente, questo "OLP" viene poi ricordato per diversi anni come un brutto sogno con brividi e dolore nelle parti rimanenti del cervello (le altre sono state bruciate dalla nuova conoscenza).

No, affermo categoricamente che non si dovrebbe imparare la programmazione. Al contrario, è dannoso e pericoloso. Invece è necessario insegnare a pensare. E con questo c'è un completo fallimento del metodo classico di apprendimento.

 
Vasiliy Sokolov:
Secondo me, non si può assolutamente fare una versione estesa di Aiuto da un video di formazione. Il compito è quello di educare, non di illuminare i dettagli indegni.

Alexei ha chiesto il parere degli utenti del forum, io gli ho scritto la mia opinione, e quello che ci sarà, solo Alexei lo sa :)

A proposito, come si può imparare se non ci sono informazioni da nessuna parte? Io lo so, dato che sto scrivendo in C++, e quelli che stanno imparando solo MQL5, non sapranno di questi dettagli, perché il riferimento non dice una parola a riguardo :)

 
Vuoi imparare OOP in modo competente? - Imparare UML
 

Vasiliy Sokolov:

Poi, quando la confusione di funzioni, variabili e if nella vostra testa forma una struttura più o meno ordinata, allo studente viene detto: "Guarda: esiste una cosa come l'OOP. Dimentica ciò che ti è stato insegnato prima e ricomincia a pensare come un umano". Poi arriva la rottura dei modelli, il "bagaglio di conoscenze" appena ottenuto con tanto sforzo viene gettato nella spazzatura e la persona si ritrova da qualche parte tra la terra e il cielo.

Beh, tu sei troppo. Un uomo è stato inizialmente impegnato solo in OOP. Almeno, semplicemente preparando una tazza di caffè. Da dove vengono i modelli? IMHO, l'assurdità di insegnanti poco intelligenti, che spostano i loro problemi sugli studenti.
 

Non spaventare la gente con l'OOP.

Non è necessario conoscere l'OOP per creare buoni EA o altre cose in MQL5. Non c'è nemmeno bisogno di conoscere la parola classe o puntatore.

L'OOP è usata soprattutto per creare grandi compiti e complessi, specialmente quando c'è un lavoro di squadra.

E in MQL5 si può fare a meno dell'OOP.

Devo aggiungere che per più di 10 anni mi sono occupato di formare quei programmatori che vogliono lavorare in aziende straniere, dove il requisito principale è la conoscenza di OOP.

Questo lo dico perché non pensiate che io sia un avversario dell'OOP. Bisogna solo usarlo come previsto e non complicarsi la vita.

 

La comprensione di OOP arriva da sola quando i programmi diventano più complessi. Il programmatore comincia a dividere il foglio di codice in diverse funzioni, c'è bisogno di trasferire i risultati delle varie funzioni tra di loro, presto comincia a sospettare che trasferire tutto tramite gli argomenti delle funzioni non è la soluzione migliore, molto probabilmente comincerà a creare variabili globali, una persona è quasi matura per la OOP, l'unica cosa che rimane è isolare le funzioni logicamente correlate e i loro dati privati. La mia esperienza: in mcl4 ho iniziato a creare qualcosa del genere:

// file_1.mqh
int name1_counter = 0;
int name1_data = 0;
double name1_value = 0;
void name1_action() {name1_counter++; name1_data = ;}
int name1_get() {return }

// file_2.mqh
int name2_counter = 0;
int name2_data = 0;
double name2_value = 0;
void name2_action() {}
int name2_get() {}


Non conoscevo nemmeno l'OOP, ma c'era quasi (sì, solo un'istanza, ma lo scheletro era pronto). Io guiderei i tirocinanti attraverso questi passi. Iniziate con un foglio di int e if e gradualmente strutturate il codice. Alla fine una persona raggiungerà quasi da sola l'OOP e la cosa principale è che capirà come ci è arrivata.

Ricordo di aver letto un libro su questa "magia" OOP molto tempo fa. Il culmine del libro era una dimostrazione di funzioni virtuali, dicendo che questo è il potere dell'OOP. Dovrei strappare le mani a questi autori. Finora non ho trovato nessun libro decente.