Questions sur la POO dans MQL5 - page 24

 
Alexey Volchanskiy:

Sharp est né aux alentours de l'an 2000 et n'en était qu'à ses balbutiements, mais les plus ont régné, alors ils ont fait un pont entre C++ et dotnet pour le populariser. D'ailleurs, Sharp a été créé par des développeurs Delphi et C++Builder, j'ai été très surpris à l'époque, du nombre de concepts communs qu'il y a. Prenez les mêmes propriétés, les mêmes événements.

Selon moi, Sharp est un projet très réussi de la part de Microsoft. Non seulement ils ont attiré les gens vers leur plate-forme /Net, mais ils ont aussi donné à tous les langages différents une syntaxe pour .Net - vous pouviez l'écrire en Basic !

 
Igor Makanu:

Selon moi, Sharpe est un projet très réussi de Microsoft. Non seulement ils ont attiré les gens vers leur plate-forme /Net, mais ils ont aussi donné à tous les diverses syntaxes de langage pour .Net - vous pouviez l'écrire en Basic !

Mais je ne suis pas attiré par elle. C'est pratique et simple, mais il lui manque le dynamisme des plus. Tu t'éloignes du fer.
 

J'ai cherché sur le forum, grâce à@fxsaber qui a posté de nombreux exemples

ajouter de la magie au dernier exemple )))) Je suis trop paresseux pour l'écrire à la main, je vois le concept que je voulais voir.

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:
Je ne me fais pas aspirer. C'est pratique et direct, mais je n'ai pas le dynamisme que j'ai dans les plus. Tu t'éloignes du fer.

Je ne pense pas que vous ayez l'illusion que le C++ est plus proche du matériel, je doute que vous puissiez trouver quelque part des docs sur le codage correct pour les processeurs modernes, j'aimais bien lire sur les Pentium à la fin des années 90, mais ensuite, quand la gamme de sticks a commencé à croître rapidement, j'ai réalisé que je ne pouvais même pas lire, et maintenant, même Windows met des pilotes pour les processeurs - imho, comment peut-on pour un pc ... mais hélas, tout fonctionne de cette façon maintenant - tout est virtuel, grâce à des binaires prêts à l'emploi, grâce à l'optimisation du compilateur..... en général, imho c'est une illusion que vous écrivez du code très efficace, il est clair que si le code est écrit à l'origine par un endroit et des mains croches, alors rien ne va aider)))

 
Alexey Volchanskiy:

Oui, c'est plus facile sur le sharpe par un ordre de grandeur. Et la vitesse est presque la même, c'est sans compter que les pros gagnent d'un facteur et demi.

J'ai vu toutes sortes de tests de ce genre basés sur des boucles nues, mais ça n'a rien à voir. Personne n'a pris la peine de penser au nombre de threads qu'il y a sous CLR (enfin, au moins un octet de code doit être compilé) et à la quantité de mémoire que tout cela va engloutir.

Il y a longtemps, j'ai installé cTrader, et mes impressions sont restées celles d'un g.... lent. .

Et en général - pourquoi créer une autre couche d'abstraction (bytecode, machine virtuelle), quand nous pouvons nous mettre d'accord sur l'uniformité des instructions du CPU (bien que le logiciel binaire soit bien tolérable), comme un ensemble minimum réalisé par tous ? Probablement le désir de créer un bac à sable où ils sont des dieux et indispensables. Avec quelle obstination ils ont poussé leur dotnet, tout en rendant la vie difficile à ceux qui souhaitent écrire en plus.

ZS : Je ne parle pas de cli c++, c'est une sorte de malentendu.

 
Igor Makanu:

Selon moi, Sharp est un projet très réussi de la part de Microsoft. Non seulement ils ont attiré les gens vers leur plateforme /Net, mais ils ont aussi donné une syntaxe de langage diversifiée pour .Net - vous pouviez l'écrire en Basic !

Je le dirais autrement - les gens ont été attirés loin de Windows. Cela peut être subjectif.

ZS : pour les statistiques - il y a trois fois plus de projets C/C++ sur github que sur sharp (année 17).

 
Vict:

ZS : pour les statistiques, il y a trois fois plus de projets C/C++ sur github que sur sharp (année 17).

C'est une évaluation subjective, la qualité ou plutôt les tâches des projets peuvent être très petites... c'est un long moment pour spéculer

Le nombre de programmeurs chinois et indiens n'est pas un facteur négligeable pour évaluer la situation - ils sont vraiment trop nombreux et nous ne savons pas quelles sont les tendances de l'industrie dans ces pays, peut-être qu'ils s'assoient sur le C++ pour le moment.

Et comme je l'ai écrit plus haut - la transition entre C++ et C# et inversement est plutôt "indolore", Microsoft a tout fait pour que les programmeurs se précipitent dans les deux sens )))). En 2017, il y aura beaucoup de projets C++, en 2019, il y aura peut-être beaucoup de projets C# - on ne sait jamais.

ZS : une estimation très subjective... combien de projets y a-t-il en python ? - toutes les nouvelles vidéos google sont exclusivement toutes les présentations en python

 
Igor Makanu:

la qualité ou plutôt les objectifs des projets peuvent être très faibles... il y a beaucoup de choses à penser

Le nombre de programmeurs de Chine et d'Inde n'est pas un moment sans importance pour évaluer la situation - ils sont vraiment très nombreux, nous ne savons pas quelles sont les tendances de l'industrie dans ces pays, peut-être qu'ils s'assoient sur le C++ maintenant.

Et comme je l'ai écrit plus haut - la transition entre C++ et C# et inversement est plutôt "indolore", Microsoft a tout fait pour que les programmeurs fassent l'aller-retour )))). En 2017, il y aura beaucoup de projets C++, en 2019, il y aura peut-être beaucoup de projets C# - on ne sait jamais.

ZS : une estimation très subjective... combien de projets y a-t-il en python ? - toutes les nouvelles vidéos google sont exclusivement toutes les présentations en python

Eh bien, il y a toutes sortes de projets dans toutes les langues, en moyenne, il devrait donc y avoir un projet moyen. Il existe des statistiques détaillées ici https://githut.info/, mais c'est la 14ème année.

Je ne veux pas utiliser Sharp, ne serait-ce que pour des raisons idéologiques. Je préférerais l'écrire en java (peu probable, cependant).

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é ou plutôt les objectifs des projets peuvent être très faibles... il y a beaucoup de choses à penser

Le nombre de programmeurs de Chine et d'Inde n'est pas un moment sans importance pour évaluer la situation - ils sont vraiment très nombreux, nous ne savons pas quelles sont les tendances de l'industrie dans ces pays, peut-être qu'ils s'assoient sur le C++ maintenant.

Et comme je l'ai écrit plus haut - la transition entre C++ et C# et inversement est plutôt "indolore", Microsoft a tout fait pour que les programmeurs fassent l'aller-retour )))) . En 2017, il y aura beaucoup de projets C++, en 2019, il y aura peut-être beaucoup de projets C# - on ne sait jamais...

ZS : une estimation très subjective... combien de projets y a-t-il en python ? - toutes les nouvelles vidéos de google sont exclusivement toutes des présentations en python

En 2005, j'ai travaillé pour une société allemande pendant un certain temps. Je réécrivais une interface graphique pour un traceur de C++ à C#. Je connaissais Sharp à l'époque, car j'avais un certain tutorat, donc je n'ai eu aucun problème avec la traduction. J'ai arrêté, parce que je m'ennuyais et maintenant je n'ai plus besoin de penser - je m'assois et je réécris.

En ce qui concerne Python, je ne comprends pas comment ce langage interprété, lent et laid a pu se hisser au sommet.

 
Igor Makanu:

C'est une estimation subjective, la qualité ou plutôt les tâches du projet peuvent être très petites...

Et comme je l'ai écrit plus haut - la transition entre C++ et C# et inversement est plutôt "indolore", Microsoft a tout fait pour que les programmeurs se pressent dans les deux sens )))).

Je suis d'accord avec les plus sur Sharp, mais inversement, si vous connaissez c/c++ vous ne pouvez rien faire... Rien que les fichiers d'en-tête écraseront tout désir de sharapisme. IMHO.
 
Alexey Volchanskiy:

En ce qui concerne Python, je ne sais pas comment ce langage interprétatif, débile et laid a pu se frayer un chemin jusqu'au sommet.

Je pense que ça s'est passé comme ça :

1. il y a toujours beaucoup plus d'utilisateurs que de programmeurs ou de personnes connaissant les bases de la programmation.

2. les interprètes sont plus faciles à comprendre pour les utilisateurs :

a = 2
b = 5
c = a + b

et obtenir une réponse de la machine, mais vous ne comprenez pas ce qu'elle pense, mais une fois que vous l'écrivez, vous voyez que la machine pense comme vous))))

3. nous avons besoin d'un interprète de qualité, qui n'encombrera pas l'utilisateur de connaissances inutiles sur les types et autres.

4. afin de rendre la langue accessible aux masses, le logiciel doit être aussi ouvert et accessible que possible.

L'essentiel est que 1,2,3,4 - Python s'est uni en lui-même et s'il y a une armée d'utilisateurs, il y aura certainement des problèmes à résoudre par les programmeurs qui se sont joints à eux et qui ont créé un tas de bibliothèques

))))


Vladimir Simakov:
Je suis d'accord avec pluses sur Sharp, mais dans le sens inverse, si vous connaissez c/c++ vous ne pouvez pas... Les fichiers d'en-tête à eux seuls écraseront toute velléité de joueur de sharpe. IMHO.

Vous avez raison, mais personne ne passe du C# au C++ - pourquoi ? Vous pouvez brancher une dll prête en C++ dans Sharp et l'utiliser, de plus il est facile de faire un exe-shtick en C# qui contiendra la dll.

Je ne sais même pas, j'ai découvert le monde du C# par moi-même - je ne vais pas arrêter, c'est très confortable, beaucoup de manuels sur le web, encore plus de bibliothèques prêtes à l'emploi, dix vies ne suffiront pas à tout essayer )))).

Raison: