Quello che vorrei dal "terminale" come programmatore professionista. Un altro thread con i desideri per MQL5. - pagina 6

 
Korey писал (а) >>
circa un quarto degli algoritmi numerici usa il goto, che dire se un algoritmo è provato, approvato, testato, ma non può essere
a MT senza goto?

Infilare la funzionalità in una dll o rimuovere il goto.

Mi sto ancora chiedendo di quali algoritmi stai parlando.

 

Mi unisco a Korey. Nessuno ha visto qualche algoritmo ingegnoso implementato con goto? Tutta questa isteria del goto è solo una specie di religione piuttosto che un bisogno reale. Un codificatore competente può scrivere un codice chiaro e preciso anche con goto e può essere più leggibile di un codice equivalente con salti condizionali.

P.S. Sembra che lo stesso Wirth, che ha criticato il goto, l'abbia lasciato comunque nel suo brainchild. E in C++, "il più strutturato dei linguaggi strutturati", il goto non sembra essere scomparso. Non accetto l'obiezione della retrocompatibilità con C.

 
TheXpert писал (а) >>

In realtà, usare goto è un cattivo stile di programmazione e nel 99% dei casi il codice con goto può essere sostituito con codice simile con dichiarazioni condizionali esistenti.

Non sono d'accordo.

Puoi riscriverlo. Ma si può anche dire che l'assenza di goto in un linguaggio è un cattivo stile e il 99% del codice può essere riscritto in base al suo uso.

A me, per esempio, è mancato molto il goto per uscire da complesse strutture if-else annidate con loop. Se da qualche parte in profondità nella struttura viene calcolata la necessità di uscire dall'analisi, devo scrivere un'ulteriore analisi delle bandiere di uscita per tutti questi allegati, cosa che trovo scomoda. Sovraccarica il codice. È molto più facile ricordare lo stato della bandiera e andare fuori dall'analisi.

Non deve passare al segno. È stato già discusso. Potremmo passarlo dietro un blocco esterno (con nome) (operatore, ciclo - qualsiasi cosa abbia un corpo tra parentesi graffe).

 

Beh, SK. ha già scritto proprio quello che volevo chiedere al fanatico dello stile corretto (ad esempio uscire dalla profondità di un if-else annidato cinque volte).

 
TheXpert писал (а) >>

Stipate la funzionalità nella dll o rimuovete il goto.

Mi sto ancora chiedendo di quali algoritmi stai parlando.

si tratta di Fortran come fonte principale di metodi numerici.
Tutto in esso è testato e approvato dall'associazione americana degli ingegneri.
e non c'è nessun problema qui - lavoriamo con DLL e questo è tutto)))
e come se lo facesse - si vuole inserire direttamente nel codice MQ, ma bisogna spulciare l'algoritmo, il che richiede molto tempo.

P.S. e soprattutto pericoloso.

 
Mathemat писал (а) >>

Mi unisco a Korey. Nessuno ha visto qualche algoritmo ingegnoso implementato con goto? Tutta questa isteria del goto è solo una specie di religione piuttosto che un bisogno reale. Un codificatore competente può scrivere codice chiaro e pulito anche con goto e può essere più leggibile del codice equivalente con salti condizionali.

P.S. Sembra che lo stesso Wirth, che ha criticato il goto, lo abbia lasciato comunque nel suo brainchild. E in C++, "il più strutturato dei linguaggi strutturati", il goto non sembra essere scomparso. Obiezioni a

Non accetto la retrocompatibilità con C.

Non voglio dissentire. Proprio così.

SK. ha scritto (a) >>.

Non sono d'accordo.

È possibile riscriverlo. Ma si potrebbe anche dire che la mancanza di goto nel linguaggio è un cattivo stile e il 99% del codice può essere riscritto in base al suo uso.

A me, per esempio, è mancato molto il goto per uscire da complesse strutture if-else annidate con loop. Se da qualche parte in profondità nella struttura viene calcolata la necessità di uscire dall'analisi, devo scrivere un'ulteriore analisi delle bandiere di uscita per tutti questi allegati, cosa che trovo scomoda. Sovraccarica il codice. È molto più facile ricordare lo stato della bandiera e andare fuori dall'analisi.

Non deve passare al segno. È stato già discusso. Potremmo passarlo dietro un blocco esterno (con nome) (operatore, ciclo - qualsiasi cosa abbia un corpo dentro le parentesi graffe).

La pausa non funzionerebbe?


Tutto sommato, ognuno ha il suo stile e la sua comprensione, e questa è la fine della questione.

SK. Se avete problemi con questo, contattatemi, vi aiuterò, secondo la disponibilità di tempo.

 
TheXpert писал (а) >> La pausa non va bene?

Questo è solo per i loop o switch (a proposito, non è una costruzione molto necessaria, che può essere sostituita altrettanto elegantemente da una catena if...else). Tutto è relativo.

 
TheXpert писал (а) >>

La rottura non andrebbe bene?

In generale - ognuno ha il suo stile e la sua comprensione, chiudiamo l'argomento a questo punto.

SK. Se hai qualche problema con esso, ti aiuterò se ho tempo.

La pausa non va bene. Ha un effetto limitato.

E non dovreste essere scortesi.

 
SK. писал (а) >>

E non dovresti essere scortese.

Non lo pensavo.

 
Korey писал (а) >>

si tratta di Fortran come fonte primaria di metodi numerici.
tutto in esso è testato e approvato dall'associazione americana degli ingegneri.
e qui non c'è nessun problema - lavoriamo con DLL e questo è tutto)))
e come se esistesse - si vuole inserire direttamente nel codice MQ, ma bisogna riscrivere l'algoritmo, il che richiede molto tempo.

P.S. E soprattutto, è pericoloso.

Fortran, c'era goto. Ma non ha niente a che vedere con l'efficienza dei metodi numerici. In MatLab è implementato altrettanto (anche di più) e non c'è nessun goto. Goto ha una storia che risale allo stile di programmazione del linguaggio assembly (move to label). L'apparente semplicità di questo operatore è fuorviante. Supponiamo che ci siano cinque attacchi if else. E ha fatto goto dove serve e basta, ma poi ci sono variabili locali e globali, stack, puntatori, array, ecc. Cosa fare con loro? Implementare l'output corretto di allegati in assembler, tenendo conto di tutti gli errori immaginabili ((. È difficile capire come farlo correttamente anche in un linguaggio di alto livello, mentre in assembler è un vero casino.

Se fossi lo sviluppatore, cercherei di fare in modo che MQL5 permetta di allegare programmi scritti in MathCad(MatLab). Sarebbe semplice e facile (e non la mano destra sull'orecchio sinistro). Si tratta di miliardi di ore di lavoro risparmiate + un passo da gigante nella capacità di elaborare i dati. Per dare questa capacità, e lo sforzo principale per migliorare il terminale