Autoapprendimento del linguaggio MQL5 da zero - pagina 17

 
Roman:

L'esatto contrario di te!
La cosa più importante nella programmazione è conoscere il linguaggio al livello più basso possibile!
Per i principianti, un basso livello è la sintassi del linguaggio senza ulteriori wrapper di codice.
La decomposizione, come la metti tu, è una comprensione di come si compongono i diagrammi di flusso.
Ecco perché un programmatore non è valutato dalle fantasie filosofiche, ma dalla conoscenza pratica del linguaggio.
Come si può fantasticare senza le basi della lingua? Dov'è la semplice logica?
Equivale al linguaggio di un ingegnere elettronico, che è l'autore di questo thread, prima fornire tensioni alla scheda, e poi chiedersi perché la scheda si è bruciata ))

Non sono d'accordo. Quando si stabilisce un obiettivo, non è necessario conoscere la lingua, basta capire le sue capacità. Ma quando si fissa un obiettivo, lo si risolve, si selezionano gli algoritmi e si codifica, in tutte queste fasi è necessario. Impostare un problema senza conoscere la sintassi del linguaggio è a volte un grosso problema di implementazione)))

 
Roman:

... Equivalente, nel linguaggio elettronico, che è l'autore di questo thread, prima applicare tensioni alla scheda, e poi chiedersi perché la scheda si è bruciata ))

Ciao Roman! Ottimo paragone. Ora sono nella programmazione allo stesso livello dell'ingegnere elettronico, quando sono passato dal conoscere i principi dei transistor a imparare i principi dei circuiti digitali K155.

Anche se molti dei miei colleghi nel 1983 riuscivano a riparare i computer della serie EU senza alcuna comprensione di come funzionavano i transistor. Avevano solo bisogno di conoscere l'algebra della logica. Era una digressione - nostalgia dei tempi sovietici!

Saluti, Vladimir.

 
Valeriy Yastremskiy:

Non sono d'accordo. Quando si stabilisce un obiettivo, non è necessario conoscere la lingua, ma capire le sue capacità. Ma nell'impostazione del problema, nella risoluzione del problema, nella selezione dell'algoritmo e nella codifica, tutte queste fasi sono necessarie. Impostare un problema senza conoscere la sintassi del linguaggio è a volte un grosso problema di implementazione)))

Quindi come farai a capire le possibilità se non conosci queste possibilità ))
Definizione dei problemi, è lo stadio estremo della padronanza delle basi del linguaggio, quando hai già capito cos'è una variabile, quali dimensioni può avere, lo scope, ecc.
Ero anche ad un bivio, quando non sapevo da dove cominciare, quale lingua imparare e capire tutto. È stata un'agonia, perché ho provato diverse lingue per trovare la verità.
Ma quando ho finalmente capito che mql era un linguaggio simile al C, ho iniziato a imparare il C in modo mirato, partendo dalle basi.
E quando ho finito lo studio di base, sono stato sorpreso di scoprire che praticamente conosco già mql, e tutto mi è chiaro, solo la sintassi e le specifiche dovrebbero essere migliorate da docks, è una caratteristica di mql.
Avendo capito l'approccio procedurale della programmazione, dopo un anno ho cominciato ad addentrarmi nell'OOP. Per molto tempo non mi era chiaro, a causa di altri nomi della stessa cosa.
Per esempio, metodo e funzione, qual è la differenza )) variabile e membro della classe )) ecc.
Ma per arrivarci, è necessario capire le basi stesse dell'approccio procedurale, e quando si inizia a capire gradualmente la terminologia OOP, la comprensione si apre all'istante.
Questa è la differenza, la scelta del percorso di apprendimento iniziale. Come si può scrivere in russo senza conoscere le lettere e i segni di punteggiatura?
Ricorda da dove hai iniziato, con ganci e bastoni.

 
Roman:

L'esatto contrario di te!
Il fattore determinante nella programmazione è la conoscenza del linguaggio, al livello più basso possibile!

Che cosa vi porterà? Conosci la lingua ad un livello ultra-basso. Sapete quali comandi dell'assemblatore vengono sostituiti con if, come il ciclo for viene convertito in goto. Conosci l'assemblatore. Dov'è il profitto in questo? Guarda i programmatori Python. Non sanno nulla di tutto questo. Ma sono molto bravi a gestire le funzioni, sanno come Map/Reduce. Sono in grado di comporli e di inserirli l'uno nell'altro. E dov'è MQL ora che non ci scrivono così tanto rispetto a Python?

Romano:

Come si fa a fantasticare senza le basi della lingua? Dov'è la semplice logica?
È simile al linguaggio elettronico, che è l'autore di questo thread, prima fornire tensioni alla scheda, e poi chiedersi perché la scheda si è bruciata ))

Nella tua comprensione della semplice logica, è una procedura da banco. Per come la vedo io, è come il linguaggio di assemblaggio: "quello che vedo è quello che canto". Non c'è logica, è solo una stupida abilità di battitura. Una dattilografa può farlo dopo un corso di formazione di due settimane. Questa non è programmazione.

Romano:

Per quanto riguarda la decomposizione, come dici tu, si tratta di capire come sono composti i diagrammi di flusso.

Un diagramma di flusso è un diagramma per linguaggi procedurali. "Ecco il ciclo for, ecco il ciclo if". Nessuno scrive in linguaggi procedurali al giorno d'oggi. Non ha senso che un'applicazione utente scelga, per esempio, C o Pascal. Per il core di un sistema operativo o qualche altro linguaggio procedurale è il migliore. Ma questa è una percentuale irrisoria di compiti e chiaramente non rientra nell'ambito del compito da svolgere.
 
Vasiliy Sokolov:

E cosa otterrebbe questa conoscenza? Conosci la lingua ad un livello ultra-basso. Sapete quali comandi assembler sostituiscono gli if, come il ciclo for viene convertito in goto. Conosci l'assemblatore. Dov'è il profitto in questo? Guarda i programmatori Python. Non sanno nulla di tutto questo. Ma sono molto bravi a gestire le funzioni, sanno come Map/Reduce. Sono in grado di comporli e di inserirli l'uno nell'altro. E dov'è MQL al giorno d'oggi dove si scrive non tanto quanto in Python?

Nella sua comprensione della logica semplice, è una cosa terribilmente procedurale. Nella mia comprensione della logica è come in assembler: "quello che vedo, quello che canto". Non c'è logica, è solo una stupida abilità di battitura. Una dattilografa può farlo dopo un corso di formazione di due settimane. Non è la programmazione.

Un diagramma di flusso è un diagramma per i JD procedurali. "Ecco il ciclo for, ecco il ciclo if". Oggi non scrivono in linguaggi procedurali. Non ha senso che un'applicazione utente scelga, per esempio, C o Pascal. Per il core di un sistema operativo o qualche altro linguaggio procedurale è il migliore. Ma è una percentuale irrisoria di compiti ed è chiaramente al di fuori dello scopo del compito da svolgere.
Vasily, come puoi immaginare di insegnare a TC a programmare nel paradigma OOP, evitando le cose elementari, che lui non ha?) No, beh, forse è possibile, ma non posso immaginare...

Come spieghiamo: "Algoritmi di programmazione (routine) = approccio sbagliato. Dovreste programmare sistemi concettualmente completi, gerarchicamente strutturati e modellati chiamati "oggetti" che ereditano le proprietà e i metodi degli altri all'interno di un ambiente software".

E lui disse subito: "Ahhhh, perché non l'hai detto prima! Tutto ha un senso")))
 
Vasiliy Sokolov:

E quale sarebbe il beneficio di tale conoscenza? Conosci la lingua ad un livello ultra-basso. Sapete quali comandi assembler sostituiscono gli if, come il ciclo for viene convertito in goto. Conosci l'assemblatore. Dov'è il profitto in questo? Guarda i programmatori Python. Non sanno nulla di tutto questo. Ma sono molto bravi a gestire le funzioni, sanno come Map/Reduce. Sono in grado di comporli e di inserirli l'uno nell'altro. E dov'è MQL al giorno d'oggi dove si scrive non tanto quanto in Python?

Nella sua comprensione della logica semplice, è una cosa terribilmente procedurale. Nella mia comprensione della logica è come in assembler: "quello che vedo, quello che canto". Non c'è logica, è solo una stupida abilità di battitura. Una dattilografa può farlo dopo un corso di formazione di due settimane. Non è la programmazione.

Un diagramma di flusso è uno schema per i linguaggi procedurali. "Ecco il ciclo for, ecco il ciclo if". Nessuno scrive in linguaggi procedurali al giorno d'oggi. Non ha senso che un'applicazione utente scelga, per esempio, C o Pascal. Per il core di un sistema operativo o qualche altro linguaggio procedurale è il migliore. Ma questa è una percentuale irrisoria di compiti e chiaramente non rientra nell'ambito del compito da svolgere.

Per vostra informazione, Python è scritto in C.
E Python è stato progettato per rendere più facile la scrittura del codice. Ma essendo diventato un linguaggio popolare a causa della sua apparente semplicità, la conoscenza dei codificatori rimane al livello di Python.
E solo i programmatori che conoscono il C scrivono librerie e roba aggiuntiva per esso. Questi sono programmatori e non codificatori.
Questo è il punto che una semplice digitatrice di codice batterà i codificatori con la sua comprensione della materia.
Tu sei solo un C#-nik, ecco perché hai un tale sguardo, ma non pensi nemmeno in che lingua è scritto questo linguaggio C#))

 
Roman:

Quindi come si fa a capire le possibilità se non si conoscono le possibilità ))
L'impostazione dei problemi è la fase estrema della padronanza delle basi di un linguaggio, quando si capisce già cos'è una variabile, quali dimensioni può avere, gli ambiti, ecc.
Ero anche ad un bivio, quando non sapevo da dove cominciare, quale lingua imparare e capire tutto. È stata un'agonia, perché ho provato diverse lingue per trovare la verità.
Ma quando ho finalmente capito che mql era un linguaggio simile al C, ho iniziato a imparare il C in modo mirato, partendo dalle basi.
E quando ho finito lo studio di base, sono stato sorpreso di scoprire che praticamente conosco già mql, e tutto mi è chiaro, solo la sintassi e le specifiche dovrebbero essere migliorate da docks, è una caratteristica di mql.
Avendo capito l'approccio procedurale della programmazione, dopo un anno ho cominciato ad addentrarmi nell'OOP. Per molto tempo non mi è stato chiaro, a causa di altri nomi della stessa cosa.
Per esempio, metodo e funzione, qual è la differenza )) variabile e membro della classe )) ecc.
Ma per arrivarci, è necessario capire le basi stesse dell'approccio procedurale, e quando si inizia a capire gradualmente la terminologia OOP, la comprensione si apre all'istante.
Questa è la differenza, la scelta del percorso di apprendimento iniziale. Come si può scrivere in russo senza conoscere le lettere e i segni di punteggiatura?
Ripensate al punto di partenza, con ganci e bastoni.

Non so cosa dire. Ognuno ha il suo modo, credo. Non insisto. Ma gli obiettivi possono essere risolti in diversi linguaggi, e uno può non conoscere la sintassi quando sceglie un obiettivo, ma solo le possibilità. Ci sono librerie per siti web in python, e il sito può essere fatto in python, pxp, jumla, html o qualsiasi altro, è una questione di prezzo e di disponibilità di funzionalità pronte (script), e questa è una dichiarazione di problema e richiede una conoscenza più profonda del linguaggio. Possiamo selezionare i seguenti script per lavorare con le serie: MKL, Python, R e Matlab. La MCL nativa sarà sufficiente per impostare gli ordini da parte delle AM.

Tutto deve essere in armonia. Conoscere la meccanica della macchina non è la stessa cosa che guidarla bene. Ma non conoscere il meccanismo è un male per i guasti sulla strada).

E a ciascuno il suo, spesso un buon codificatore non è un buon algoritmista e viceversa. Se queste qualità sono buone insieme, è bello e costoso di solito, ma non così spesso.))))

 
Naturalmente, l'approccio procedurale isola il programmatore da enormi librerie OOP che contengono tonnellate di soluzioni pronte all'uso. E questo "isolamento" influisce certamente sul livello della sua codifica. Ma si può raggiungere le biblioteche solo dopo aver padroneggiato la base. Cioè, è possibile strutturare un programma come un ambiente a oggetti, piuttosto che una piatta istruzione funzionale, solo avendo una forte base di teoria e pratica iniziale. Imho, naturalmente.
 
Vasiliy Sokolov:

E quale sarebbe il beneficio di tale conoscenza? Conosci la lingua ad un livello ultra-basso. Sapete quali comandi assembler sostituiscono gli if, come il ciclo for viene convertito in goto. Conosci l'assemblatore. Dov'è il profitto in questo? Guarda i programmatori Python. Non sanno nulla di tutto questo. Ma sono molto bravi a gestire le funzioni, sanno come Map/Reduce. Sono in grado di comporli e di inserirli l'uno nell'altro. E dov'è MQL al giorno d'oggi dove si scrive non tanto quanto in Python?

Nella sua comprensione della logica semplice, è una cosa terribilmente procedurale. Nella mia comprensione della logica è come in assembler: "quello che vedo, quello che canto". Non c'è logica, è solo una stupida abilità di battitura. Una dattilografa può farlo dopo un corso di formazione di due settimane. Non è la programmazione.

Un diagramma di flusso è un diagramma di flusso per linguaggi procedurali. "Ecco il ciclo for, ecco il ciclo if". Nessuno scrive in linguaggi procedurali al giorno d'oggi. Non ha senso che un'applicazione utente scelga, per esempio, C o Pascal. Per un kernel del sistema operativo o qualche altro linguaggio procedurale è il migliore. Ma questa è una percentuale irrisoria di compiti e chiaramente non rientra nell'ambito del compito da svolgere.

È molto, è il modo giusto di fare le cose. Idealmente, il cliente dovrebbe essere un buon codificatore))) Quanto nervo verrebbe risparmiato)))

Conoscere un linguaggio a basso livello non invalida la conoscenza dei linguaggi di alto livello, e ti dà solo una comprensione più profonda di come funziona il programma. E se sa come funzionano i go-to loop e quanta memoria consumano, può ottimizzarli se necessario. Non più di questo.

Ad essere onesti, non capisco il senso della discussione.

 
Valeriy Yastremskiy:

...

E francamente non capisco il senso della discussione.

Penso che Vasily voglia provare a insegnare a un principiante il pensiero OOP, dove tutto tranne l'OOP stesso è secondario. Non iniziate con variabili, operatori, array, ma iniziate con le classi, ereditando proprietà, costruendo gerarchie di oggetti e collegando potenti librerie. Trasferimento dalla "scuola materna" e andare direttamente all'università)))