Addio robot - ciao marasma - pagina 12

 
simpleton:

A proposito, riguardo all'esperienza di gestione. 5 anni fa abbiamo discusso sul forum mql5 sulle prospettive di MT5, ho detto allora che il tempo lo dirà. Sono passati cinque anni e vediamo che la comunità ha rifiutato MT5.

Avete una mancanza di informazioni. Non facciamo mai pubblicità alla nostra base di clienti e all'implementazione.


Non sto traducendo, principi generali, teoria, - non per la teoria stessa, ma per l'applicazione nella pratica. Non troverete "difetti" così gravi negli stessi compilatori C/C++.

E li hanno trovati e anche segnalati agli autori.


Se dite che in questo caso "un metodo statico di classe non ha il diritto di entrare nel contenuto della classe", allora perché in caso di creazione dinamica di un oggetto ha già questo diritto?

Stavo dicendo: "eccesso di protezione, sistemiamolo". In teoria le condizioni sembrano semplici, ma in pratica le implementazioni statiche/dinamiche funzionano diversamente, il che porta a delle discrepanze.


Che dire del fatto che un'implementazione non statica si comporta esattamente allo stesso modo?

Stessa cosa, la regola "privato significa privato" ha scavalcato la sfumatura "per i designer/sviluppatori facciamo un'eccezione".


Se ci sono errori nell'implementazione della lingua - beh, sì, ci sono errori. Stai parlando di controllo totale della qualità - quindi sbarazzati degli errori di implementazione nel compilatore MQL4++ in pratica, in modo che sia quasi difficile trovare errori come nei compilatori C++, dato che hai tale controllo. Continuo a credere che un parser non aiuterà a sbarazzarsi di errori come quelli che ho dimostrato.

Esatto, si tratta di errori nel compilatore che abbiamo scritto noi stessi da zero. Quindi questo è il modo abituale di raccogliere i rastrelli.

Il controllo totale della qualità è un approccio sistematico al lavoro sui bug e una chiara attenzione a trovarli. Questo è esattamente quello che facciamo. Voi, al contrario, dichiarate di essere contro la coercizione e di non volere un controllo rigoroso con mezzi tecnici.



Non si tratta di piacere o non piacere. C'è uno strumento. Perché dovrei rifiutare di usare tutte le sue possibilità?

In questo caso, non si tratta nemmeno di "mi piace". È Myers, del resto, a cui piace così tanto. E per qualche ragione nessuno cerca di accusarlo di cercare di "far inciampare deliberatamente" i compilatori C++.

Abbiamo una buona spiegazione - "questo non è un linguaggio C++, ma un linguaggio specializzato MQL4/MQL5. Quindi non dobbiamo sostenere tutto". Ma in ogni caso, il comportamento sarà ridotto il più possibile al familiare C/C++.


Non è un compito facile che non può essere risolto subito. Qui bisogna mettere un po' di impegno, e non poco. La stragrande maggioranza degli utenti di MQL non sono programmatori. E questo deve essere preso in considerazione nella progettazione della lingua. Ma il compito può essere risolto, ne sono sicuro.

Semmai, basterebbe aggiungere alcune strutture al vecchio MQL4 e pulire alcune cose come le priorità alle operazioni, come è stato fatto per MQL4++ e questo sarebbe un compromesso ragionevole. Il successo di MT4 era in gran parte dovuto all'assenza di "furbizia" del linguaggio. Questo non è il caso ora. E ci sono molti più errori nell'implementazione del compilatore perché MQL4++ è molto più complesso del vecchio MQL4 e il team di sviluppo non è cambiato molto.

Qui sono d'accordo con te, ma penso che sia soprattutto perché i concorrenti stanno facendo qualcosa che non capiscono.

Abbiamo riscritto 5 piattaforme di trading da zero 5 volte negli ultimi 14 anni.

È un modo migliore per creare qualcosa di veramente cool che caricare il vecchio asino con i mattoni hover. Quindi sia il rilascio di MT5 che il nuovo MQL5 ci hanno dato un enorme futuro per altri 10 anni a venire.

Ma quelli che se ne stanno seduti ad ammucchiare il vecchio progetto pensando "lascia l'uccello in mano, l'importante è che non mi licenzino se ne inizio uno nuovo e fallisco", perdono il rispetto della direzione, vengono liquidati come impotenti e lentamente escono di scena.

 
Renat:
Avete una mancanza di informazioni. Non facciamo mai pubblicità alla nostra base di clienti e all'implementazione.

Sto giudicando dalle informazioni pubbliche e dal supporto per la versione precedente, cioè MT4.

Quando è uscito MT4, MT3 ha smesso di essere supportato e offerto abbastanza rapidamente - tutti sono passati a MT4. Questo non è successo per la coppia MT4 - MT5, anche se è passato molto tempo. E c'è ancora un chiaro pregiudizio verso MT4.

Avete anche fatto il porting da MT5 a MT4, compreso il compilatore. Avete portato qualcosa da MT4 a MT3, 4 anni dopo la sua uscita?

Renat:
E l'hanno fatto e li hanno anche segnalati agli autori.

Ma c'è una differenza: è probabilmente centinaia se non migliaia di volte più difficile trovare un errore nei moderni compilatori C/C++ che in MQL4++.

Renat:

Io dicevo: "proteggete troppo, aggiustiamo le cose". In teoria le condizioni sembrano semplici, ma in pratica le implementazioni statiche/dinamiche funzionano diversamente, il che porta a delle discrepanze.

La stessa cosa - la regola "privato significa privato" ha scavalcato la regola "fare un'eccezione per il costruttore/distruttore".

Esatto, sono bug/incoerenze nel compilatore che abbiamo scritto da zero noi stessi. Questo è il modo abituale di raccogliere i rastrelli.

Il controllo totale della qualità è un approccio sistematico al lavoro sui bug e una chiara attenzione a trovarli. Questo è esattamente quello che facciamo.

Basta applicare i soliti test di regressione, che non richiedono nemmeno un "motore" speciale. C'è il controllo dell'accesso nelle classi/strutture nel linguaggio - scrivete una volta i test per esso sotto forma di programmi MQL compilabili. Alcuni dovrebbero compilare con successo, altri dovrebbero compilare con un certo errore. Questo è il controllo totale della qualità in questo particolare posto. È vero, i test che copriranno tutte le funzionalità di controllo dell'accesso devono essere scritti prima...

Renat:
In opposizione a questo, tu dici che sei contro la coercizione e non vuoi un controllo rigoroso con mezzi tecnici.

Non è il contrario. Il compilatore MQL per i programmi MQL potrebbe essere fatto per includere di default sia avvertimenti che ciò che alcuni compilatori C++ chiamano osservazioni. Ma sto "affermando" solo che almeno i commenti dovrebbero essere disabilitati. In MQL compilatore per programmi MQL. E ora nulla può essere disabilitato in questo senso nel compilatore MQL4++.

C'è una mancanza di controllo di qualità quando si implementa, in particolare, il compilatore MQL, poiché gli errori in esso sono così facilmente individuabili. Cosa intende per controllo di qualità rigoroso dei programmi MQL?

Renat:
Abbiamo una buona spiegazione - "questo non è il linguaggio C++, ma MQL4/MQL5 specializzato. Pertanto, non siamo obbligati a sostenerli tutti". Ma in ogni caso, il comportamento sarà ridotto il più possibile al familiare C/C++.

Fantastico. Tu non sostieni tutto. Ma ciò che è supportato non deve contenere così tanti errori nei più semplici costrutti di base.

Supporta il controllo dell'accesso ai membri della classe/struttura? Supportare almeno tutti i casi di base nei costrutti di base più semplici senza errori.

Prendete lo stesso controllo di accesso - nei costrutti di base più semplici:

/******************************************************************************/
class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  B b;
}

Questo compila senza errori:

'3.mq4' 3.mq4   1       1
0 error(s), 0 warning(s)                1       1

Tuttavia, vediamo che questo codice non si compila in C++ per due motivi:

$ clang -c 3.cpp
3.cpp:10:3: error: unknown type name 'B'
  B b;
  ^
1 error generated.

La classe B è definita all'interno della classe A, quindi dovrebbe essere referenziata in OnStart() come A::B:

class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  A::B b;
}

Ma non è tutto - il codice modificato ancora non si compila con il compilatore C++:

$ clang -c 3.cpp
3.cpp:10:6: error: 'B' is a private member of 'A'
  A::B b;
     ^
3.cpp:4:9: note: declared private here
  class B { };
        ^
1 error generated.

Per qualche motivo il controllo dell'accesso in MQL4++ generalmente funziona per i metodi e i dati - membri della classe, ma non per i tipi.

Quando si specifica lo scopo della classe B come A::B, il compilatore MQL4++ genera i seguenti errori:

'3.mq4' 3.mq4   1       1
'B' - struct member undefined   3.mq4   12      6
'b' - undeclared identifier     3.mq4   12      8
'b' - some operator expected    3.mq4   12      8
expression has no effect        3.mq4   12      6
3 error(s), 1 warning(s)                4       2

Perché questo "struct member undefined"?

Anche in questo caso, i compilatori C++ non hanno in qualche modo problemi con i tipi all'interno delle classi. Ma il compilatore MQL4++ lo fa.

Questi errori sono stati trovati per caso quando si è cercato di implementare il singleton Myers. Alcuni degli errori sono stati trovati da me, altri da altri partecipanti alla discussione. Mostra quanto facilmente si può inciampare in errori di implementazione del compilatore quando si programma in MQL4++. E non è necessario cercare gli errori di proposito per inciampare su di essi, basta provare a risolvere il compito.

Si prega di notare che questi sono tutti errori critici per un uso serio di MQL4++.

Ovviamente, non ci sono test di regressione del tipo che ho menzionato sopra, almeno per il semplice controllo di accesso per verificare se il compilatore MQL4++ funziona. Altrimenti sarebbe già stato tutto individuato e risolto.

Renat:
Abbiamo riscritto 5 piattaforme di trading da zero 5 volte negli ultimi 14 anni.

Questo è un modo migliore per creare qualcosa di veramente cool che caricare il vecchio asino di mattoni hover. Ecco perché sia il rilascio di MT5 che il nuovo MQL5 ci hanno dato un enorme futuro per altri 10 anni a venire.

D'altra parte, quelli che si siedono e martellano il vecchio progetto pensando "lasciate l'uccello in mano, l'importante è non essere licenziati se ne inizio uno nuovo e fallisco" stanno perdendo il rispetto della direzione, vengono liquidati come impotenti e lentamente lasciano la scena.

Sono d'accordo che l'azione proattiva con uno sviluppo di tipo innovativo è la componente più importante, ma non è l'unica. E si può rovinare un barile di miele con una mosca nell'unguento.

Una di queste sfumature è una distinta mancanza di qualità. La ragione per creare qualsiasi cosa in MQL si perde a causa di questo.

 

Io su SSE2, forse non in tema, ma anche con piacere, qualcosa ascoltato.

Devo cambiare uno dei computer, non tutti, ma distrae dal tema, non per lo sviluppo, non per il commercio, se non per leggere il forum.

 
MT5 Grande! È magico costruirci sopra delle piramidi.
 

Ciao utenti del forum!

Sto aggiornando a mt5 e vorrei

per chiedere a Pavlik.

Pavlik, se mi vedi, mandami un messaggio.

r.klassen.ruit@web.de

pansa

 
TimeMaster:

Se avete una grande base di indulgenze, gufi, ecc. che non si compilano nelle nuove build, allora ha senso dare un'occhiata più da vicino e "scuotere il petto". Dovresti tenere tutte le cose utili e non risparmiare tempo per riscriverle e debuggarle per le nuove build.

A un certo momento mi sono annoiato).

TimeMaster:

I veri programmatori esperti o quelli che vogliono diventarlo, seguono sempre le innovazioni, i bug e i glitch il loro pane. È scrivere codice senza bug che conta come buona programmazione. Se non avete l'energia, il tempo, la possibilità o il desiderio di afferrare tutte le innovazioni di "Metakvot", usate la lingua che conoscete bene. Le DLL non sono state abolite, inseriteci i vostri algoritmi messi a punto.

Cosa seguono i veri commercianti o quelli che vogliono diventarlo? ) L'autotrading disponibile, la principale caratteristica di MT, è sprofondata nell'oblio e si è persa tra le costanti innovazioni di innumerevoli costruzioni... Le opzioni di autotrading disponibili attraverso un approccio più serio alla programmazione, diciamo - "è". Io stesso ho solo un piccolo conto praticamente dimenticato su MT. Oggi ho passato 2 ore a riabilitare gli strumenti di MT, a quanto pare ho bisogno di 10 volte di più. Non sono sicuro di averne bisogno, forse lo farò di nuovo, ma più che altro "da vecchia memoria". In pratica, ho deciso.

 
Figar0:

L'autotrading disponibile, la caratteristica principale di MT - è sprofondato nell'oblio e si è perso tra le costanti innovazioni di innumerevoli build... Le opzioni di autotrading disponibili attraverso approcci di programmazione più seri sono, diciamo, "lì". Io stesso ho solo un piccolo conto praticamente dimenticato rimasto su MT. Oggi ho passato 2 ore a riabilitare gli strumenti di MT, a quanto pare ho bisogno di 10 volte di più. Non sono sicuro di averne bisogno, forse lo farò di nuovo, ma più che altro "da vecchia memoria". In pratica, ho deciso.

In realtà, anche ora tutto funziona, se si usano solo le vecchie funzioni. Alcune cose possono essere rese molto più facili e affidabili, per esempio, la contabilità delle lacune della storia: prima (mcl++) la possibilità di calcolare la storia con le lacune causava qualche "mal di testa" (come conseguenza della "coda" della storia che veniva caricata per prima e poi le barre mancanti venivano scritte all'interno), dovevo usare "stampelle". Tutto è molto più semplice ora. Non puoi usare nessuna caratteristica aggiuntiva e usare MKL nella sua forma precedente/migliorata, come prima. Le eccezioni sono i programmi che sono andati oltre gli array (indice calcolato in modo errato o memoria non allocata) - quelli non funzionavano garantiti e, molto probabilmente, in modo errato prima.
 
Figar0:

Ad un certo punto si è annoiato)

Di chi è la colpa se qualcuno ha un casino di codice?

Figar0:

In pratica, ho deciso.

Qualcuno sta cercando di trattenersi? Preso al lazo e trattenuto?

 
AlexeyVik:

Di chi è la colpa, allora, se qualcuno ha un casino di codice?

Cosa c'entra il codice di merda? Alcune cose fondamentali sono cambiate
 
TheXpert:
Cosa c'entra il codice di merda? Alcune cose fondamentali sono cambiate
Mi chiedo solo (uso il vecchio codice, funziona): quali cose fondamentali?