Qu'est-ce que le code OOP peut faire que le code procédural ne peut pas faire ? - page 4

 
Doerk Hilger:

Vous vous attendez vraiment à ce que quelqu'un de professionnel poste une bibliothèque de compex, juste comme ça, comme une "preuve" ? ;) Je pourrais vous poster un lien vers quelque chose de prêt qui ne peut pas être vendu sur le marché ici, mais Alain va me botter le cul si je le fais ;) Vous pouvez visiter mon profil et jeter un coup d'oeil à la photo du mur pour vous faire une idée ou m'envoyer un mail.

Une autre plateforme ? Vous ne trouverez pas d'autre plateforme avec un compilateur aussi puissant. Pas du tout.

@James Cater - merci beaucoup pour vos commentaires.

Il existe d ' autres plates-formes que MT, et si le compilateur est plus ou moins puissant, cela m'est égal tant que je peux écrire du code simple.

Ce qui vous manque ici, c'est l'éducation, nous sommes tous en train d'apprendre, certains sont juste plus avancés que d'autres. Pour autant que je sache, ce n'est pas un concours, mais plutôt un lieu d'échange de connaissances et de soutien.

Et d'ailleurs, je ne crois pas que quiconque dans ce forum écrira un programme d'un million de lignes.

 
Alain Verleyen:
Vous avez manqué le point Dirk. Les personnes non spécialisées veulent des exemples de code simples et clairs, ce qui était en fait mon objectif avec ce sujet. Mais cela semble complètement au-delà de la compréhension des spécialistes.

Les derniers langages essaient de simplifier les choses pour les personnes ayant moins de connaissances en codage peuvent être ajoutées au groupe des "codeurs". Le meilleur exemple est le pseudo-langage HTML. Et c'est là la grande erreur. Lorsque MT5 a été développé, de nombreux "novices" ont critiqué le style OOP parce qu'il était difficile. Mais la vérité est que chaque travail a ses professionnels. Si vous voulez améliorer une plateforme, vous devez la complexifier. Plus de fonctionnalités, plus de flexibilité. Laisser des gens sans connaissance du codage essayer de le faire, c'est comme si quelqu'un sans connaissance de la construction de maisons en avait fait une. Ce sera un désastre.

La longueur des projets dépend du codeur. Ma bibliothèque est de taille moyenne pour le langage MQL. D'autres n'ont besoin que de petites bibliothèques pour créer des outils. Dans mon cas, je préfère passer du temps à créer un cadre pour gagner du temps et simplifier le développement dans le futur. Si vous devez créer des interfaces utilisateur complexes ou réutiliser du code pour d'autres projets, c'est la voie la plus intelligente.

 
Juan Fernandez:

Les derniers langages essaient de simplifier les choses pour les personnes ayant moins de connaissances en codage peuvent être ajoutées au groupe des "codeurs". Le meilleur exemple est le pseudo-langage HTML. Et c'est là la grande erreur. Lorsque MT5 a été développé, de nombreux "novices" ont critiqué le style OOP parce qu'il était difficile. Mais la vérité est que chaque travail a ses professionnels. Si vous voulez améliorer une plateforme, vous devez la complexifier. Plus de fonctionnalités, plus de flexibilité. Laisser des gens sans connaissance du codage essayer de le faire, c'est comme si quelqu'un sans connaissance de la construction de maisons en avait fait une. Ce sera un désastre.

La longueur des projets dépend du codeur. Ma bibliothèque est de taille moyenne pour le langage MQL. D'autres n'ont besoin que de petites bibliothèques pour créer des outils. Dans mon cas, je préfère passer du temps à créer un cadre pour gagner du temps et simplifier le développement dans le futur. Si vous devez créer des interfaces utilisateur complexes ou réutiliser du code pour d'autres projets, c'est la meilleure solution.

Les gens ne peuvent donc pas acquérir de connaissances ?

 

Procédural vs OOP est un débat inutile, il y a 3 ans il a déjà été discuté et ma réponse est tout à fait valable, rien de plus n'a été dit ici :

Forum sur le trading, les systèmes de trading automatisés et le test des stratégies de trading.

Programmeurs : Quelle est votre préférence ? OOP vs Procedural

Alain Verleyen, 2013.06.11 13:11

Votre sondage manque d'une option pour ceux qui ne préfèrent rien. Je veux dire, ce n'est pas seulement une question de préférence, cela n'a aucun sens d'utiliser la POO pour un petit script ou même une simple EA. La POO ajoute toujours du travail et n'est avantageuse que pour les projets complexes et la réutilisation du code (même code utilisé dans plusieurs projets). Complexe n'est pas synonyme de grand, si quelqu'un a un grand projet mais relativement simple ,cela ne signifiepas automatiquement qu'il doit utiliser la POO.

Vous pouvez voir le grand potentiel de la POO avec l'assistant MQL5 développé par Metaquotes, il serait très difficile de développer un tel outil avec la programmation procédurale,bien que ce soit faisable.

La POO devrait être utilisée :

  • Sur un projet complexe comme l'ont très bien dit Doerk et James.
  • Quand vous voulez réutiliser votre code.

A partir de maintenant, je n'accepterai aucun post qui n'est pas concret, sans exemple de code pour démontrer pourquoi et comment la POO devrait être mieux utilisée dans les cas ci-dessus.

 
Alain Verleyen:

Procédural vs OOP est un débat inutile, il y a 3 ans il a déjà été discuté et ma réponse est complètement valide, rien de plus n'a été dit ici :

La POO devrait être utilisée :

  • Sur des projets complexes comme l'ont très bien dit Doerk et James.
  • Quand vous voulez réutiliser votre code.

A partir de maintenant, je n'accepterai aucun post qui ne soit pas concret, sans exemple de code pour démontrer pourquoi et comment la POO devrait être mieux utilisée dans les cas ci-dessus.

Merci
 
J'ai lu tout ce sujet, et je trouve cela intéressant, mais le code machine n'est-il pas procédural ? Donc les langages de haut niveau, et la POO incluse, tous sont finalement traduits en procédural dans le compilateur, n'est-ce pas ? Si tous les langages sont traduits en code machine procédural, alors nous pouvons dire que tout peut être fait en procédural, si le programmeur a les compétences, s'il vous plaît quelqu'un me corrige si j'ai tort.
 
Mrluck07:
J'ai lu tout ce sujet, et je trouve cela intéressant, mais le code machine n'est-il pas procédural ? Donc les langages de haut niveau, et la POO incluse, tous sont finalement traduits en procédural dans le compilateur, n'est-ce pas ? Si tous les langages sont traduits en code machine procédural, alors nous pouvons dire que tout peut être fait en procédural, si le programmeur a les compétences, s'il vous plaît quelqu'un me corrige si j'ai tort.

Tout peut être fait en procédural théoriquement. Ce n'est pas pratique.
Une brique est construite à partir de milliers de milliers de particules de sable, donc vous pouvez construire une maison sans briques, juste avec du sable.
Mais personne n'essaie même quand vous avez des briques.

Un avion est construit à partir de pièces prêtes à l'emploi : ailes, roues, sièges, ordinateurs, etc. À la fin, ils sont tous fabriqués en métal, en plastique ou en verre. Mais personne ne construira un avion à partir de verre, de plastique et de métal purs.

Pour le débat en général (en réponse à Alain et aux autres) : Prenez le CArrayObj - un tableau d'objets. Cela suffit à répondre à la question de savoir quelle est la puissance de l'OO (qui est bien plus que cela). Il peut stocker un tableau d'objets quelconques - comme des indicateurs par exemple.
Et en un rien de temps, faire des choses complexes pour tous ces différents indicateurs. Et si vous voulez maintenant une nouvelle puissance à cela, par exemple vous voulez savoir quand un tampon d'indicateur est traversé, vous avez juste à mettre la méthode dans CIndicator, c'est tout. Et ainsi de suite. Comment le feriez-vous en procédural ?

Et cela peut être fait dans tous les aspects - Stratégies, Trades, Deals, Signaux - n'importe quoi.

 
Amir Yacoby:

Tout peut être fait en procédural en théorie. Ce n'est pas pratique.
Une brique est construite à partir de milliers de milliers de particules de sable, donc vous pouvez construire une maison sans briques, juste avec du sable.
Mais personne n'essaie même quand vous avez des briques.

Un avion est construit à partir de pièces prêtes à l'emploi : ailes, roues, sièges, ordinateurs, etc. À la fin, ils sont tous fabriqués en métal, en plastique ou en verre. Mais personne ne construira un avion à partir de verre, de plastique et de métal purs.

Pour le débat en général (en réponse à Alain et aux autres) : Prenez le CArrayObj - un tableau d'objets. Cela suffit à répondre à la question de la puissance de l'OO (qui est bien plus que cela). Il peut stocker un tableau d'objets quelconques - comme des indicateurs par exemple.
Et en un rien de temps, faire des choses complexes pour tous ces différents indicateurs. Et si vous voulez maintenant une nouvelle puissance à cela, par exemple vous voulez savoir quand un tampon d'indicateur est traversé, vous avez juste à mettre la méthode dans CIndicator, c'est tout. Et ainsi de suite. Comment le feriez-vous en procédural ?

Et cela peut être fait dans tous les aspects - Stratégies, Trades, Deals, Signaux - n'importe quoi.

Ce sujet était intentionnellement provocateur, cependant la réponse à la question principale (que peut faire la POO que le code procédural ne peut pas) est RIEN.

La POO n'est certainement pas la seule façon de construire et d'utiliser des briques. Il y a au moins autant de façons de créer du mauvais code dans la POO que dans le code procédural (et très probablement plus de façons). Il suffit de regarder la "bibliothèque standard" fournie par Metaquotes, qui est en fait loin d'être "standard".

La POO contre le procédural est un débat inutile et sans fin. Un débat plus utile devrait être "Comment produire un code de qualité ? Avec et sans POO, avec et sans procédural, avec et sans aucun paradigme de programmation". Si votre besoin est de construire une maison en bois, vous n'avez pas besoin de briques, mais vous avez besoin que ce soit une bonne maison, solide et fiable.

 
Je sais que c'était provocateur Alain.
Et une bonne programmation peut certainement être pratiquée partout. Mais, comme chaque monde est construit d'objets, et cela inclut le monde du commerce, oo est beaucoup plus adapté pour décrire ce monde que les procédures. Bien sûr, quand les deux sont bien écrits.


 
Amir Yacoby:

Tout peut être fait en procédural en théorie. Ce n'est pas pratique.
Une brique est construite à partir de milliers de milliers de particules de sable, donc vous pouvez construire une maison sans briques, juste avec du sable.
Mais personne n'essaie même quand vous avez des briques.

Un avion est construit à partir de pièces prêtes à l'emploi : ailes, roues, sièges, ordinateurs, etc. À la fin, ils sont tous fabriqués en métal, en plastique ou en verre. Mais personne ne construira un avion à partir de verre, de plastique et de métal purs.

Pour le débat en général (en réponse à Alain et aux autres) : Prenez le CArrayObj - un tableau d'objets. Cela suffit à répondre à la question de savoir quelle est la puissance de l'OO (qui est bien plus que cela). Il peut stocker un tableau d'objets quelconques - comme des indicateurs par exemple.
Et en un rien de temps, faire des choses complexes pour tous ces différents indicateurs. Et si vous voulez maintenant une nouvelle puissance à cela, par exemple vous voulez savoir quand un tampon d'indicateur est traversé, vous avez juste à mettre la méthode dans CIndicator, c'est tout. Et ainsi de suite. Comment le feriez-vous en procédural ?

Et cela peut être fait dans tous les aspects - Stratégies, Trades, Deals, Signaux - n'importe quoi.

Dans votre exemple, lorsque vous codez OO et que vous cliquez sur compiler, cela va générer du code machine. Mais ce code machine est procédural ou non ? Je ne connais vraiment pas la réponse, quelqu'un ici le sait ? Si le code machine est procédural, alors vous pouvez appeler OO seulement un langage de plus haut niveau, qui rend plus facile à coder seulement, mais rien de spécial, de sorte qu'un programmeur C compétent peut faire le même travail qu'un programmeur OO, en fait, il peut même être mieux optimisé. Donc ma question, ex code est prodedural ou pas ?