Au revoir le robot - bonjour le marasme - page 12

 
simpleton:

Au fait, à propos de l'expérience de gestion. Il y a 5 ans, nous nous sommes disputés sur le forum mql5 au sujet des perspectives de MT5, j'ai dit alors que le temps nous le dira. Cinq ans ont passé et nous constatons que la communauté a rejeté MT5.

Vous avez un manque d'information. Nous ne faisons jamais de publicité pour notre base de clients et nos mises en œuvre.


Je ne traduis pas, les principes généraux, la théorie, - pas pour la théorie elle-même, mais pour l'application dans la pratique. Vous ne trouverez pas de "défauts" aussi graves dans les mêmes compilateurs C/C++.

Et ont trouvé et même signalé à des auteurs à leur sujet.


Si vous dites que dans ce cas "une méthode de classe statique n'a pas le droit d'accéder au contenu de la classe", alors pourquoi dans le cas de la création d'un objet dynamique a-t-elle déjà ce droit ?

Je disais "surprotection, réparons-la". En théorie, les conditions semblent simples, mais en pratique, les implémentations statiques et dynamiques fonctionnent différemment, ce qui entraîne des divergences.


Qu'en est-il du fait qu'une implémentation non statique se comporte exactement de la même manière ?

Même chose, la règle "privé veut dire privé" a pris le dessus sur la nuance "pour les concepteurs/développeurs nous faisons une exception". nous allons corriger cela.


S'il y a des erreurs dans la mise en œuvre de la langue, eh bien, oui, il y a des erreurs. Vous parlez de contrôle total de la qualité - débarrassez-vous donc des erreurs d'implémentation dans le compilateur MQL4++ en pratique, de sorte qu'il soit presque aussi difficile de trouver des erreurs que dans les compilateurs C++, puisque vous avez un tel contrôle. Je persiste à croire qu'un analyseur syntaxique ne permettra pas de se débarrasser d'erreurs comme celles que j'ai démontrées.

C'est exact, ce sont des erreurs dans le compilateur que nous avons écrit nous-mêmes à partir de zéro. C'est donc la façon habituelle de collecter les râteaux.

Le contrôle total de la qualité est une approche systématique du travail sur les bogues et un objectif clair pour les trouver. C'est exactement ce que nous faisons. Vous, en revanche, déclarez que vous êtes contre la coercition et que vous ne voulez pas de contrôle strict par des moyens techniques.



Il ne s'agit pas d'aimer ou de ne pas aimer. Il existe un outil. Pourquoi devrais-je refuser d'utiliser toutes ses possibilités ?

Dans ce cas, il ne s'agit même pas de "j'aime ça". C'est Myers, d'ailleurs, qui l'aime tant. Et pour une raison quelconque, personne n'essaie de l'accuser d'essayer de "faire délibérément trébucher" les compilateurs C++.

Nous avons une bonne explication - "ce n'est pas un langage C++, mais un langage spécialisé MQL4/MQL5. Nous ne sommes donc pas obligés de tout soutenir". Mais dans tous les cas, le comportement sera réduit autant que possible au C/C++ familier.


Ce n'est pas une tâche facile qui ne peut être résolue d'emblée. Vous devez faire des efforts, et pas des moindres. La grande majorité des utilisateurs de MQL ne sont pas des programmeurs. Et cela doit être pris en compte dans la conception de la langue. Mais la tâche peut être résolue, j'en suis sûr.

Il suffirait d'ajouter quelques structures à l'ancien MQL4 et de nettoyer certaines choses comme les priorités des opérations, comme cela a été fait pour MQL4++ et ce serait un compromis raisonnable. Le succès de MT4 est dû en grande partie au manque d'"intelligence" du langage. Ce n'est pas le cas aujourd'hui. Et il y a beaucoup plus d'erreurs dans l'implémentation du compilateur car MQL4++ est beaucoup plus complexe que l'ancien MQL4 et l'équipe de développement n'a guère changé.

Ici, je suis d'accord avec vous, mais je pense que c'est surtout parce que les concurrents font quelque chose qu'ils ne comprennent pas.

Nous avons réécrit 5 plateformes de trading à partir de zéro 5 fois au cours des 14 dernières années.

C'est une meilleure façon de créer quelque chose de vraiment cool que de charger le vieil âne avec des briques planantes. Ainsi, la sortie de MT5 et le nouveau MQL5 nous ont donné un énorme avenir pour les 10 années à venir.

Mais ceux qui s'assoient et empilent les vieux projets en se disant "l'oiseau dans la main, l'essentiel est que je ne sois pas licencié si j'en lance un nouveau et que j'échoue", perdent le respect de la direction, sont considérés comme impuissants et quittent lentement la scène.

 
Renat:
Vous avez un manque d'information. Nous ne faisons jamais de publicité pour notre clientèle et notre mise en œuvre.

Je me fie aux informations publiques et au support de la version précédente, c'est-à-dire MT4.

Lorsque MT4 est sorti, MT3 a cessé d'être pris en charge et proposé assez rapidement - tout le monde est passé à MT4. Cela ne s'est pas produit pour la paire MT4 - MT5, même si beaucoup de temps s'est écoulé. Et il y a toujours une nette préférence pour MT4.

Vous avez même effectué un portage de MT5 à MT4, y compris le compilateur. Avez-vous porté quelque chose de MT4 à MT3, 4 ans après sa sortie ?

Renat:
Et ils l'ont fait et les ont même signalés aux auteurs.

Mais il y a une différence : il est probablement des centaines, voire des milliers de fois plus difficile de trouver une erreur dans les compilateurs C/C++ modernes que dans MQL4++.

Renat:

J'avais l'habitude de dire "surprotégeons, réparons". En théorie, les conditions semblent simples, mais en pratique, les implémentations statiques et dynamiques fonctionnent différemment, ce qui entraîne des divergences.

La même chose - la règle "private means private" a pris le pas sur la règle "make an exception for constructor/destructor". Nous allons corriger cela.

C'est exact, ce sont des bugs/inconsistances dans le compilateur que nous avons écrit de toutes pièces nous-mêmes. C'est donc la façon habituelle de ramasser les râteaux.

Le contrôle total de la qualité est une approche systématique du travail sur les bogues et un objectif clair pour les trouver. C'est exactement ce que nous faisons.

Il suffit d'appliquer les tests de régression habituels, qui ne nécessitent même pas de "moteur" spécial. Il existe un contrôle d'accès dans les classes/structures du langage - écrivez des tests uniques pour celui-ci sous la forme de programmes MQL compilables. Certaines devraient compiler avec succès, d'autres devraient compiler avec une certaine erreur. C'est le contrôle total de la qualité dans cet endroit particulier. C'est vrai, les tests qui couvriront toutes les fonctionnalités du contrôle d'accès doivent être écrits en premier...

Renat:
Par contre, vous dites que vous êtes contre la coercition et que vous ne voulez pas de contrôle strict par des moyens techniques.

Ce n'est pas le contraire. Le compilateur MQL pour les programmes MQL pourrait être conçu pour inclure par défaut des avertissements et ce que certains compilateurs C++ appellent des remarques. Mais je "déclare" seulement qu'au moins les remarques devraient être désactivées. Dans le compilateur MQL pour les programmes MQL. Et maintenant, rien ne peut être désactivé dans ce sens dans le compilateur MQL4++.

Il y a un manque de contrôle de la qualité lors de la mise en œuvre, en particulier, du compilateur MQL, puisque les erreurs dans celui-ci sont si facilement détectées. Qu'entendez-vous par contrôle strict de la qualité des programmes MQL ?

Renat:
Nous avons une bonne explication - "ce n'est pas un langage C++, mais un langage spécialisé MQL4/MQL5. Par conséquent, nous ne sommes pas obligés de les soutenir tous". Mais dans tous les cas, le comportement sera réduit autant que possible au C/C++ familier.

Super. Vous ne soutenez pas tout. Mais ce qui est soutenu ne doit pas contenir autant d'erreurs dans les constructions de base les plus simples.

Prenez-vous en charge le contrôle d'accès aux membres des classes/structures? Prendre en charge au moins tous les cas de base dans les constructions de base les plus simples, sans erreur.

Prenez le même contrôle d'accès - dans les constructions de base les plus simples :

/******************************************************************************/
class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  B b;
}

Ceci compile sans erreurs :

'3.mq4' 3.mq4   1       1
0 error(s), 0 warning(s)                1       1

Cependant, nous constatons que ce code ne se compile pas en C++ pour deux raisons :

$ clang -c 3.cpp
3.cpp:10:3: error: unknown type name 'B'
  B b;
  ^
1 error generated.

La classe B est définie à l'intérieur de la classe A, elle doit donc être référencée dans OnStart() comme A::B :

class A {
private:
  class B { };
};

/******************************************************************************/
void OnStart() {
  A a;
  A::B b;
}

Mais ce n'est pas tout - le code modifié ne compile toujours pas avec le compilateur C++ :

$ clang -c 3.cpp
3.cpp:10:6: error: 'B' is a private member of 'A'
  A::B b;
     ^
3.cpp:4:9: note: declared private here
  class B { };
        ^
1 error generated.

Pour une raison quelconque, le contrôle d'accès dans MQL4++ fonctionne généralement pour les méthodes et les données - membres de classe, mais pas pour les types.

Lorsque vous spécifiez la portée de la classe B comme A::B, le compilateur MQL4++ génère les erreurs suivantes :

'3.mq4' 3.mq4   1       1
'B' - struct member undefined   3.mq4   12      6
'b' - undeclared identifier     3.mq4   12      8
'b' - some operator expected    3.mq4   12      8
expression has no effect        3.mq4   12      6
3 error(s), 1 warning(s)                4       2

Pourquoi ce "membre de structure non défini" ?

Encore une fois, les compilateurs C++ n'ont pas non plus de problèmes avec les types à l'intérieur des classes. Mais le compilateur MQL4++ le fait.

Ces erreurs ont été trouvées par accident en essayant d'implémenter le singleton Myers. Certaines des erreurs ont été trouvées par moi, d'autres par d'autres participants à la discussion. Il montre à quel point il est facile de tomber sur des erreurs d'implémentation du compilateur lorsqu'on programme en MQL4++. Et il n'est pas nécessaire de chercher délibérément des erreurs pour tomber dessus, il suffit d'essayer de résoudre la tâche.

Veuillez noter que ce sont toutes des erreurs critiques pour une utilisation sérieuse de MQL4++.

Manifestement, il n'existe pas de tests de régression du type de ceux que j'ai mentionnés ci-dessus, au moins pour vérifier le contrôle d'accès pour les tests du compilateur MQL4++. Sinon, tout aurait déjà été détecté et corrigé.

Renat:
Nous avons réécrit 5 plateformes de trading à partir de zéro 5 fois au cours des 14 dernières années.

C'est une meilleure façon de créer quelque chose de vraiment cool que de charger le vieil âne avec des briques volantes. C'est pourquoi la sortie de MT5 et le nouveau MQL5 nous ont donné un énorme avenir pour les 10 années à venir.

Mais ceux qui s'assoient et martèlent un vieux projet en pensant "laisse l'oiseau dans la main, l'essentiel est de ne pas être licencié si je commence un nouveau projet et que j'échoue" perdent le respect de la direction, ils sont considérés comme impuissants et quittent lentement la scène.

Je suis d'accord pour dire qu'une action proactive avec un type de développement innovant est la composante la plus importante, mais ce n'est pas la seule. Et vous pouvez gâcher un baril de miel avec une mouche dans la pommade.

L'un de ces aspects est le manque de qualité. La raison de créer quoi que ce soit dans MQL est perdue à cause de cela.

 

Je sur l'ESS2, peut-être pas dans le thème, mais aussi avec plaisir, quelque chose écouté.

Je dois changer un des ordinateurs, pas tous, mais ça détourne du sujet, pas pour le développement, pas pour le commerce, sauf pour lire le forum.

 
MT5 Super ! C'est magique de construire des pyramides dessus.
 

Bonjour aux utilisateurs du forum !

J'effectue une mise à niveau vers mt5 et je voudrais

pour demander à Pavlik.

Pavlik, si tu me vois, envoie-moi un message.

r.klassen.ruit@web.de

pansa

 
TimeMaster:

Si vous avez une grande base d'indulgences, de hiboux, etc. qui ne se compilent pas dans les nouvelles constructions, il est logique de regarder de plus près et de "secouer la poitrine". Vous devriez conserver tous les éléments utiles et ne pas perdre de temps à les réécrire et à les déboguer pour les nouvelles versions.

A un certain moment, je me suis ennuyé).

TimeMaster:

Les vrais programmeurs expérimentés ou ceux qui veulent le devenir, suivent toujours les innovations, les bugs et les pépins leur pain. C'est l'écriture d'un code sans bogues qui compte comme une bonne programmation. Si vous n'avez pas l'énergie, le temps, la possibilité ou le désir de saisir toutes les innovations des "Metakvot", utilisez la langue que vous maîtrisez. Les DLL n'ont pas été supprimées. Introduisez vos propres algorithmes.

Que suivent les vrais traders ou ceux qui veulent le devenir ? ) L'autotrading disponible, la principale fonctionnalité de MT, a sombré dans l'oubli et s'est perdue parmi les innovations constantes d'innombrables constructions... Les options d'autotrading disponibles grâce à une approche plus sérieuse de la programmation, disons - "est". Je n'ai moi-même qu'un petit compte pratiquement oublié sur MT. J'ai passé 2 heures aujourd'hui à réhabiliter des outils de MT, d'après ce que je vois, il m'en faut 10 fois plus. Je ne sais pas si j'en ai besoin, peut-être que je le referai, mais plutôt "de mémoire ancienne". En gros, j'ai pris ma décision.

 
Figar0:

L'autotrading disponible, la caractéristique principale de MT - a sombré dans l'oubli et s'est perdu parmi les innovations constantes d'innombrables builds... Les options d'autotrading disponibles grâce à des approches de programmation plus sérieuses sont, disons, "là". Je n'ai moi-même plus qu'un petit compte pratiquement oublié sur MT. J'ai passé 2 heures aujourd'hui à réhabiliter des outils de MT, d'après ce que je vois, il m'en faut 10 fois plus. Je ne suis pas sûr d'en avoir besoin, peut-être que je le referai, mais plutôt "de mémoire ancienne". En gros, j'ai pris ma décision.

En fait, même maintenant, tout fonctionne, si l'on n'utilise que les anciennes fonctionnalités. Certaines choses peuvent être rendues beaucoup plus faciles et plus fiables, par exemple, la comptabilisation des lacunes de l'historique : avant cela (mcl++), la possibilité de calculer l'historique avec des lacunes causait un certain "mal de tête" (en raison du fait que la "queue" de l'historique était chargée en premier et que les barres manquées étaient ensuite écrites à l'intérieur), je devais utiliser des "béquilles". Tout est beaucoup plus simple maintenant. Vous ne pouvez pas utiliser de fonctionnalités supplémentaires et utilisez le MKL dans sa forme antérieure/améliorée, comme avant. Les exceptions sont les programmes qui ont dépassé les tableaux (indice mal calculé ou mémoire non allouée) - ceux-là ne fonctionnaient pas de manière garantie et, très probablement, de manière incorrecte auparavant.
 
Figar0:

Je me suis ennuyé à un moment donné)

A qui la faute si quelqu'un a un tas de code ???

Figar0:

En gros, j'ai pris ma décision.

Quelqu'un essaie-t-il de se retenir ? Lassoisé et tenu ? ??

 
AlexeyVik:

A qui la faute, alors, si quelqu'un a un tas de codes ? ???

Qu'est-ce que le code de la merde a à voir avec ça ? Certaines choses fondamentales ont changé
 
TheXpert:
Qu'est-ce que le code de la merde a à voir avec ça ? Certaines choses fondamentales ont changé
Je me demande juste (j'utilise l'ancien code, il fonctionne) : quelles sont les choses fondamentales ?