J'ai bien aimé l'article, même si je n'ai rien compris.
"C'est pourquoi la principale tâche résolue par les modèles reste la réduction de la quantité de code tapé au clavier par un programmeur."
Pourquoi s'embêter avec des modèles quand on peut se passer du copier-coller ? Et la quantité de code tapé ne vous dérange pas du tout - bon, il y aura 300 lignes de code au lieu de 100 - alors qu'est-ce qui ne va pas ? L'essentiel est que cela fonctionne et que le débogage ne soit pas trop contraignant.
Et le code sera plus transparent sans les modèles.
J'ai bien aimé l'article, même si je n'ai rien compris.
"C'est pourquoi la principale tâche résolue par les modèles reste la réduction de la quantité de code tapé au clavier par un programmeur."
Pourquoi s'embêter avec des modèles quand on peut se passer du copier-coller ? Et la quantité de code tapé ne vous dérange pas du tout - bon, il y aura 300 lignes de code au lieu de 100 - alors qu'est-ce qui ne va pas ? L'essentiel est que cela fonctionne et que le débogage ne soit pas trop contraignant.
Et le code sera plus transparent sans les modèles.
300 :)
Que diriez-vous de 10-20K (et cela en tenant compte de la division en modules)... ? ?
300 :)
Et 10-20K pour vous (en tenant compte de la répartition en modules).... ?
C'est 20 000 ? Bon sang, comment fait-on pour creuser là-dedans ? Peut-être que l'algorithme n'a pas été finalisé ? De telles tailles auraient dû être placées dans les bibliothèques il y a longtemps. Qu'est-ce que vous programmez ? 20 000 lignes, c'est 10 programmeurs pour 6 mois de travail.
Pour ce qui est des bibliothèques, je vous l'ai dit - en tenant compte de la modularité.
Pour ce qui est des 20 000, on a vu plus. Par exemple, les modzli pour 1C 7.7 font 50K lignes (et ce n'est pas leur propre code, mais celui de quelqu'un d'autre).
Pardonnez-moi si je ne comprends pas l'essence de la tâche. En C++, il y a une sauvegarde des enregistrements du code source, ici il n'y en a pas. Les modèles de fonction en C++ montrent où l'on peut vraiment économiser de l'argent. "L'idée clé est d'économiser le code source.
Et générer une quantité manifestement excessive de code source pour rendre difficile le travail ultérieur, eh bien, non, s'il vous plaît.
Avez-vous besoin de la même fonction pour différents types de données ? MQL5 dispose de la surcharge des méthodes. Je ne doute pas que vous en ayez connaissance. D'autant plus que changer le type de données d'entrée nécessite souvent de changer l'implémentation.
Et à propos de ceci :
>>Pour le débogage, bien sûr, vous devrez déplacer le fichier dans le répertoire du fichier appelé ou dans le répertoire Include. C'est exactement l'inconvénient du débogage dont je parlais plus haut lorsque j'ai mentionné les inconvénients des pseudo-temples.
Vous n'avez pas besoin de déplacer quoi que ce soit manuellement.
#property copyright "Copyright 2010, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'expert| //+------------------------------------------------------------------+ void gena() { string filename="code.mqh"; int handle=FileOpen(filename,FILE_WRITE|FILE_UNICODE); //-- génération de code arbitraire string st=TimeToString(TimeLocal(),TIME_DATE|TIME_MINUTES|TIME_SECONDS); string code="MessageBox(\"Hello World ! Maintenant : "+st+"\");\r\n"; //------------------------------ FileWriteString(handle,code); FileClose(handle); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnInit() { //--- gena(); #include "../Files/code.mqh"; //inclure le code généré //--- return(0); }
L'exemple est primitif. Les inkludes peuvent être insérés à l'intérieur de fonctions. Et tout le code du fichier inclus agit dans le champ de visibilité de l'endroit où il a été inséré. La seule chose est que vous devrez créer un fichier code.mqh vide dans Files pour empêcher le compilateur de jurer. Lors de la première exécution, le code sera créé, et lors de la deuxième exécution, il inclura le morceau généré.
Nikolai, voici une question. Avez-vous une fonction qui évalue une chaîne de caractères ? Par exemple :
J'ai besoin d'une fonction void eval(str), avec le résultat a=1.5.
L'article est bon, merci !
Je comprends que la question ne porte pas sur l'évaluation, mais sur l'analyse syntaxique. L'analyse syntaxique est très polyvalente.
Vous pouvez écrire différentes règles. Tout dépend de ce que vous voulez obtenir.
Par exemple : comment l'analyseur devrait-il se comporter dans de tels exemples ?
"double a=1.5;" "double a =1.5;" "double a = 1.5;" "double a=1.5,b=2.5;" "double a =1.5,b =2.5;" "double a = 1.5,b = 2.5;" "double a = 1.5 , b = 2.5 ;"vous savez. Je ne peux que vous recommander d'étudier la fonctionnalité de la section des fonctions de chaîne de caractères sur des exemples simples. Si vous êtes en mesure d'utiliser des fonctions de mémoire, vous pourrez planifier votre développement en fonction des possibilités de la fonctionnalité. Sans penser à ce que vous pouvez ou ne pouvez pas faire. En connaissant les possibilités de la fonctionnalité, vous aurez une idée claire de l'algorithme le plus approprié pour résoudre votre tâche.
Je comprends donc que la question ne porte pas sur l'évaluation, mais sur l'analyse syntaxique. L'analyse syntaxique est très polyvalente.
Vous pouvez avoir différentes règles. Tout dépend de ce que vous voulez obtenir.
Par exemple : comment l'analyseur doit se comporter dans de tels exemples.
Vous le savez. Je ne peux que vous recommander d'étudier la fonctionnalité de la section des fonctions de chaîne de caractères sur des exemples simples. Si vous êtes en mesure d'utiliser les fonctions de mémoire, vous pourrez planifier votre développement en fonction des possibilités de la fonctionnalité. Sans penser à ce que vous pouvez ou ne pouvez pas faire. En connaissant les capacités de la fonctionnalité, vous aurez une idée claire de l'algorithme le plus approprié pour résoudre votre tâche.Merci beaucoup pour votre réponse. Je vais étudier la question
- www.mql5.com
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Utilisation de Pseudo-Modèles comme Alternative aux Modèles C++ a été publié :
L'article décrit une façon de programmer sans utiliser de modèles mais en gardant le style de programmation iherenet pour eux. Il explique l’implémentation de modèles à l'aide de méthodes personnalisées et comporte un script prêt à l'emploi pour créer un code sur la base de modèles indiqués.
Tout d'abord, mettons en marche le script en spécifiant tous les paramètres requis. Dans la fenêtre qui apparaît, indiquez le nom du fichier "Example template".
Remplissez les champs des types de données personnalisés en utilisant le ';' séparateur.
Dès que le bouton "OK" est appuyé, le répertoire Templates est créé ; il comporte le fichier de pré-modèle "Example templat.mqh".
Auteur : Nikolay Demko