
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Par "mise en œuvre normale", vous entendez peut-être la mise en œuvre des modèles.
A quoi cela ressemble-t-il ? Qu'entendez-vous par motifs ? Une façon particulière et tordue d'appuyer sur les touches avec les doigts pendant la programmation ?
Les modèles, hérités de l'ancienne méthode de substitution des macros à la compilation, ont en fait perdu depuis longtemps leur pertinence pour la programmation orientée objet.
Dans les langages modernes, ces tâches sont résolues par des outils d'exécution, par exemple, les génériques en C#, la reconnaissance dynamique des types RTTI et l'utilisation de types variants.
Il y a bien sûr encore des vieux briscards qui aiment les modèles, mais IMHO, en tant que programmeur, c'est un signe qu'il est temps de prendre sa retraite.
Les modèles, hérités de la méthode archaïque de substitution des macros à la compilation, ont en fait perdu depuis longtemps leur pertinence pour la programmation orientée objet.
Dans les langages modernes, ces tâches sont résolues par des outils d'exécution, par exemple, les génériques en C#, la reconnaissance dynamique des types RTTI et l'application de variantes de types.
Bien sûr, il y a encore des vieux briscards qui aiment les modèles, mais en tant que programmeur, c'est un signe qu'il est temps de prendre sa retraite.
Il est amusant de lire que les modèles se sont depuis longtemps éloignés des substitutions de macros et qu'ils existent avec succès en tant que paradigme séparé.
Les génériques en C# sont juste des modèles très réduits et, en fait, pas au moment de l'exécution mais au moment de la compilation, ce qui fait que leur vitesse est plus élevée).
Mais le RTTI et les types variants suggèrent de mauvaises pensées....
____________________
D'accord, tout cela est très bien, bien sûr. Mais dans MQL5, il n'y a que des fonctions template, il n'y a pas de classes (y en aura-t-il ?). Ainsi, les listes sur les modèles ne sont pas réalisables avec les outils actuels.
Il est amusant de lire que les modèles se sont depuis longtemps éloignés des substitutions de macros et qu'ils existent avec succès en tant que paradigme distinct.
Les génériques en C# ne sont que des modèles très réduits, et en général, ce n'est pas le temps d'exécution, mais le temps de compilation, qui fait que la vitesse de leur utilisation est plus élevée ).
Mais le RTTI et les types de variantes suggèrent de mauvaises pensées....
____________________
D'accord, tout cela est très bien, bien sûr. Mais dans MQL5, il n'y a que des fonctions de modèle, il n'y a pas de classes (y en aura-t-il ?). Ainsi, les listes sur les modèles ne sont pas réalisables avec les outils actuels.
Vous êtes heureux parce que les paradigmes fossiles sont vos souvenirs chaleureux du siècle dernier et semblent constituer un bagage de connaissances exhaustif.
Mais il n'est pas nécessaire d'éclipser les approches modernes pour cette raison, car les MQ supposeront que leurs clients sont nostalgiques de leur grand-père Macro Assembler et ANSI C et ignoreront les suggestions d'amélioration de MQL5.
.
Puisqu'il n'y a pas de modèles, vous pouvez le faire avec des macros, quelqu'un je crois a même écrit un article sur ce sujet (macros au lieu de modèles) + analogie des algorithmes en stl également avec des macros. Mais je pense que tout cela devrait être dans la bibliothèque standard sur les modèles, c'est une erreur d'écrire ses propres conteneurs (utile seulement à des fins éducatives), c'est plus facile à faire avec un tableau.
Mise à jour : pas besoin d'algorithmes sur les macros, les modèles de fonctions sont disponibles. Je n'aime pas l'insertion virtuelle/... il est préférable d'utiliser des assertions de vérification de type en mode débogage.
Bonjour,
J'ai essayé de compiler test_MQL5_List.mq5 , j'ai obtenu les erreurs suivantes :
'm_head' - membre de l'objet constant ne peut être modifié CiSingleList.mqh 504 9
'm_tail' - membre de l'objet constant ne peut être modifié CiSingleList.mqh 505 9
'm_size' - membre de l'objet constant ne peut être modifié CiSingleList.mqh 496 9