Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre extrêmement actif
    Pourquoi la communauté C++ s'intéresse plus à la technique et ignore la conception?
    Bonjour,

    Depuis la naissance de C++ et la communauté se focalise plus sur la technique et ces astuces.

    Or s'intéresser a la conception simplifie beaucoup de choses et contribue a rendre l'utilisation de C++ très simple.

    Malheureusement les sociétés commencent à fuir c++ à cause de sa complexité puisqu'on perd beaucoup de temps au niveau des couches techniques or l'essentiel c'est la couche métier.

    La communauté DotNet et Java s'intéressent plus a la conception et ça se voient dans la facilité d'utilisation de leurs frameworks.

    Quand la communauté C++ s'intéressera plus a la conception ?

  2. #2
    Membre expert
    partiellement vrai, Il existe des framework et des environnement métiers même en C++. j'ai même développé sur un EAI telecom (orienté métier) ou tu définissait un modèle UML sous rational rose et qui te générais et compilait le code C++ derrière, et sur ce projet personne n'a jamais été modifié a la main une seul fois le code généré.
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  3. #3
    Membre extrêmement actif
    Citation Envoyé par jabbounet Voir le message
    j'ai même développé sur un EAI telecom (orienté métier) ou tu définissait un modèle UML sous rational rose et qui te générais et compilait le code C++ derrière, et sur ce projet personne n'a jamais été modifié a la main une seul fois le code généré.
    Effectivement si l'équipe est orienté conception on arrivera a un résultat pareil, mais malheureusement c'est pas toujours le cas.

    d'une part les frameworks techniques de C++ sont encore compliqués surtout pour un débutant donc il passera plus de temps juste pour faire une interface graphique simple.

    d'autre part il n y a pas de culture de conception pour la communauté C++ il suffit juste de comparer les forums C++ a ceux de Dotnet et java ou on remarque qu'on parle plus de la conception.

    J'ai l'impression qu'en C++ on bataille encore avec l'aspect technique or pour un langage mature on doit dépasser cette étape et ce concentrer sur le métier.

  4. #4
    Rédacteur

    Citation Envoyé par Issam_Lahlali Voir le message
    d'autre part il n y a pas de culture de conception pour la communauté C++ il suffit juste de comparer les forums C++ a ceux de Dotnet et java ou on remarque qu'on parle plus de la conception.
    Je ne vois surtout pas pourquoi on viendrait sur le forum C++ (ou tout autre forum orienté langage) pour parler conception, de telles discutions ont plus leur place dans un forum conception.

    Les problématiques de conception sont, en grande partie, indépendantes des langages, mélanger les deux me semble être une erreur.


    PS : ceci étant, je suis d'accord avec toi pour dire que se focaliser uniquement sur les aspects techniques est une erreur.

  5. #5
    Membre extrêmement actif
    Juste pour donner des exemples concrets des dangers d'être trop technique et ignorer la conception.

    pendant mon expérience en c++, la majorité des développeurs avec qui j'ai bosser considère la technologie COM très compliquée et voila a mon avis une raison:

    la couche COM pour un projet mal conçu est utilisé pour implémenter les objets metiers, donc on traine toute la complexité du COM avec tout ces types BSTR,SAFFEARRAY, le probléme de marshaling ainsi de suite.

    or pour un projet bien conçu les objets metiers sont des classes très simples(POCO) et a la fin on peut créer des wrappers COM autour de ces classes, donc un seul développeur qui maitrise COM suffit, on va gagner beaucoup de temps au niveau développement et surtout on facilitera la tache aux ressources humaines pour lui eviter de chercher plusieurs profils qui maitrisent la technologie COM.

    Or si on pense pas a bien concevoir l'application on contribuera forcement a l'idée que C++ est très compliqué.

  6. #6
    Membre éprouvé
    Ben à part que la complexité des COM n'est nullement lié au langage C++, euh.. ok.

    Il faut bien distinguer ce qui est du C++, ce qui est du Windows, ce qui est du C et ce qui est du Linux.

  7. #7
    Membre extrêmement actif
    Citation Envoyé par gl Voir le message

    Les problématiques de conception sont, en grande partie, indépendantes des langages, mélanger les deux me semble être une erreur.
    Normalement pour un projet on passe un tiers du temps au niveau analyse et conception l'autre tiers au niveau codage et le dernier tiers on teste.

    Par contre si je bataille pour coder des choses simples forcement je piétine sur le temps de la conception et aussi de test.

    c'est vrai que la conception est général a tous les langages, mais si les frameworks et le langage ne me facilite pas la tache au niveau codage ça sera en dépend de la conception.

  8. #8
    Membre extrêmement actif
    Citation Envoyé par nikko34 Voir le message
    Ben à part que la complexité des COM n'est nullement lié au langage C++, euh.. ok.

    Il faut bien distinguer ce qui est du C++, ce qui est du Windows, ce qui est du C et ce qui est du Linux.
    lorsque je dis que ca rend le C++ plus compliqué , je parle d'un point de vue décideur, il ne va pas rentrer dans les détails pour savoir que COM est une couche indépendante du langage, par contre il va voir que le planing est dépassé , qu'on arrive pas a trouver des ressources, ect...

    et l'exemple de COM est juste pour montrer les dangers de la mauvaise conception.

    je ne suis pas contre C++ , d'ailleurs je code toujours avec, mais je suis pour le principe de "Keep it Simple" pour essayer de remettre le C++ a sa vrai place qui commence a la perdre de plus en plus.

  9. #9
    Rédacteur

    Citation Envoyé par Issam_Lahlali Voir le message
    Par contre si je bataille pour coder des choses simples forcement je piétine sur le temps de la conception et aussi de test.
    Mais justement, dans ce cas, c'est bien un problème technique et non de conception, même si au final cela peut se ressentir sur le temps affecté à la conception.
    Et cette problématique est identique pour tout les langages, même si elle sera fatalement moins fréquente pour toi dans un langage où tu es à l'aise.

  10. #10
    Expert éminent sénior
    Citation Envoyé par Issam_Lahlali Voir le message

    pendant mon expérience en c++, la majorité des développeurs avec qui j'ai bosser considère la technologie COM très compliquée et voila a mon avis une raison:
    Je fais partie de ceux-là
    COM c'est vraiment pas évident et intuitif on dirait que seuls les initiés et les gourous de chez MS peuvent être capables de maitriser cette architecture.
    Mais ceci dit tu maitrises COM tu maitrises une architecture fantastique, puissante et assez bien faite au final.
    Le problème n*1 c'est ce que c'est pas intuitif du tout ; Microsoft a refait les paradigmes ( est-ce le mot approprié ? ) de la POO à sa propre sauce.


    or pour un projet bien conçu les objets metiers sont des classes très simples(POCO) et a la fin on peut créer des wrappers COM autour de ces classes, donc un seul développeur qui maitrise COM suffit, on va gagner beaucoup de temps au niveau développement et surtout on facilitera la tache aux ressources humaines pour lui eviter de chercher plusieurs profils qui maitrisent la technologie COM.
    Oui absolument ; COM est excellent pour faire des "plug-ins" pour un programme "client"
    C'est un peu dans cette optique là que Microsoft a conçu cette technologie


    Citation Envoyé par Issam_Lahlali Voir le message
    Ça fait 10 ans que je fais du c++ et je sais qu'un débutant en C# va terminer avant moi une interface graphique en c# si moi je la code en c++
    Oui mais l'interface C# sera plus lente que celle en C++
    Attention troll C#/vs C++ en vue
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  11. #11
    Membre extrêmement actif
    Citation Envoyé par gl Voir le message

    Et cette problématique est identique pour tout les langages, même si elle sera fatalement moins fréquente pour toi dans un langage où tu es à l'aise.
    Ça fait 10 ans que je fais du c++ et je sais qu'un débutant en C# va terminer avant moi une interface graphique en c# si moi je la code en c++

    le problème c'est qu'on a tolérer trop la complexité des frameworks techniques de C++ et pire a chaque fois on leur trouve des explications.

  12. #12
    Expert éminent sénior
    Citation Envoyé par Issam_Lahlali Voir le message
    lorsque je dis que ca rend le C++ plus compliqué , je parle d'un point de vue décideur, il ne va pas rentrer dans les détails pour savoir que COM est une couche indépendante du langage, par contre il va voir que le planing est dépassé , qu'on arrive pas a trouver des ressources, ect...
    je suis bien d'accord avec toi mais les décideurs / chefs de projets /directeurs informatiques n'aiment pas le C++ :

    -il ya des fuites mémoires et puis c'est source de plantage à cause des pointeurs mal initialisés ( désolé pour les rengaines habituelles )
    -c'est compliqué et complexe à apprendre
    -beaucoup de gens en sont restés à : pour inialiser une chaine il faut déclarer un tableau de char et faire un strcpy
    -et puis surtout les éditeurs d'outils de développements , les éditeurs de ERP, PGI comme SAP ou PeopleSoft etc...se sont focalisés sur Java et .NET


    d'une part les frameworks techniques de C++ sont encore compliqués surtout pour un débutant donc il passera plus de temps juste pour faire une interface graphique simple
    Pas forcément : que dire de Qt par exemple ?
    Et surtout de la VCL avec C++ Builder aussi simple que Visual Basic 6 ?
    J'ai bossé dans une boite à Lyon qui commercialise un progiciel développé avec BCB et la VCL.
    Le problème c'est que d'un point de vue commercial tout le monde veut mettre du Java ou .NET à toutes les sauces
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
    ( A Einstein)

  13. #13
    Membre éprouvé
    Ce que je vois de compliqué effectivement c'est de trouver des personnes compétentes en C++, vu la formation donnée dans les écoles et certaines pratiques en entreprise.

  14. #14
    Rédacteur/Modérateur

    Citation Envoyé par Issam_Lahlali Voir le message
    Ça fait 10 ans que je fais du c++ et je sais qu'un débutant en C# va terminer avant moi une interface graphique en c# si moi je la code en c++
    Si je m'y remettais, je pense pour ma part que j'irais à peu près aussi vite à coder une IHM en C++ qu'un débutant en C#/WinForms, avec les bons frameworks (genre Qt), à condition que l'IHM soit un minimum conséquente.

    Là où le C++ va avoir plus de mal, c'est que, loi du marché domine, il commence à être difficile de trouver des bibliothèques de composant par dessus ces frameworks d'IHM en C++. Et qu'effectivement il faut plus de bouteille en C++ pour éviter les erreurs, et sélectionner les bons frameworks (ex Qt, oui, MFC, non, COM, à éviter si on peut, ce n'est pas du C++, mais un langage spécifique avec son propre modèle objet différent de celui du C++ et des bindings vers différents langages, dont C++).

    Ce que je sais aussi, c'est qu'en dehors des frameworks existants, j'aurais bien plus de mal à créer ma propre bibliothèque réutilisable en C# qu'en C++, à cause des limitations du langage. Par exemple, j'ai essayé de mettre en place récemment une mécanique de log dans un programme C#, pas moyen d'avoir un résultat satisfaisant. Pourtant, mes contraintes n'étaient pas très étranges : Pouvoir logger simplement des chaînes de caractères, des nombres et des dérivés d'une interface.

    Quand on voit que à chaque nouveau framework proposé, Microsoft est obligé de faire évoluer le langage pour qu'il permette de le mettre en place (Linq, par exemple, ou WPF), on se dit qu'il y a là un problème à la base.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  15. #15
    Rédacteur/Modérateur

    Pour l'aspect UML/conception, je trouve pour avoir essayé à plusieurs reprises qu'UML, bien que se voulant neutre en terme de langage d'implémentation, ne l'est pas tant que ça, et impose un paradigme là où le C++ en propose plusieurs, et j'ai toujours eu du mal à exprimer ainsi des points qui me semblent fondamentaux d'une conception C++ en UML. Peut-être que c'est aussi ce qui freine les outils de conception orienté C++.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  16. #16
    Membre éclairé
    Il ne faudrait pas oublier la grande disparité entre les différents environnements et compilateurs C++. C'est moins le cas aujourd'hui mais les vieilles habitudes s'accrochent: pour être à peu près sûr qu'un code soit portable (à commencer d'une version de compilo à une autre), beaucoup de projets se sont imposés des règles strictes qui consistent à n'utiliser qu'une mince surcouche au dessus de C (pas de templates, pas d'exceptions, peu de STL etc). Au final la conception est vite rattrapée par des choix techniques limitants.

    De plus, certains paradigmes et propriétés du langage C++ ont été "découverts" à posteriori plutôt que d'avoir modelé le langage pour cibler ces paradigmes au préallable. Je pense à tout ce qui fait intervenir la meta programmation, le design par policies etc. Il n'y a pas de direction privilégiée en terme de conception.

  17. #17
    Rédacteur

    Citation Envoyé par JolyLoic Voir le message
    Pour l'aspect UML/conception, je trouve pour avoir essayé à plusieurs reprises qu'UML, bien que se voulant neutre en terme de langage d'implémentation, ne l'est pas tant que ça, et impose un paradigme là où le C++ en propose plusieurs, et j'ai toujours eu du mal à exprimer ainsi des points qui me semblent fondamentaux d'une conception C++ en UML.
    J'ai peur de ne pas te comprendre.

    UML peut éventuellement [1] pousser à utiliser un paradigme mais est bien neutre en terme de langage.
    Le modèle UML pourra être implémenter dans tout langage supportant nativement ce paradigme ou offrant des mécanisme pour l'émuler.
    Certes, certains aspects intéressant du C++ ne seront pas utiliser/modéliser mais le modèle pourra bien être implémenter en C++ et dans nombre d'autres langages, en ce sens UML est bien neutre en terme de langage.


    [1] j'utilise "éventuellement" car je me garderais bien de généraliser ce point. Ca dépend fortement du diagramme UML utilisé (certains diagramme sont plus neutre que d'autre).
    Ceci étant je trouve également regrettable que certains puisse brider leur conception et/ou implémentation au motif qu'un langage de modélisation ne permette pas de représenter correctement ce logiciel.

  18. #18
    Membre expert
    Citation Envoyé par Issam_Lahlali Voir le message
    Effectivement si l'équipe est orienté conception on arrivera a un résultat pareil, mais malheureusement c'est pas toujours le cas.

    d'une part les frameworks techniques de C++ sont encore compliqués surtout pour un débutant donc il passera plus de temps juste pour faire une interface graphique simple.
    dans l'exemple dont je te parle, je ne vois pas ce qu'il y'a de compliqué a faire un diagramme UML, poser des rectangle et des ronds et les relier avec des traits (je sais c'est un peu plus complexe que ça uml, mais la je grossis un peu le traits) je ne vois pas comment on peux faire plus simple.


    d'autre part il n y a pas de culture de conception pour la communauté C++ il suffit juste de comparer les forums C++ a ceux de Dotnet et java ou on remarque qu'on parle plus de la conception.
    je me demande si les personne qui ont développé apache ont commencé par faire le code à l'arrache et ont ensuite fait le reste (la doc,....) car c'est quand même écrit en C++ a la base si je me souviens.

    je pense que tu ne te rend pas compte mais il y'a un paquet d'application développées en C/C++ dans n'importe quel environnement, pidgin, Firefox, Thunderbird, pour ne citer que des open sources ont été écrits en C/C++, et je ne pense pas que leurs concepteur sont ont fait le code à l'arrache.

    Bref les démarche dans les projets et la façon dont sont conçue les softs sont très indépendant des langage à la base, ensuite c'est surtout une question de culture d'entreprise. la ou je travaille on ne pond pas une ligne de code avant d'avoir validé les documents de conceptions par exemple et ce quelque soit le langage dans lequel sera faite implémentation.



    J'ai l'impression qu'en C++ on bataille encore avec l'aspect technique or pour un langage mature on doit dépasser cette étape et ce concentrer sur le métier.
    Quel métier, C++ est capable de répondre a pratiquement toutes les problématique de programmation allant de l'embarqué (petit systemes) au Application tres haut niveau il faut effectivement voir dans quel niche tu te situe tu n'aura pas le même niveau d'avancement des différents encironnement de dev (framewok disponible, ...) en fonction du métier dans lequel tu te situe.


    Exemple pour les téléphones mobile tu as beaucoup de SDK en C/C++ par exemple et si ce n'est pas orienté métier (pour ceux qui développent des applis sur téléphone je ne vois pas comment il feraient)


    Apres effectivement tout n'est pas rose non plus dans le monde du C++. mais dire qu'il n'y a pas de démarche de conception dans ce domaine est un bêtise.
    la démarche de conception dépend beaucoup de la culture projet que tu as dans ton entreprise.
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  19. #19
    Membre extrêmement actif
    Citation Envoyé par jabbounet Voir le message
    dans l'exemple dont je te parle, je ne vois pas ce qu'il y'a de compliqué a faire un diagramme UML, poser des rectangle et des ronds et les relier avec des traits (je sais c'est un peu plus complexe que ça uml, mais la je grossis un peu le traits) je ne vois pas comment on peux faire plus simple.
    Effectivement c'est simple mais ça demande un effort de conception,pour cela il faut faire comprendre aux developpeurs C++ de ne pas rester focaliser sur la technique.

    Pour un développeur C++ débutant qui cherche des ressources au niveau WEB il va être noyer par des articles techniques, et forcement il aura une vision proche de la tuyauterie technique.

    autant plus que C++ est trop permissif, il englobe des concepts qu'il faut maitriser avant de les utiliser a tord et a travers comme le mot clé Friend par exemple.

    Citation Envoyé par jabbounet Voir le message
    Quel métier, C++ est capable de répondre a pratiquement toutes les problématique de programmation
    Tout a fait raison mais encore une fois c'est pas le langage qui est en cause mais la culture de développement C++ qui reste bas niveau qui est en cause.

    C++ est trop similaire a C# ou java donc on doit pouvoir avoir des frameworks aussi facile que ces 2 langages.

  20. #20
    Membre extrêmement actif
    Citation Envoyé par Mat.M Voir le message

    Pas forcément : que dire de Qt par exemple ?
    Et surtout de la VCL avec C++ Builder aussi simple que Visual Basic 6 ?
    J'ai bossé dans une boite à Lyon qui commercialise un progiciel développé avec BCB et la VCL.
    Le problème c'est que d'un point de vue commercial tout le monde veut mettre du Java ou .NET à toutes les sauces
    je n'est eu l'occasion d'utiliser QT que dans un seul projet et effectivement c'est puissant mais voici un problème qu'on rencontre souvent en c++, qui est couteux mais en général on l'ignore:

    QT n'est pas suffisant pour tous les besoins , donc des fois on a besoin d'autres librairies, dans mon cas j'avais besoin d'ATL et dans ce cas on se trouve confronté a une non homogénéité par exemple pour les chaines de caractères on aura QString, ATL::CString et en plus BSTR,et si on plus on utilise STL il y'aura std::string et bien sur char*.

    cette non homogénéité on peut l'appliquer a plusieurs types (Files,SmartPointer, ect...).

    Si QT était complet et gère la majorité de la couche technique c'est l'idéale, et sincèrement je ne suis pas bien placé pour dire que ce n'est pas le cas, peut être les experts QT peuvent nous répondre.

    mais ce problème de non homogénéité m'a toujours gêner ça impose aux développeurs c++ de passer du temps a apprendre d'autre librairies.

###raw>template_hook.ano_emploi###