Domande su OOP in MQL5 - pagina 24

 
Alexey Volchanskiy:

Sharp è nato intorno al 2000 ed era nella sua infanzia, ma i plus regnavano, così hanno fatto un ponte di C++ a dotnet per la divulgazione. A proposito, Sharp è stato creato da sviluppatori di Delphi e C++Builder, sono stato molto sorpreso a quel tempo, quanti concetti comuni ci sono. Prendete le stesse proprietà, gli eventi.

imho, Sharp è un progetto di successo di Microsoft - non solo hanno attirato la gente sulla loro piattaforma /Net, ma hanno dato a tutti i diversi linguaggi la sintassi per .Net - si poteva scrivere in Basic!

 
Igor Makanu:

imho, Sharp è un progetto di successo di Microsoft - non solo hanno attirato la gente sulla loro piattaforma /Net, ma hanno dato tutta la sintassi del linguaggio diverso per .Net - si potrebbe scrivere in Basic!

Ma non ne sono attratto. È comodo e semplice, ma manca la spinta dei plus. Ci si allontana dal ferro da stiro.
 

Ho cercato nel forum, grazie a@fxsaber che ha postato molti esempi

aggiungere la magia all'ultimo esempio )))) Sono troppo pigro per scriverlo a mano, vedo il concetto che volevo vedere.

interface IStrategy
  {  void Algorithm()                 {Print("Это не должно запускаться!!!"); } };
//+------------------------------------------------------------------+
class CStrategy : public IStrategy
  {
protected:
   int               x;
  };
//+------------------------------------------------------------------+
#define  CLASS(NAME) class NAME: public CStrategy{\
public:              NAME()   {Print(__FUNCTION__);  x = 01;    }\
void              Algorithm() {Print(__FUNCTION__, ", x = ", x);} };
//+------------------------------------------------------------------+

CLASS( CStrategy_01 );
CLASS( CStrategy_02 );

//+------------------------------------------------------------------+
class Context
  {
private:
   IStrategy         *s;
public:
                     Context(IStrategy *_strategy)    { Print(__FUNCTION__); s = _strategy;  }
                    ~Context()                        { delete s;                            }
   void              GetStrategy()  { s.Algorithm();                       }
  };
//+------------------------------------------------------------------+
Context c1(new CStrategy_01);
Context c2(new CStrategy_02);
//+------------------------------------------------------------------+
void OnStart()
  {
   c1.GetStrategy();
   c2.GetStrategy();
  }
//+------------------------------------------------------------------+

Vladimir Simakov:
Non mi faccio risucchiare. È comodo e diretto, ma non ho la spinta che ho in più. Ti allontani dal ferro da stiro.

Non credo che tu ti sia illuso che il C++ sia più vicino all'hardware, dubito che tu possa trovare da qualche parte documenti sulla corretta codifica dei processori moderni, io ero appassionato di lettura di Pentium alla fine degli anni 90, ma poi, quando la gamma di chiavette ha cominciato a crescere rapidamente, mi sono reso conto che non so nemmeno leggere, e ora anche Windows mette driver per processori - imho, come si può per un pc... ma ahimè, ora tutto funziona in questo modo - tutto virtuale, tutto attraverso bibbie già pronte, tutto attraverso l'ottimizzazione del compilatore.... in generale, imho è un'illusione che si scrive codice molto efficace, è chiaro che se il codice è originariamente scritto attraverso un posto e mani storte, allora niente aiuterà)))

 
Alexey Volchanskiy:

Sì, è un ordine di grandezza più facile su Sharpe. E la velocità è quasi la stessa, questo senza cli i professionisti vincono di un fattore e mezzo.

Ho visto ogni sorta di test di questo tipo basati su loop nudi, ma non è niente. Nessuno si è preoccupato di pensare a quanti thread ci sono sotto CLR (beh, almeno un byte di codice deve essere compilato) e quanta memoria tutta questa roba divorerà.

Molto tempo fa ho installato cTrader, e le mie impressioni sono rimaste quelle di un lento g.... .

E in generale - perché creare un altro livello di astrazione (bytecode, macchina virtuale), quando possiamo concordare l'uniformità delle istruzioni della CPU (anche se il software binario è ben tollerabile), come un set minimo realizzato da tutti? Probabilmente il desiderio di creare una sandbox dove sono dei e indispensabili. Quanto ostinatamente hanno spinto il loro dotnet, mentre rendevano la vita difficile a coloro che volevano scrivere in plus.

ZS: Non sto parlando di cli c++, è una specie di malinteso.

 
Igor Makanu:

imho, Sharp è un progetto di successo di Microsoft - non solo hanno attirato la gente sulla loro piattaforma /Net, ma hanno dato tutta la sintassi del linguaggio diverso per .Net - si potrebbe scrivere in Basic!

Io la metterei diversamente: la gente è stata attirata via da Windows. Questo può essere soggettivo.

ZS: per le statistiche - ci sono tre volte più progetti C/C++ su github che su sharp (anno 17).

 
Vict:

ZS: per amor di statistica - ci sono tre volte più progetti C/C++ su github che su sharp (anno 17).

È una valutazione soggettiva, la qualità o piuttosto i compiti dei progetti possono essere molto piccoli... è molto tempo per speculare

Il numero di programmatori cinesi e indiani non è un fattore insignificante per valutare la situazione - ce ne sono davvero troppi e non sappiamo quali siano le tendenze del settore in questi paesi, forse sono seduti su C++ al momento

E come ho scritto sopra - la transizione tra C++ e C# e ritorno è piuttosto "indolore", Microsoft ha fatto di tutto per far correre i programmatori avanti e indietro )))) Nel 2017 ci saranno molti progetti C++, nel 2019 potrebbero esserci molti progetti C# - non si sa mai

ZS: una stima molto soggettiva... quanti progetti ci sono in python? - tutti i nuovi video di google sono esclusivamente tutte le presentazioni in python

 
Igor Makanu:

la qualità o piuttosto gli obiettivi dei progetti possono essere molto piccoli... c'è molto da pensare

Il numero di programmatori dalla Cina e dall'India non è un momento irrilevante per valutare la situazione - ce ne sono davvero tanti, non sappiamo quali siano le tendenze dell'industria in questi paesi, forse sono seduti su C++ ora

E come ho scritto sopra - la transizione tra C++ e C# e ritorno è piuttosto "indolore", Microsoft ha fatto di tutto per far correre i programmatori avanti e indietro )))) Nel 2017 ci saranno molti progetti C++, nel 2019 potrebbero esserci molti progetti C# - non si sa mai

ZS: una stima molto soggettiva... quanti progetti ci sono in python? - tutti i nuovi video di google sono esclusivamente tutte le presentazioni in python

Beh, ci sono tutti i tipi di progetti in tutte le lingue, in media allora dovrebbe esserci qualche progetto medio. Ci sono statistiche dettagliate qui https://githut.info/, ma è il 14° anno.

Non voglio usare Sharp, se non altro per ragioni ideologiche. Preferirei scriverlo in java (improbabile, però).

GitHut - Programming Languages and GitHub
GitHut - Programming Languages and GitHub
  • githut.info
GitHub provides publicly available API to interact with its huge dataset of events and interaction with the hosted repositories. GitHub Archive takes this data a step further by aggregating and storing it for public consumption. GitHub Archive dataset is also available via Google BigQuery. The quantitative data used in GitHut is collected from...
 
Igor Makanu:

la qualità o piuttosto gli obiettivi dei progetti possono essere molto piccoli... c'è molto da pensare

Il numero di programmatori dalla Cina e dall'India non è un momento irrilevante per valutare la situazione - ce ne sono davvero tanti, non sappiamo quali siano le tendenze dell'industria in questi paesi, forse sono seduti su C++ ora

E come ho scritto sopra - la transizione tra C++ e C# e ritorno è piuttosto "indolore", Microsoft ha fatto di tutto per far correre i programmatori avanti e indietro )))) Nel 2017 ci saranno molti progetti C++, nel 2019 potrebbero esserci molti progetti C# - non si sa mai

ZS: una stima molto soggettiva... quanti progetti ci sono in python? - tutti i nuovi video di google sono esclusivamente tutte le presentazioni in python

Nel 2005, ho lavorato per una società tedesca per un po'. Stavo riscrivendo una GUI per un plotter da C++ a C#. Conoscevo Sharp all'epoca, dato che avevo un po' di tutorial, quindi non ho avuto problemi con la traduzione. Ho smesso, perché mi annoiavo e ora non devo pensare - mi siedo e riscrivo.

Con Python è un mistero per me come questo linguaggio interpretato, lento e brutto sia riuscito a farsi strada fino alla cima.

 
Igor Makanu:

È una stima soggettiva, la qualità o piuttosto i compiti del progetto possono essere molto piccoli...

E come ho scritto sopra - la transizione tra C++ e C# e ritorno è piuttosto "indolore", Microsoft ha fatto di tutto per far correre i programmatori avanti e indietro ))))

Sono d'accordo con i plus su Sharp, ma inversamente, se conosci il c/c++ non puoi fare nulla... Solo i file di intestazione schiacceranno ogni desiderio di sharapista. IMHO.
 
Alexey Volchanskiy:

Con Python, è un mistero per me come questo linguaggio interpretativo, ritardato e brutto sia riuscito a farsi strada fino alla cima.

Credo che sia andata così:

1. ci sono sempre più utenti che programmatori o persone che conoscono le basi della programmazione.

2. gli interpreti sono più facili da capire per gli utenti:

a = 2
b = 5
c = a + b

e ricevi una risposta dalla macchina, ma non capisci cosa pensa, ma una volta che lo scrivi, vedi che la macchina pensa come te)))

3. abbiamo bisogno di un interprete di qualità, che non appesantisca l'utente con inutili conoscenze sui tipi e altre cose.

4. per garantire l'uso di massa del linguaggio, il software deve essere il più aperto e accessibile possibile.

La linea di fondo è che 1,2,3,4 - Python si è unito in se stesso e se c'è un esercito di utenti, ci saranno sicuramente problemi da risolvere per i programmatori che si sono uniti a loro e hanno fatto un mucchio di librerie

))))


Vladimir Simakov:
Sono d'accordo con plus su Sharp, ma nella direzione opposta, se conosci il c/c++ non puoi farlo affatto... I file di intestazione da soli schiacceranno tutto il desiderio di sharpe player. IMHO.

Hai ragione, ma nessuno passa da C# a C++ - perché? Puoi inserire una dll pronta in C++ in Sharp e usarla, inoltre è facile fare un exe-shtick in C# che conterrà la dll

Non lo so nemmeno, ho scoperto da solo il mondo di C# - non ho intenzione di smettere, è molto comodo, un sacco di manuali sul web, ancora più librerie pronte, dieci vite non saranno sufficienti per provare tutto ))))

Motivazione: