J'enseigne à partir de zéro, et j'aide aussi les nouveaux venus à rejoindre les rangs des professionnels de MQL4. - page 7

 
Dmitry Sumsky:

N'avez-vous rien de mieux à faire que de passer des heures à chercher des failles dans mon code ou suis-je un emmerdeur et voulez-vous vous venger ?

Vous êtes un homme étrange, Andrew...

A quoi sert le forum ? -- Pour s'amuser.

je prends mon thé dans une soucoupe et quelques gâteaux - je regarde le forum et peut-être que je trouverai quelque chose pour m'amuser - votre sujet est amusant (j'ai toujours aimé celui-là).

p.s. pourquoi avez-vous besoin de vous venger, et pour quelle raison ? -- p.s.2 ne soyez pas en colère contre moi - c'est drôle, votre sujet a toujours été une courbe d'apprentissage pour moi.


p.s.2 ne vous fâchez pas, j'ai supprimé mon message - peut-être était-il vraiment piquant - il n'était pas destiné à vous offenser de quelque manière que ce soit.

 
Andrey F. Zelinsky:

Alors, à quoi sert le forum ? -- pour le plaisir.

je prends une tasse de thé et des crumpets - je navigue sur le forum, je vais peut-être trouver quelque chose d'amusant - votre sujet est amusant (j'ai toujours aimé le thème de l'apprentissage).

p.s. pourquoi avez-vous besoin d'une vengeance et pour quoi faire ? - Je ne comprends pas.

De plus, Dimochka, c'est toi qui m'as attaqué en premier. Je suis purement la partie lésée.

Tu es une fille si innocente. Tu es entré dans mon berceau, tu as commencé à me dire comment vivre ma vie. Je n'ai fait que dire toute la vérité. Apparemment, la vérité t'a pris à la gorge et tu as décidé de trouver une sorte d'indice, pour en quelque sorte me contrarier. Mais plus vous fulminez, plus vous vous humiliez. Vous pouvez continuer à me provoquer en vous humiliant devant les autres. C'est un forum, un forum pour l'hilarité. D'ailleurs, il n'y a pas que vous et moi qui le lisons... )))
 
Dmitry Sumsky:
Tu es une fille si innocente. Entrer dans mon berceau, me dire comment vivre ma vie. Je n'ai dit que toute la vérité. Apparemment, la vérité t'a pris à la gorge et tu as décidé de trouver une sorte d'indice pour me contrarier. Mais plus vous fulminez, plus vous vous humiliez. Vous pouvez continuer à me provoquer en vous humiliant devant les autres. C'est un forum, un forum pour l'hilarité. D'ailleurs, il n'y a pas que vous et moi qui le lisons... )))

Je t'ai écrit :

Andrey F. Zelinsky:

p.s.2 ne vous fâchez pas, j'ai supprimé mon message - peut-être que j'étais facétieux - je ne voulais pas vous offenser de quelque façon que ce soit.

-- et vous continuez à attaquer -- je n'aurais probablement pas dû supprimer mon message.

 
Andrey F. Zelinsky:

Vous... Je vous ai écrit :

-- et vous continuez à attaquer -- j'ai dû supprimer mon message pour rien.

Tu as dû l'effacer pendant que j'écrivais. Eh bien, je suis désolé... )))
 
Dmitry Sumsky:

Ce fil de discussion est destiné à aider ceux qui essaient d'apprendre mais trouvent que c'est long et pénible. J'ai juste offert mon aide pour un apprentissage plus rapide du langage, plus une compréhension du fonctionnement de la mémoire de l'ordinateur, afin de pouvoir programmer le meilleur code d'un coup, au lieu de le faire "n'importe comment", et d'essayer ensuite de l'optimiser... )))

Je pense que de telles constructions ne sont pas très optimales :

for(int i=0; i+1<iBars(NULL,Sarpperiod); i++)

Il serait préférable d'affecter le résultat de la fonction iBars() à une variable avant l'opérateur for, car la vérité de l'"Expression2" est vérifiée après chaque itération, et chaque fois que la fonction est appelée, cela prendra plus de temps que de le comparer à une variable.

 
Vasiliy Pushkaryov:

À mon avis, de telles conceptions ne sont pas très optimales :

for(int i=0; i+1<iBars(NULL,Sarpperiod); i++)

Il serait préférable d'affecter le résultat de la fonction iBars() à une variable avant l'instruction for, car la vérité de l'"Expression2" est vérifiée après chaque itération, et chaque fois que la fonction est appelée, cela prendra plus de temps que de la comparer avec la variable.

Je suis d'accord, c'est surtout ce que je fais. Et si cela ne fait aucune différence de savoir où commencer la passe, alors j'écris for(int i=iBars(NULL,SarPeriod)-1 ; i>=0 ; i--). Ceci est optimal pour le processus et moins de caractères dans la chaîne. Dans ce code, je ne visais pas une optimisation à 100% - je devais faire moins de chaînes, donc je l'ai écrit de cette façon... )))

Ce qui "mange" le plus le processus, c'est iCustom, etc. Je devrais écrire les algorithmes de tous les indicateurs que j'utilise dans le Conseiller Expert lui-même pour le faire "voler", mais je n'ai pas eu une telle tâche...

 
Dmitry Sumsky:
Je suis d'accord, c'est en gros ce que je fais. Et si cela ne fait aucune différence de savoir où commencer la passe, alors j'écris for(int i=iBars(NULL,SarPeriod)-1 ; i>=0 ; i--). Ceci est optimal pour le processus et moins de caractères dans la chaîne. Dans ce code, je ne visais pas une optimisation à 100% - je devais faire moins de chaînes, donc je l'ai écrit de cette façon... )))
Je vois. Je suis calme pour vos étudiants alors ;)
 
Vasiliy Pushkaryov:

À mon avis, de telles conceptions ne sont pas très optimales :

for(int i=0; i+1<iBars(NULL,Sarpperiod); i++)

Il serait préférable d'affecter le résultat de iBars() à une variable avant l'instruction for, car la vérité de l'"Expression2" est testée après chaque itération, et chaque fois que la fonction est appelée, elle prendra plus de temps que la comparaison avec la variable.

Ça n'a pas vraiment d'importance. Je me souviens que le livre "The Art of Programming" de Knuth disait quelque chose comme ça - un bon programmeur doit.. :

1. être capable de raccourcir ou d'optimiser tout programme,

2. ne jamais le faire.

 
Yuriy Asaulenko:

Ce n'est pas vraiment si important. Je me souviens que The Art of Programming de Knuth disait quelque chose comme ça : un bon programmeur doit.. :

1. être capable de raccourcir ou d'optimiser tout programme,

2. ne jamais le faire.

Je préfère cette approche.

Lorsque j'écris mes fonctions, elles sont longues et complexes. Ils contiennent des retraits à plusieurs niveaux et des boucles imbriquées. Ils ont de longues listes d'arguments. Les noms sont choisis de manière chaotique et il y a des doublons dans le code. Mais j'ai aussi une suite de tests unitaires pour toutes ces lignes maladroites jusqu'à la dernière.

Je commence donc à "peigner" et à affiner mon code, en mettant en évidence les nouvelles fonctions, en changeant les noms et en éliminant les doublons. Je raccourcis les méthodes et les réorganise. Parfois, je dois casser des classes entières, mais je m'assure que tous les tests se déroulent avec succès.

Au final, je me retrouve avec des fonctions construites selon les règles énoncées dans cette catégorie. Je ne les écris pas de cette façon dès le départ. Et je pense que personne ne peut le faire du tout.

Robert Martin, Clean Code. Création, analyse et refactoring.

Certaines personnes sont capables et le font, d'autres sont capables et ne le font pas, tout dépend de la manière dont on le fait.

 
Vasiliy Pushkaryov:

J'aime mieux cette approche

Certains le peuvent et le font, d'autres le peuvent et ne le font pas, tout dépend de la manière dont on s'y prend.

Ces approches ne s'excluent pas mutuellement. Ils concernent des choses différentes.