IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

C++ Discussion :

java ou c++ ou autre


Sujet :

C++

  1. #41
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Par rapport a ce sujet le mieux est de ne pas rester piéger par un langage, il faut remonter d'un niveau est se concentrer sur la conception et la manière d'aborder une problématique ou un projet.

    C'est vrai que le langage influence les décisions, mais il faut apprendre a surmonter ce complexe du langage et il faut choisir le bon langage pour le bon besoin , donc il faut être ouvert a aborder n'importe quel langage sans crainte.

    Par contre il y a des langages qui s'adapte plus a l'être humain et d'autres ou l'être humain qui doit plus s'adapter avec , par exemple C++ a pris la voie ou c'est le developpeur qui doit plus s'adapter avec , on a eu une démonstration juste il y a qlq mois ou on a du mal a ajouter des choses a la norme pour simplifier et le rendre plus puissant, ça traine toujours.

    Par contre pour d'autres langages ils font pas mal d'effort pour s'adapter aux développeurs comme java ou c#, mais aprés t'aura un debat entre 2 écoles, celle qui est pour tout maitriser jusqu'a la gestion memoire et l'autre pour liberer le developpeur de tout les aspects bas niveau et se concentrer sur le metier, et crois moi les decideurs ecoute les conseils de la 2eme ecole


    finalement ne tombe pas dans le piège java vs c++ ou java vs c# ou autre, chaque langage enrichit tes connaissances et ta manière d'aborder les problématiques et chacun et très puissant pour une problématique, il faut être prêt a aborder n'importe quel langage et surtout laisse ton esprit ouvert a tout langage et concentre toi aussi sur la conception dés maintenant ça t'aidera bcp par la suite.

  2. #42
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par DesignFirst Voir le message
    Par contre il y a des langages qui s'adapte plus a l'être humain et d'autres ou l'être humain qui doit plus s'adapter avec , par exemple C++ a pris la voie ou c'est le developpeur qui doit plus s'adapter avec , on a eu une démonstration juste il y a qlq mois ou on a du mal a ajouter des choses a la norme pour simplifier et le rendre plus puissant, ça traine toujours.
    Là tu parles de vitesse d'évolution du langage, et c'est vrai que le C++ évolue trop lentement à mon goût (même si d'autres langages évoluent parfois trop vite mais sans réflexion poussée, par exemple les lambdas dans C#, ou le fait que pendant longtemps C# ou Java n'ont pas eu les génériques) mais en règle générale, j'ai bien l'impression que le C++ est plus souple et s'adapte mieux au développeur que par exemple C# (je ne connais pas assez Java pour en parler), car c'est un langage qui propose plusieurs manières de programmer, alors que C# a tendance à n'en proposer qu'une, qu'il faut suivre.
    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.

  3. #43
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    car c'est un langage qui propose plusieurs manières de programmer, alors que C# a tendance à n'en proposer qu'une, qu'il faut suivre.
    On parle beaucoup du multi paradigme en C++ mais j'ai l'impression que cet avantage n'est exploité que par quelques développeurs, et ça ajoute une complexité pour la majorité des développeurs.

    Par exemple pour le procédurale c'est toujours mal utilisé et ça donne finalement du C like, et pour les templates rare sont ceux qui utilisent leur vrai puissance, en général on 'a l'impression que c'est utilisé que pour éviter le copier/coller mais non comme paradigme qui apporte une autre manière de concevoir comme le polymorphisme statique.


    Mais si on entame C++ du bon bout c'est tout benef, on apprend énormément de concepts et de mécanismes qui nous permettrons de maitriser la majorité des langages aisément, mais hélas en réalité ce langage est de plus en plus considéré comme trop complexe et ce préjugé des étudiants leur ajoute dés le départ une barrière supplémentaire.

  4. #44
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par DesignFirst Voir le message
    On parle beaucoup du multi paradigme en C++ mais j'ai l'impression que cet avantage n'est exploité que par quelques développeurs, et ça ajoute une complexité pour la majorité des développeurs.
    En apparence uniquement...

    Car en pratique, cela amène à une programmation plus "naturelle": Il y a certaines fonctions qui n'ont strictement rien à faire dans des classes, même s'il s'agit de fonctions "de classes" (statiques) et non de fonctions "d'instance"(non statiques)...

    Obliger le programmeur à créer une classe entièrement artificielle pour respecter le paradigme objet à tout prix est alors un non sens intégral.
    Par exemple pour le procédurale c'est toujours mal utilisé et ça donne finalement du C like,
    Dans le pire des cas, peut-être...

    Mais utilisé à bon escient, il permet, simplement, de ne pas être obligé de créer une classe artificielle
    et pour les templates rare sont ceux qui utilisent leur vrai puissance, en général on 'a l'impression que c'est utilisé que pour éviter le copier/coller
    C'est déjà pas si mal, si on a effectivement remarqué que le comportement est factorisable indépendamment du type de donnée manipulé
    mais non comme paradigme qui apporte une autre manière de concevoir comme le polymorphisme statique.
    Il est vrai que cela nécessite une approche plus transversale du problème que ce que l'on a l'habitude de faire en OO...
    Mais si on entame C++ du bon bout c'est tout benef,
    on apprend énormément de concepts et de mécanismes qui nous permettrons de maitriser la majorité des langages aisément,
    +1
    mais hélas en réalité ce langage est de plus en plus considéré comme trop complexe et ce préjugé des étudiants leur ajoute dés le départ une barrière supplémentaire.
    Le problème que l'on rencontre souvent, c'est que les profs qui doivent apprendre C++ à leurs élèves ont tété à la mamelle du "C++, c'est du C" qui veulent l'apprendre beaucoup trop vite en le prenant par le mauvais bout ...

    Je ne fais aucune objection au fait de commencer l'apprentissage en n'utilisant que le paradigme procédural, du moment que l'on utilise directement les possibilités qu'il offre (l'utilisation des classes conteneurs, de std::string et de i/o *stream, par exemple, même si c'est de manière superficielle), quitte à revenir sur ces classes par la suite.

    Par contre, si tu base l'apprentissage sur C with class, il est clair que tu donnera rapidement une mauvaise impression de complexité, qui risque très fort de décourager les élèves
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #45
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Par défaut
    bonjour
    comme d'habitude je n'oublie jamais de vous remercier.
    on a principalement parlé de la différence entre C++ et java, et, au final, tu choisi un langage qui rajoute aux inconvénients de java celui de n'être pas vraiment portable, du fait de ses origines "microsoftiennes"...
    Peut on savoir ce qui t'a incité à ce choix, si, du moins, ce n'est pas indiscret
    c'est vrai on a parlé principalement de c++ et java mais le sujet de la discussion était "java ou c++ ou autre"
    De plus je pense que dire que c#
    rajoute aux inconvénients de java celui de n'être pas vraiment portable
    n'est trés juste car c# est trés puissant par apport à java comme tous les langages .net y compris c++.mais plutôt on peut dire que c# rajoute aux avantages de c++ la simplicité de java.
    pour la portabilité c++ souffre du même problème que c#.J'ai lu aussi dans la faq c# sur ce site que maintenant on peut compiler du codes c#.net sur plusieurs architectures grâce au projet MONO.
    Maintenant pour la citation de DesignFirst ,je suis totalement d'accord avec lui,la conception (uml,merise,...) doit précéder tout implémentation et nous devons comprendre en globale le COO et la POO et ne pas craindre des langages de programmation et ainsi ne pas tomber dans les pièges de java vs c++ ou java vs c# et laisser l'esprit ouvert,ici l'école se charge de ces trucs.
    Mais ce qui m'a poussé à faire un choix est d'une part l'equivalence qui existe entre certains langages(c# et vb par exemple, pourquoi donc les deux) et d'autre part (ce qui est plus intéressant) est que je developppe des applications sur mesure pour des clients,et chaque fois je choisi un langage pour le faire ce qui a causé :
    -mes applications ne sont pas optimale du côté code et temps de réalisation (mais bien sur car je ne maitrise aucun langages )
    -la qualité de mes applications n'est pas en train d'évoluer (car à chaque fois je change de langage et ainsi je recommence du début)
    Aussi pour ces raisons que j'ai adopté c# ,sa productivité,sa simplicité et sa puissance(qui dépasse certainement celle de java) vont m'aider à optimiser mes travaux.voilà .

  6. #46
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    pour la portabilité c++ souffre du même problème que c#
    Tu devrais vérifier tes informations, la portabilité en C++ n'a rien a voir avec celle du C#. Le C# dépends d'une implementation .Net (celle de microsoft ou Mono) qui elle même doit être présente sur la machine cible.
    En C++ si ton code est standard et compilé "correctement" par les compilateurs dispo sur tes machines cible, alors ton code est portable. Sur ordinateur classique (pc/mac) les dis compilateurs sont disponibles gratuitement, donc la seule vrai contrainte deviens le code lui même qui peut ou pas utiliser des fonctions spécifiques à un OS ou une bibliothèque faisant de même.

    Donc non ce n'est pas pareil. Cela dit, ça n'empêche pas C# d'être un choix légitime, selon les cas.


    Au passage, justement je me demandais si la portabilité était un point important pour les applications web? Si quelqu'un avec de l'experience en sait quelque chose là dessus...

  7. #47
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par louzorios Voir le message
    De plus je pense que dire que c# n'est trés juste car c# est trés puissant par apport à java comme tous les langages .net y compris c++.
    Je pense à l'inverse qu'il souffre des mêmes limites que java par rapport à C++ pour les même raisons: la philosophie de C# est, finalement, plus proche de java que de C++
    mais plutôt on peut dire que c# rajoute aux avantages de c++ la simplicité de java.
    Pas à mon sens...

    Comme je l'ai dit, il rajoute aux restrictions de java des restrictions propre au coté "propriétaire" du langage.
    pour la portabilité c++ souffre du même problème que c#.
    Oh que nenni...

    Si tu écris un code standard en C++, a la quasi certitude qu'il compilera sur n'importe quelle plateforme et n'importe quel système d'exploitation...

    C# depend du framework .NET ou de son équivalent MONO... et la portabilité est loin d'être optimale entre les deux
    J'ai lu aussi dans la faq c# sur ce site que maintenant on peut compiler du codes c#.net sur plusieurs architectures grâce au projet MONO.
    Effectivement, il y a mono, mais, pour autant que j'en sache, il y a toujours un décalage entre ce que MONO permet et ce que permet le framework microsoft, ce qui rend la portabilité plus qu'incertaine

    De plus, il y a des frameworks prévus pour C++ dont la portabilité est largement supérieure à celle que l'on rencontre entre MONO et .NET (Qt, par exemple)...
    Mais ce qui m'a poussé à faire un choix est d'une part l'equivalence qui existe entre certains langages(c# et vb par exemple, pourquoi donc les deux)
    équivalence sommes toutes relativement normale étant donné que les deux langages ont été développés par la même firme, mais cependant toute relative quand même
    et d'autre part (ce qui est plus intéressant) est que je developppe des applications sur mesure pour des clients,et chaque fois je choisi un langage pour le faire ce qui a causé :
    C'est effectivement une logique cohérente, lorsque l'on ne décide pas de se "spécialiser" dans certains types de projets
    -mes applications ne sont pas optimale du côté code et temps de réalisation (mais bien sur car je ne maitrise aucun langages )
    -la qualité de mes applications n'est pas en train d'évoluer (car à chaque fois je change de langage et ainsi je recommence du début)
    Ne dit on pas qu'il faut apprendre à marcher avant de savoir courir

    Il est tout à fait juste que les transitions incessantes entre différents langages ne sont pas faites pour faciliter la maitrise de l'un deux...

    Mais ce n'est pas parce que tu dois "te remettre dans le bain" à chaque fois que tu n'évolue pas dans la maitrise des différents langages, non plus
    Aussi pour ces raisons que j'ai adopté c# ,sa productivité,sa simplicité et sa puissance(qui dépasse certainement celle de java) vont m'aider à optimiser mes travaux.voilà .
    La productivité et la simplicité de C# est, selon moi, fort similaire à celle de java, vu qu'ils ont suivi des philosophies finalement fort proches...

    Par contre, si, effectivement, C# profite de la puissance de .NET qui le rend, peut-être, plus puissant que java, cela n'empêche que C++ reste, même sans utiliser .NET, très largement supérieur aux deux (au contraire, je ne suis pas loin de penser que le fait d'utiliser C++ en .NET revient plutôt à en limiter la puissance )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #48
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 109
    Par défaut
    merci à vous
    ce que j'ai voulu dire pour la portabilité
    pour la portabilité c++ souffre du même problème que c#
    que si un projet nécessite une portabilité alors on va tourner vers java et non pas c++ ni c# .
    de plus
    Pour Koala
    I
    l est tout à fait juste que les transitions incessantes entre différents langages ne sont pas faites pour faciliter la maitrise de l'un deux...

    Mais ce n'est pas parce que tu dois "te remettre dans le bain" à chaque fois que tu n'évolue pas dans la maitrise des différents langages, non plus
    je comprend ici que tu veux que je reste transiter entre différents langages??

  9. #49
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par louzorios Voir le message
    merci à vous
    ce que j'ai voulu dire pour la portabilité

    que si un projet nécessite une portabilité alors on va tourner vers java et non pas c++ ni c# .
    Pas forcément...

    C++ est une alternative très correcte lorsque la portabilité est de mise...

    Pour Koala

    je comprend ici que tu veux que je reste transiter entre différents langages??
    Je ne veux rien du tout...

    Je constate "simplement" que, tant que tu restera programmeur "généraliste", tu risque effectivement de transiter d'un langage à l'autre.

    Le jour où tu te "spécialisera" dans un domaine d'applications particulier, il y a de fortes chances que te spécialise de facto dans un langage également.

    En attendant, si tu es libre du langage utilisé (comprend: si ton client n'insiste pas pour que tu lui fournisse une application développée dans un langage particulier), il te reste toujours le choix de n'utiliser qu'un langage particulier, en restant cependant conscient qu'il risque de ne pas présenter "autant de facilité" qu'un autre langage dans certains cas particuliers.

    Après tout, on a cité .NET plusieurs fois, si tu dois interfacer une application avec un serveur MsSQL, rien ne t'empêche d'utiliser C++ avec .NET... Mais il est effectivement vrai que tu *pourrais* avoir plus facile à utiliser .NET avec C#...

    Par contre, si tu choisi C#, qui est très dépendant de .NET, le jour où tu n'aura pas la possibilité de disposer de .NET ou de MONO (en le considérant même comme compatible), tu auras de sérieux problèmes...

    Et la réflexion est sensiblement identique avec java et sa dépendance à une machine virtuelle.

    Au final, d'un point de vue purement généraliste, C++ reste le langage qui te permet de partir dans le plus de directions et qui est susceptible de s'adapter à un maximum de situations, même si, effectivement, il est toujours possible de trouver une situation particulière dans laquelle il serait "pas tout aussi" adapté qu'un autre langage.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #50
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Au passage, justement je me demandais si la portabilité était un point important pour les applications web? Si quelqu'un avec de l'experience en sait quelque chose là dessus...
    Le coût de l'hébergement peut en être un. J'ai vu quelqu'un recoder entièrement un jeu en ligne de l'asp vers du php pour cette raison (facteur 5 à 10 entre le coût d'un serveur php et d'un serveur asp). C'était il y a déjà pas mal d'années, mais je ne suis pas sûr que ça ait beaucoup changé depuis.

  11. #51
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Citation Envoyé par DesignFirst Voir le message
    es templates rare sont ceux qui utilisent leur vrai puissance, en général on 'a l'impression que c'est utilisé que pour éviter le copier/coller mais non comme paradigme qui apporte une autre manière de concevoir comme le polymorphisme statique.
    J'ai bien aimé ta remarque sur le copier coller. D'abord, on peut tout à fait remplacer les templates par du copier coller et quelques adaptations à la main. Même si cela est utilisé pour faire du polymorphisme statique (j'aime pas bien ce terme, je suppose que tu entends par la des mécanismes comme les polices).

    Le principe même de la template, c'est la métaprogrammation, c'est a dire programmer des choses qui vont générer du code. Code qui peut TOUJOURS être généré à la main plutôt que par l'usage de templates.

    1/ Si tu as besoin de faire un copier coller quelque part, c'est que ta conception est foireuse. Faire un copier coller est un erreur pour diverses raisons, la principale étant qu'un bug dans ladite partie deviendra tout simplement une horreur à corriger.
    2/ En prenant le problème dans l'autre sens, tu verras que la plupars des outils qu'on à en programmation sont divers moyens d'éviter le copier/coller. Tu peux très bien n'écrire aucune fonctions et faire du copier coller de leur contenu à tous vas. Tu peux inclure tes en-têtes à la main par copier/coller plus que d'utiliser le préprocesseur, etc . . .

    Je crois, à la vus de ces éléments, que ta remarque n'a strictement aucun sens.

    Il y avait des arguments plus pertinents sur le sujet (ne pas publier le code par exemple d'une lib, si on utilise les templates - contraintes de taille de l'exécutable, etc . . .) mais je ne crois pas qu'ils s'appliquent a ton cas.

  12. #52
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Citation Envoyé par deadalnix Voir le message
    Même si cela est utilisé pour faire du polymorphisme statique (j'aime pas bien ce terme, je suppose que tu entends par la des mécanismes comme les polices).
    le terme de polymorphisme statique c'est pas moi qui l'a inventer malheureusement , ce terme est utiliser par tout les experts et guru c++ qui utilisent comme il faut les templates a commencer par Alexander Stepanov.

    Je ne suis pas assez fort pour t'expliquer très bien ce concept, il suffit de chercher sur google "template Static polymorphism" et tu sera étonné par le nombre d'articles sur ce sujet.

    Citation Envoyé par deadalnix Voir le message
    Je crois, à la vus de ces éléments, que ta remarque n'a strictement aucun sens.
    C'est justement l'objet de ma remarque,la plupart de ceux qui font du C++ ne savent même pas la vrai puissance des templates, on croit que c'est juste pour éviter un code répétitif.

    avec la programmation générique on peut faire la conception avec une vision différente du POO avec l'utilisation du polymorphisme statique, traits, type erasure,..

    Malheureusement les enseignants ne montre pas aux étudiants que la programmation générique n'est pas une simple question de limiter la duplication du code mais représente une autre manière de concevoir.

    Donc finalement l'argument récurrent comme quoi C++ est puissant parce qu'il est multi paradigme est a revoir, c'est vrai si les développeurs maitrisent ces différentes possibilités comme il faut, sinon ça devient un grand inconvénient au lieu que ça soit un avantage.

  13. #53
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par DesignFirst Voir le message
    <snip>

    Malheureusement les enseignants ne montre pas aux étudiants que la programmation générique n'est pas une simple question de limiter la duplication du code mais représente une autre manière de concevoir.

    Donc finalement l'argument récurrent comme quoi C++ est puissant parce qu'il est multi paradigme est a revoir, c'est vrai si les développeurs maitrisent ces différentes possibilités comme il faut, sinon ça devient un grand inconvénient au lieu que ça soit un avantage.
    Le problème n'est pas vraiment qu'un langage supporte plusieurs paradigmes ou non (quoi qu'il est tout à fait vrai qu'un langage multi paradigme présente, indéniablement, des avantages certains par rapport à d'autres langages mono paradigmes), le problème vient, trop souvent, de l'impression, tout à fait fausse, qu'ont les gens qu'il suffit de connaitre la syntaxe d'un langage et de trouver l'outil (compilateur, interpréteur, machine virtuel + EDI) pour être en mesure de programmer...

    Combien de débutants (autodidactes ou étudiants en informatique) -- ou de gens étalant volontiers de l'expérience, d'ailleurs -- se jettent sur leur clavier et se mettent à vomir du code sans avoir la moindre idée de la logique qu'ils devront mettre en oeuvre

    Combien de lignes de code utilisant une logique abracadabrante et aberrante par manque d'analyse préliminaires

    Combien de fois rencontre-t-on des héritages qui n'ont vraiment pas lieu d'être ou des projets présentant de réels problèmes de conception

    Ce que je souhaite te faire comprendre, c'est que tous les paradigmes ne sont utiles que si tu es, effectivement, en mesure de les utiliser correctement, à bon escient et d'en tirer le meilleur parti.

    Bien sur, on remarque une certaine évolution de la complexité dans les différents paradigmes: le séquentiel présente une complexité moindre que l'OO qui présente, lui-même, une complexité moindre que le générique, et c'est normal...

    Bien sur, le paradigme générique ne montre toute sa puissance que s'il est manipulé par des gens qui le maitrisent, mais l'OO est strictement pareil:

    il te serait tout à fait impossible de concevoir quelque chose en respectant le paradigme OO sans maitriser les mécanismes d'héritage et de polymorphismes, simplement... parce que cela fait partie intégrante du paradigme...

    De plus, même si, comme tu le dis, l'utilisation de la généricité n'a pour seul but que d'éviter la duplication de code, c'est déjà un avantage certain: cela permet dores et déjà d'éviter les inévitables erreurs liées à la duplication, même (et surtout ) si elle est effectuée à coup de copier / coller...

    Tu as surement eu l'occasion de constater tous les problèmes qui peuvent apparaitre lors d'un copier / coller, simplement parce que l'on n'aura oublié de renommer a en var_a ou parce que l'on aura oublié de modifier le type d'une variable int en long long ou en double dans le code dupliqué...

    Cet avantage est, effectivement, à des années lumières de ceux que l'on peut tirer de l'utilisation des trait de caractères, polices et autres joyeusetés, mais c'en est déjà un...

    Ensuite, il y a le problème spécifique à l'enseignement, mais, en toute honnêteté, pourrais tu me donner une proportion correcte du nombre de profs de C++ (ou de n'importe quel autre langage) qui le maitrisent eux-même ... Elle n'est, AMHA pas très élevée

    Or, comment voudrais tu, en dehors de l'intérêt personnel qu'un élève peut éprouver pour un langage donné (car c'est valable pour d'autres), qu'il apprenne à maitriser un langage si... son "référant" ne le maitrise pas lui-même, ou pire, s'il ne le considère lui-même que comme une "évolution" d'un autre langage (que le référant maitrise peut être d'avantage), sur lequel il base sa méthode d'apprentissage

    Pire encore, quand on sait qu'il est possible d'"apprendre" un langage en quelques mois mais qu'on le maitrise en quelques années (dont un certain nombre passé à le confronter à la réalité de la dure vie), comment voudrais tu envisager un enseignement qui permette d'acquérir cette maitrise
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  14. #54
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Citation Envoyé par koala01 Voir le message

    Ce que je souhaite te faire comprendre, c'est que tous les paradigmes ne sont utiles que si tu es, effectivement, en mesure de les utiliser correctement, à bon escient et d'en tirer le meilleur parti.
    C'est exactement ce que j'ai mentionné a 2 reprises avant, il faut bien comprendre les concepts de C++ avant d'en tirer parti de sa puissance, mais il y a énormément de raisons qui font que l'étudiant apprend juste a coder, coder et coder.

    Et la spécificité de C++ par rapport a d'autres langages c'est qu'il faut comprendre ces mecanismes et ces concepts avant de coder bêtement , vu sa richesse.

    Et ma réserve pour le multi paradigme est surtout qu'il devient un argument préféré des évangélistes de C++ , sans prendre en compte que mal comprendre cette puissance , on peut avoir l'effet inverse.

  15. #55
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Et la spécificité de C++ par rapport a d'autres langages c'est qu'il faut comprendre ces mecanismes et ces concepts avant de coder bêtement , vu sa richesse.
    C'est là que tu loupes un truc. C'est le cas pour tous les langages.

  16. #56
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    C'est là que tu loupes un truc. C'est le cas pour tous les langages.
    Ça aussi c'est un argument préféré des évangélistes C++

    les langages ne sont pas pareil, il y en a ceux qui sont plus riche que d'autres , par exemple C++ et parmi les langages les plus riches, donc il faut être plus vigilant par rapport a d'autres langages qui te limite les possibilités et te cadre.

  17. #57
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par DesignFirst Voir le message
    les langages ne sont pas pareil, il y en a ceux qui sont plus riche que d'autres , par exemple C++ et parmi les langages les plus riches, donc il faut être plus vigilant par rapport a d'autres langages qui te limite les possibilités et te cadre.
    Ah, ca va de soi...

    Mais, à coté de cela, si les gens prenaient la peine de s'intéresser en priorité aux différents aspects de différents paradigmes, et de les connaitre en tout cas suffisamment pour ne pas faire de conneries manifestes, le besoin de langages limités et encadrés se ferait beaucoup moins sentir...

    Or, c'est là que se trouve réellement le gros du problème: les gens s'imaginent qu'il doit être facile de coder (que ce soit en HTML, PHP ou dans un langage de programmation) parce qu'ils savent utiliser correctement (voire de manière plus ou moins avancée) word ou excell...

    Et, quand ce n'est pas le cas, il s'imaginent que le plus dur est l'apprentissage du langage: après tout, ils ont appris "tellement facilement" l'anglais ou l'italien, apprendre le C++ ne devrait pas poser de problème...

    Sauf que, dans les deux cas, le fait de connaitre C++ (ou java, ou C# ou n'importe quel langage de programmation / de script) ne représente qu'une petite partie des problèmes auxquels nous sommes confrontés en programmatiion... La grosse difficulté résidant dans... la conception... qui devrait intervenir bien avant d'écrire la première ligne de code...

    A l'extrême limite, une personne qui maitrise la théorie relative à l'un ou l'autre des paradigmes envisagés "classique" (OO ou procédural) sera bien plus en mesure de fournir quelque facilement et rapidement chose qui "tient la route" avec un langage qu'il doit apprendre pour le but particulier du projet qu'un crack dans un langage donné qui n'a aucune connaissance de la théorie propre au(x) paradigme(s) mis en oeuvre par le dit langage.

    C'est très bien de savoir qu'il est possible d'utiliser for(), while() ou do while() pour une boucle, mais si l'on ne sait pas, à la base, déterminer quel type de boucle est préférable ou comment transformer l'un en l'autre, on ne saura jamais les utiliser correctement
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  18. #58
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Sauf que, dans les deux cas, le fait de connaitre C++ (ou java, ou C# ou n'importe quel langage de programmation / de script) ne représente qu'une petite partie des problèmes auxquels nous sommes confrontés en programmatiion... La grosse difficulté résidant dans... la conception... qui devrait intervenir bien avant d'écrire la première ligne de code...
    Tout a fait d'accord, d'ailleurs je me suis enregistrer sur ce forum juste pour répondre a l'étudiant et j'ai fais exprès que mon nom soit "DesignFirst"

    Et ma première intervention était justement ce que tu viens de dire, prendre du temps pour concevoir ça facilitera pas mal de choses.

  19. #59
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    Hum, y a pas les generics en java ?
    Je veux pas dire, mais ce qui distingue les langages, c'est pas le multi-paradigme (beaucoup en ont plusieurs)... Mais plus les possibilité offertes dans chacun.

    Le C++ offre/va offrir un très gros support de la méta-programmation. Mais comme pour java, rien oblige son utilisation... Et cela ne nuira pas au performance d'un programme.

    Ce qui me semble intéressant, ce sont les possibilité offerte par le C++. Rien interdit de se mettre des limitations. D'ailleurs, j'en connais ici qui programme beaucoup en idiot-proof only d'un point de vue externe, tout en faisant "ce qu'il veulent" en interne. Mais là encore, c'est un choix, et en rien une obligation. On pourrait tout aussi bien utiliser quelconque bibliothèque pour faire tout faire "comme dans java". L'inverse est toutefois beaucoup plus difficile :p !

    [Parenthèse]
    La programmation procédural, y a rien de plus instinctif au niveau local...

    La programmation objet jouit quant à elle d'une relativement instinctive conception global, fournissant des objets et des liens entre eux "comme en vrai".

    La méta-programmation n'a rien d'instinctif. En plus, elle est d'une farouche complexité verbale et mentale oO.

  20. #60
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    La méta-programmation n'a rien d'instinctif. En plus, elle est d'une farouche complexité verbale et mentale
    J'imagine qu'elle est plus instinctive a ceux qui essaient de faire de l'abstraction de concept (des gens a fond dans la philosophie?) que d'autres.

    Personellement je pense que la metaprogrammation en C++ gagnerai a être plus "lisible". La syntaxe joue certainement énormément sur l'idée de complexité qu'on se fait de la metaprogrammation (les autres languages s'en inspirant, ce qui n'aide pas des masses).

    Je dis ça sans être spécialiste dans le domaine cela dit, personnellement je cultive une crainte respectueuse (et saine je pense) de la metaprogrammation et ne l'utilise que quand ça me parait la solution la plus immediatement efficace a mon problème courant. (je me méfie des utilisations de bazooka a courte distance de la cible...)

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Communication entre deux programmes Java. http ? Rmi ? WS ? Autres ?
    Par tiboudchou dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 26/03/2009, 12h50
  2. Comment tuer un java.exe individuellement des autres ?
    Par Battosaiii dans le forum Windows XP
    Réponses: 3
    Dernier message: 18/11/2008, 09h43
  3. Réponses: 13
    Dernier message: 27/02/2008, 16h01
  4. Générer une classe java à partir d'une autre
    Par hebmaster dans le forum Général Java
    Réponses: 5
    Dernier message: 29/05/2006, 16h09
  5. appel d'une class java en javascript ou autre
    Par tit_oune dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2006, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo