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

Affichage des résultats du sondage: Quelles sont les difficultés majeures qui bloquent l'apprentissage du C++ en 2012

Votants
106. Vous ne pouvez pas participer à ce sondage.
  • La qualité de l'enseignement du C++

    60 56,60%
  • La gestion bas niveau de la mémoire

    24 22,64%
  • L'absence de mécanisme de protection (garbage collector)

    16 15,09%
  • Une syntaxe trop complexe

    26 24,53%
  • Pas assez de fonctionnalités dans le langage de base (IHM)

    29 27,36%
  • Trop d'outils ou de bibliothèques externes

    16 15,09%
  • Des abstractions haut niveau trop complexes (template)

    18 16,98%
  • L'évolution trop lente du langage et le retard qu'il a pris

    21 19,81%
  • Le manque de portabilité du C++

    7 6,60%
  • Un système de compilation beaucoup trop complexe

    32 30,19%
  • Les messages d'erreurs incompréhensibles

    47 44,34%
  • Le manque de ressources pour l'apprentissage

    14 13,21%
Sondage à choix multiple
C++ Discussion :

Le C++, un langage orienté débutant ! [Débat]


Sujet :

C++

  1. #41
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 832
    Points : 2 625
    Points
    2 625
    Par défaut
    Citation Envoyé par Bktero Voir le message
    J'ai eu envie de cocher toutes les réponses également, je ne l'ai pas fait car je me suis aperçu ces derniers temps que je ne connaissais pas ce langage, au final.

    J'ai (réellement) appris la programmation avec le C. Logique pour un étudiant en électronique et info industrielle. Et puis un beau jour, on a eu un cours de C++. Pardon : de C avec classes ! En réalité, ce cours était un cours de POO et le prof avait décidé d'utiliser le C++ pour montrer ce qu'est une classe. C'était pratique puisque ses élèves connaissaient le C et donc n'étaient pas perdus par la syntaxe.

    Ayant un bon niveau en C, connaissant le principe des classes, je pensais pouvoir écrire C/C++ sur mon CV, en tout bonne fois. Mais depuis quelques mois, je lis de temps en temps des sujets C++ sur Developpez.com et je ne comprends rien ! Mais rien de rien ! J'ai découvert il y a peu la STL et les vectors en faisant un code en Qt à la maison. Mais pourquoi on ne m'avait jamais parlé de ces vectors et de la STL ?? POURQUOI ???


    Pour aller au delà de l'enseignement, je pense que l'intérêt de C++ pour la plupart des gens est limité. C++ est comme C : un langage où tout (ou presque) est à la charge du développeur. Cela permet de faire des applications ultra personnalisables, optimisables, maitrisées. Le soucis pour moi est qu'on retrouve les problèmes du C : compilation parfois lourde, problème de portabilité, évolution relativement lente (comparé à Java ?).

    J'ai aussi l'impression que, comme tout est à faire, il n'y a du coup rien de tout fait, prêt à l'emploi. Comme je l'ai dit, je ne connais pas la STL et c'est peut-être qu'une impression, mais je ne dois pas être le seul à l'avoir.

    Je compare avec d'autres langages :
    1) J'ai utilisé Java au boulot, alors que je n'y connaissais rien. La puissance de la Javadoc et des milliers de classes incluses dans le JDK font que tu peux coder rapidement des applications relativement complexes, sans faire appel à des lib externes. Cela attire plus qu'un langage CIY (Code It Yourself ^^).
    2) J'apprends Python en ce moment et ce langage est simple et souple. J'aime la rigueur des langages compilés mais il est vraiment que pour faire des petites applications, un développeur amateur ou un pro souhaitant faire un outil perso, se tournera plus facilement vers Python que vers C++.


    Enfin, de ma courte expérience professionnelle, je pense qu'il est plus simple de dire à un mec "tiens, tu connais pas, mais tu vas faire du Java" que de lui dire la même chose avec C++. Java est à la mode, Java ça a l'air cool, Java c'est portable, nianianiania. J'ai travaillé sur des projets où personne ne maitrisait vraiment les technos utilisées (vive les SSII) alors on utilise des technologies "simples". On remplace des applications en C / C++ (certes rapides mais difficiles à maintenir) par des applications en Talend Open Studio (moins rapides mais beaucoup plus simples à prendre en main).



    Je ne vois pas C++ comme un langage à utiliser à tout va. Tu utilises ce langage quand tu sais pourquoi tu en as besoin. Pour cette raison, je ne vois pas C++ devenir un langage "grand public" que tout le monde aura envie d'apprendre.
    En effet, on sens que tu n'utilise pas la STL.
    Je suis en train de refaire un logiciel de dessin vectoriel open source sur mon temps libre, en C++. (autoREALM pour les connaisseurs, et le mot refaire serait idéalement complété par "from scratch", "traduction du delphi", et "tentative de conception soignée".)
    En utilisant la STL, la fonction la plus grosse pèse 40 lignes, je n'ai fait, (et ne ferait probablement), aucun algo genre algo de tri.
    Je n'ai aucune gestion de la mémoire, les seuls pointeurs que j'utilise sont la a des fins de polymorphisme. Encapsulé dans ces très confortable unique_ptr d'ailleurs (et la lecture de GotW 102 me fait penser qu'il va falloir que je corrige quelques lignes).
    Il n'y a aucun tableau statique.

    Pour le dessin à l'écran, je fais comme tout le monde, j'utilise des librairies: openGL pour le rendu, et un framework d'IHM (wxWidgets dans ce cas précis) pour les fenêtres. Pour ce qui concerne les fichiers de config, je fais mumuse avec boost::filesystem.
    Je suis extrêmement loin du CIY comme tu dis. Limite je ne refais quasiment rien.

    Comment ça se fait que des librairies permettent cette flexibilité et la transparence qui rend le code tout de même simple à lire? Très simple:
    _ template
    _ surcharge d'opérateur (que java ne propose pas, au passage, donc pour moi java est bien intuitif pour faire des tableaux dynamiques que le C++)

    Mais je t'accorde que les gens voient souvent le côté "démerdes-toi" de C++. Il faut admettre que si on veut, on peut tout refaire à la main, mais moi, je suis flemmard, je réutilise la roue que les autres ont inventés. Et quand je n'aime pas la couleur de cette roue, plutôt que de la refaire, je l'enrobe. (je pense au système de menus de wxWidgets la, qui est selon moi assez foireux pour faire un truc dynamique)

    Vu que le C++ est multi paradigme, c'est tout le contraire du DIY.
    Avec la programmation générique, on peut réutiliser énormément de code.
    Avec la programmation impérative fonctionnelle, on peut réutiliser les bibliothèques C, qui sont quand même très puissantes.
    Avec la programmation impérative objet, on peut enrober le code générique, fonctionnel, et bas niveau dans des classes qui seront simples comme bonjour à utiliser.

    Et j'aimerai beaucoup qu'on me dise en quoi C++ n'est pas portable?
    En tout cas, wikipedia n'est pas d'accord avec ceux qui l'affirment:
    C fut choisi parce qu'il est rapide, portable et d'usage général. En outre, il était une bonne base pour le principe original et fondateur de C++ : « vous ne payez pas pour ce que vous n'utilisez pas ». Dès le départ, le langage ajoutait à C la notion de classe (avec encapsulation des données), de classe dérivée, de vérification des types renforcés (typage fort), d'« inlining », et d'argument par défaut.
    Je rappelle au passage, que portable, ça veut pas dire qu'il n'y a pas besoin de recompiler. Ca veut dire qu'après compilation, ça peut marcher partout, nuance. C++, étant héritier de C, est aussi portable que celui-ci.

    C'est d'ailleurs sûrement pour ça qu'il n'y a pas d'IHM de base dans le standard, parce que les IHM, il n'y a rien de moins de portable.
    Pas convaincu par ça? Qt ré-implémente les fonctions dont il a besoin, les IHM de microsoft ne fonctionnent que sur windows, et encore, ça dépend de la version, wxWidgets est bourré de #ifdef, java ré-implémente dans un framework à la façon de Qt, et un autre framework utilise la technique de wxWidgets.
    Et de toute façon, une fenêtre ne sera pas la même selon l'écran, alors que je vois beaucoup de code qui précisent les coordonnées des fenêtres/composants en dur. Je pense que c'est dû aux RAD d'ailleurs...
    Ce genre de choses qui font que les logiciels sont pénibles à utiliser sur des netbook car les fenêtres sont sur-dimensionnées, j'ai constaté qu'on ne les retrouve pas avec les logiciels qui utilisent ncurses (genre, aptitude pour les débianeux, ncmpcpp pour les utilisateurs de mpd, lynx... et beaucoup d'autres)

    Le C++ est effectivement issu du C, mais s'il a pris une orientation qui lui permet de garder les avantages du C, il a aussi évolué pour ajouter des fonctionnalités.
    Bon, il y a quelques pertes... Par exemple, mieux vaut prendre l'habitude d'utiliser "++i" au lieu de "i++", histoire de pas le faire pour les objets (pour un int, c'est pas grave, mais pour un itérateur on crée/détruit une copie pour rien. Juste un problème de performances, pas de bug.)
    Mais quelques pertes qui ne sont rien quand on peut reléguer la gestion de la RAM au plus profond de son programme.

    Je fais peut-être le fanatique, mais je ne vois pas ce que C++ ne peux pas faire face a des langages plus récents... Ah, si, il n'est pas réflexif.
    Le reste, de dire que les langages gèrent les IHM, c'est faux. Ce sont les librairies standard de ces langages qui font ça.

    Au sujet de la javadoc, GCC utilise doxygen. WxWidgets, et Qt aussi. Javadoc n'est pas un argument recevable, pour moi. Au passage, je trouve la javadoc d'oracle plutôt crade pour s'y retrouver. Ca a dû être organisé à une époque, mais la... (je me suis servi récemment de java en cours, et je me suis pas contenté des miettes que le prof donnait, ce qui m'a encore valu de me faire taper sur les doigts parce qu'en faisais plus que ce qu'il demandait, en moins de lignes de code. Du coup, pour brider mon code, j'ai ajouté un flag genre ifdef... j'ai honte de brider mon code mais bon, c'était ce qui était demandé...)

    Les milliers de classes java, je trouve que ça fait trop fouillis.
    Tout ça dans le standard? A quoi doit-on se référer du coup? Standard C++ est peut-être complexe, mais l'api est maîtrisable. JAva, j'en doute. D'autant plus quand ça fait doublon. C'est quoi la différence entre Array et Vector en java d'ailleurs? Bon, je suppose que c'est une question d'habitude ou de culture:
    Le dev C++ va voir son standard pour les algorithmes les plus commun seulement (tri, aléatoire, trouver une occurrence, extraire une partie de conteneur...), et pour les interactions avec le système va voir l'API du système.
    Le dev java va voir son standard pour tout, mais du coup a moins de choix en terme de conception de l'outil qu'il va utiliser.

  2. #42
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut
    Je me souviens lorsque j'ai commencé le C++, je trouvais ce langage très compliqué.

    En grande partie car pour bien le manier, il est nécessaire d'avoir une vision d'ensemble de l'informatique. C'est à dire de la gestion de la mémoire mais aussi le développement orienté objet.

    Après lorsqu'on commence les templates, on est vraiment perdu surtout lorsqu'on a une erreur de compilation avec un message incompréhensible.

    De plus lorsque j'étais étudiant en informatique, je n'ai connu dans mon cursus qu'un seul professeur assez doué pour l'enseigner car il avait pris le temps de lire les ouvrages de référence et il utilisait le langage quotidiennement.

    Pour moi les plus gros reproches qu'on peut faire au C++ :

    - Écriture cabalistique ( le C# est beaucoup plus clair exemple : & / ref et les templates)

    - La STL trop pauvre en fonctionnalités et dur à utiliser (foncteur, prédicat)

    - Aucun framework officiel ( on a surtout du bas niveau )

    - Aucun IDE qui gère le c++ aussi bien qu'éclipse en Java ou visual studio pour le C#. Pourquoi les IDE C++ ne permettent pas une bonne auto complétion ? De pouvoir modifier un header quand on ajoute une fonction dans le cpp ou l'inverse ? L'écriture de la documentation de manière intégré ?

    - Trop de choses sont implicites et nécessites d'être connu (exemple : constructeur implicite à 1 paramètre )

    Il manque une option de compilation pour expliciter toutes les opérations implicite. Par exemple, on lui donnerait un cpp avec du code, il en génère un nouveau ou on peut voir l'appel des operators ou les cast faits. Ca permettrait de mieux comprendre le code qui est généré et les comportements parfois étranges.

    - La norme qui laisse trop de largesse aux éditeurs de compilateur. Exemple : Les fonctions inlines où chaque compilateur à sa politique sur le est-ce qu'on inline ou non la fonction. Ou encore la taille en octet des types qui n'est pas imposés ce qui entraîne la redéfinition dans chaque API de type comme UINT32, INT16 etc ...

    - Il y a aussi un lourd passif d'API indigestes (les API Microsoft ^^) dur à utiliser avec des redéfinition de Type dans tous les sens.

    - Des ressources surtout en anglais.

    Le dernier point est la compatibilité avec le C qui donne de mauvaises habitudes aux débutants (utilisation de char*, de atoi, malloc etc ....)

  3. #43
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 832
    Points : 2 625
    Points
    2 625
    Par défaut
    Juste pour les UINT & co, je t'encourage à lire le fichier stdint.h

    http://en.wikipedia.org/wiki/Stdint.h#stdint.h

    Bien sûr, vu qu'il fait partie de la norme C99 (C++ aussi l'intègre normalement), tous les compilateurs ne le prennent pas en charge... Notamment visual C++.

    Par contre, peut-on taper sur un langage quand un fichu compilateur refuse de la respecter?
    Parce que dans ce cas, ça reviens a dire que HTML 4 c'est de la merde, puis que microsoft refusais de la respecter pendant pas mal de temps.

    Bon, je crois aussi avoir plus ou moins compris que certaines choses étaient abusivement difficiles à implémenter par rapport à l'utilité dans cette norme, mais sur le coup des entiers, c'est pas comme si c'était difficile.

  4. #44
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    En effet, on sens que tu n'utilise pas la STL.
    Je suis en train de refaire un logiciel de dessin vectoriel open source sur mon temps libre, en C++. (autoREALM pour les connaisseurs, et le mot refaire serait idéalement complété par "from scratch", "traduction du delphi", et "tentative de conception soignée".)
    En utilisant la STL, la fonction la plus grosse pèse 40 lignes, je n'ai fait, (et ne ferait probablement), aucun algo genre algo de tri.
    Je n'ai aucune gestion de la mémoire, les seuls pointeurs que j'utilise sont la a des fins de polymorphisme. Encapsulé dans ces très confortable unique_ptr d'ailleurs (et la lecture de GotW 102 me fait penser qu'il va falloir que je corrige quelques lignes).
    Il n'y a aucun tableau statique.

    Pour le dessin à l'écran, je fais comme tout le monde, j'utilise des librairies: openGL pour le rendu, et un framework d'IHM (wxWidgets dans ce cas précis) pour les fenêtres. Pour ce qui concerne les fichiers de config, je fais mumuse avec boost::filesystem.
    Je suis extrêmement loin du CIY comme tu dis. Limite je ne refais quasiment rien.
    Quand je lis ça, je suis dégoûté et encore plus énervé comme les cours bidons que j'ai eu en école. Je m'aperçois au fil des mes lectures sur Developpez, et ton commentaire particulièrement, que je passe à côté de à côté de ce langage à cause de cette méconnaissance ! Oui, monsieur, je suis pas content

    Pour la portabilité, je parle surtout pour ma connaissance du C ; et si C++ en hérite, il doit lui aussi poser quelques problèmes. Plus que dire "C(++) n'est pas portable", je dirais que "C(++) n'est pas immédiatement portable et la portabilité exige de la rigueur". Il y a aussi des dépendances vis à vis des compilateurs, de part les zones non définies par la norme. Je reste toutefois d'accord avec toi, il est portable (ce n'est pas de l'Objective C non plus), je faisais l'abus "code portable = exécutable portable (sans recompilation)".

    Pour les IHM, tout à fait d'accord avec toi !

    La Javadoc pas un argument recevable ? On peut discuter effectivement de sa qualité et son caractère unique qui en ferait un gros plus par rapport à d'autres langages. Effectivement, la doc de Qt est bien faite ; je travaille pas mal avec la documentation de Python qui est bien elle aussi. Mais dés que je repasse sur du C, je me farcis les page de man, bien moins marrantes pour naviguer et explorer les fonctionnalités.



    - Aucun framework officiel ( on a surtout du bas niveau )
    La norme C++ ? Avec les problèmes de comportements indéfinis dont tu parles plus loin, certes. Mais c'est ce qui permet de faire du C++ un peu partout, même sur des micro-contrôleurs.

    éclipse en Java ou visual studio pour le C#
    1) Difficile d'accuser l'équipe d'avoir fait un IDE trop efficace pour Java ^^
    2) Langage propriétaire, IDE dédié, ce n'est pas la même approche.

  5. #45
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Quand je lis ça, je suis dégoûté et encore plus énervé comme les cours bidons que j'ai eu en école. Je m'aperçois au fil des mes lectures sur Developpez, et ton commentaire particulièrement, que je passe à côté de à côté de ce langage à cause de cette méconnaissance ! Oui, monsieur, je suis pas content
    Et tu as de quoi...

    Ce sont d'ailleurs exactement les même raisons qui font que les dev C++ ne sont pas contents, de manière générale, de l'enseignement qui en est fait
    Pour la portabilité, je parle surtout pour ma connaissance du C ; et si C++ en hérite, il doit lui aussi poser quelques problèmes. Plus que dire "C(++) n'est pas portable", je dirais que "C(++) n'est pas immédiatement portable et la portabilité exige de la rigueur". Il y a aussi des dépendances vis à vis des compilateurs, de part les zones non définies par la norme. Je reste toutefois d'accord avec toi, il est portable (ce n'est pas de l'Objective C non plus), je faisais l'abus "code portable = exécutable portable (sans recompilation)".
    A ce niveau là, aucun code dans aucun langage ne serait totalement portable

    En effet, si java peut s'utiliser sans avoir à etre recompilé pour une machine donnée, c'est parce qu'il y a la ... machinve virtuelle entre le langage et le processeur et qu'elle, elle a été compilée pour un processeur donné
    La Javadoc pas un argument recevable ? On peut discuter effectivement de sa qualité et son caractère unique qui en ferait un gros plus par rapport à d'autres langages. Effectivement, la doc de Qt est bien faite ; je travaille pas mal avec la documentation de Python qui est bien elle aussi. Mais dés que je repasse sur du C, je me farcis les page de man, bien moins marrantes pour naviguer et explorer les fonctionnalités.
    Attention!!!

    Javadoc, c'est comme doxygen ou comm latex: ce n'est qu'un outil qui impose une certaine syntaxe pour des commentaires pour qu'il soit pris en compte lors de leur regroupement au sein d'un format "structuré"

    On peut, effectivement, reprocher à C de n'avoir jamais évolué vers une prise en compte du format HTML dans la génération de sa documentation, mais, encore une fois, C n'est pas C++, et c'est un reproche que l'on ne doit pas faire peser sur le langage en lui-même, mais bien sur l'équipe (de manière générale) qui maintient le suppport du langage dans une collection d'outil donnée
    1) Difficile d'accuser l'équipe d'avoir fait un IDE trop efficace pour Java ^^
    2) Langage propriétaire, IDE dédié, ce n'est pas la même approche.
    Je crois qu'on peut, effectivement, reprocher à C++ le fait qu'il est très difficile de mettre un système efficace d'auto complétion ou de refactoring...

    Le fait est que je ne connais pas énormément de langages qui aillent aussi loin que C++ dans le support du multi paradigme:

    Java, C# ou Ada sont exclusivement OO, ce qui limite fatalement la complexité au niveau du parsing alors que le fait que C++ intègre finalement très fortement le paradigme impératif, le paradigme OO et le paradigme générique rend, effectivement, le parsing beaucoup plus compliqué à effectuer.

    Cependant, certains outils font franchement pas mal (je pense, entre autres, à Visual Assit, sous visual studio) en terme de parsing et d'aide à la refactorisation

    Et j'ai envie de dire que ces outils sont bel et bien la preuve qu'il est possible de mettre des outils de refactorisation corrects au point pour C++... Ne manque peut etre que l'envie (ou la compétence ) des gens qui créent des outils pour C++
    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

  6. #46
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par Freem Voir le message

    http://en.wikipedia.org/wiki/Stdint.h#stdint.h

    Bien sûr, vu qu'il fait partie de la norme C99 (C++ aussi l'intègre normalement), tous les compilateurs ne le prennent pas en charge... Notamment visual C++.

    Merci pour l'information, je ne connaissais pas les int_fastN_t etc ...
    Ma phrase faisait surtout référence à ma lecture de "Le langage C++ (édition 3.5)" de B.Stroustrup où dans une partie il explique comment la norme définie la taille des types les un par rapport aux autres en fonction de la longueur d'un char.

    Extrait tiré du livre : 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

    J'ai trouvé cette définition bien laxiste car donnant pour un même code, des résultats pouvant être différent selon le compilateur.

    Après je trouve qu'être revenu sur un point aussi important, c'est un peu un aveux d'échec.

    Un autre reproche que je ferais au C++ c'est que dans le but de garantir une rétro-compatibilité du code, on garde beaucoup de mot clef qui ne devrait plus être utilisé dans du C++ moderne.

    La norme C++ ? Avec les problèmes de comportements indéfinis dont tu parles plus loin, certes. Mais c'est ce qui permet de faire du C++ un peu partout, même sur des micro-contrôleurs.

    ...

    1) Difficile d'accuser l'équipe d'avoir fait un IDE trop efficace pour Java ^^
    2) Langage propriétaire, IDE dédié, ce n'est pas la même approche.
    Quand je parlais de framework, je pensais plus à un ensemble de bibliothèque plutôt haut niveau (poco, boost) officiel (un peu comme en java ou c#) pour offrir des fonctionnalités de bases pour un développement moderne (IHM, XML, réseau etc ...)

    Concernant les langages, je n'accuse en rien l'équipe d'Eclipse qui à fait un super travail mais en tant que développeur C++, je trouve qu'il serait bien que les Guru du C++ se lancent dans un projet d'IDE tout aussi performant et efficace.

  7. #47
    Membre éclairé
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Points : 879
    Points
    879
    Par défaut
    Je n'ai pas voté, et ne voterai pas, ne trouvant pas le c++ si difficile que ça (une fois les messages d'erreur assimilés, on apprend vite à vaite un " | less" ; même si ce n'est pas particulièrement orienté débutant).

    Je rebondirai surtout sur la notion de portabilité.

    En effet, le c++ possède un compilateur qui permet de partager un même exécutable entre différentes plate-formes -- tant que la "VM" est installée. Ce qui en fait l'égal de Java si on ne regarde que ce point.

    Je nommerai clang++.

    Et je ne pense pas qu'un binaire clang++ soit plus lourd qu'un binaire jvm !

    Et, pour le monsieur du dessus, quelles fonctionnalités attends-tu d'un IDE ? Personnellement, j'ai vim, il est personnalisé comme je le préfère, et je n'ai rien de plus à lui demander ... Donc ?

  8. #48
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Javadoc, c'est comme doxygen ou comm latex: ce n'est qu'un outil qui impose une certaine syntaxe pour des commentaires pour qu'il soit pris en compte lors de leur regroupement au sein d'un format "structuré"
    Je suis désolé, en fait je ne parlais de la documentation que tu peux générer avec ton code, façon Doxygen, mais ce ça : http://docs.oracle.com/javase/6/docs/api/ Pardon

    Et tu as de quoi...

    Ce sont d'ailleurs exactement les même raisons qui font que les dev C++ ne sont pas contents, de manière générale, de l'enseignement qui en est fait
    Du coup, hier soir en rentrant chez moi, j'ai jeté un oeil sur les principaux éléments de la STL et je me suis dit "ah...... dommage pour moi". Ca m'a remotivé à m'intéresser à ce langage.


    Quand je parlais de framework, je pensais plus à un ensemble de bibliothèque plutôt haut niveau (poco, boost) officiel (un peu comme en java ou c#) pour offrir des fonctionnalités de bases pour un développement moderne (IHM, XML, réseau etc ...)
    Ok, je vois ce que tu veux dire. Il y a Qt comme framework important mais il est vrai qu'il n'a rien d'officiel...


    Personnellement, j'ai vim, il est personnalisé comme je le préfère, et je n'ai rien de plus à lui demander
    As-tu déjà utilisé Eclipse pour Java ?

  9. #49
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Je suis désolé, en fait je ne parlais de la documentation que tu peux générer avec ton code, façon Doxygen, mais ce ça : http://docs.oracle.com/javase/6/docs/api/ Pardon
    Pour ma part j'ai toujours fait avec http://en.cppreference.com/w/ et http://www.cplusplus.com/reference/ qui sont souvent les premiers liens que j'ai via Google.
    Après les docs des différentes lib sont vrament bien faîtes en général (Qt, wxWidget, ...)

    Citation Envoyé par Bktero Voir le message
    As-tu déjà utilisé Eclipse pour Java ?
    Citation Envoyé par Drannor Voir le message
    - Aucun IDE qui gère le c++ aussi bien qu'éclipse en Java ou visual studio pour le C#. Pourquoi les IDE C++ ne permettent pas une bonne auto complétion ? De pouvoir modifier un header quand on ajoute une fonction dans le cpp ou l'inverse ? L'écriture de la documentation de manière intégré ?
    C'est un vrai point noir, mais pour ma part le duo Visual Studio / VisualAssistX je l'ai essayé et adopté !

    Citation Envoyé par Drannor Voir le message
    Pour moi les plus gros reproches qu'on peut faire au C++ :

    - Écriture cabalistique ( le C# est beaucoup plus clair exemple : & / ref et les templates)
    Pourtant cette écriture permet justement de réaliser les opérations que l'on souhaite et évite de se retrouver avec une référence cachée comme c'est souvent le cas en JAVA ou C#.

    Citation Envoyé par Drannor Voir le message
    - La STL trop pauvre en fonctionnalités et dur à utiliser (foncteur, prédicat)
    Dur à utiliser, je ne me prononcerai pas, ça dépend des personnes. Mais pour la pauvreté des fonctionnalités... la STL permet toutes les fonctions simples, portables. La STL ne permettra jamais de créer une fenêtre ou de se connecter à un serveur. Ca dépend beaucoup trop de la machine.

    Citation Envoyé par Drannor Voir le message
    - Aucun framework officiel ( on a surtout du bas niveau )
    Comme ci-dessus, les implémentations dépendent de la machine cible. JAVA a une JVM, C# ne cible que Windows. Dans ces cas-là il est aisé de réaliser un framework aussi "complet" (ou plutôt dirais-je fouilli).
    Mais on se rend vite compte que des frameworks existent en C++ et sont tout aussi puissants et fonctionnels que leurs équivalents JAVA/C#.

    Citation Envoyé par Drannor Voir le message
    - Trop de choses sont implicites et nécessites d'être connu (exemple : constructeur implicite à 1 paramètre )
    Honnêtement, pointer les choses implicites en C++, faut le vouloir.
    La philosophie est pourtant qu'aucun code n'est caché justement ! Ton programme fait exactement (à un poil de cul près allez) ce que tu lui as demandé de faire.
    Après oui, il faut connaître le langage, mais ce genre de cas est normalement assez anecdotique dans une utilisation courante. Si tu y fais face, tu dois les connaître. Mais avant de les rencontrer tu peux évoluer sans t'en soucier amha.

    Citation Envoyé par Drannor Voir le message
    - Des ressources surtout en anglais.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  10. #50
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Je suis désolé, en fait je ne parlais de la documentation que tu peux générer avec ton code, façon Doxygen, mais ce ça : http://docs.oracle.com/javase/6/docs/api/ Pardon
    Mais cette documentation, à ton sens, comment est-elle générée

    Ce n'est qu'un outil qui prend une certaine forme de commentaires en compte pour en extraire le texte et pour le mettre au format HTML

    Si tu prend doxygen et que tu le lances sur ton répertoire include relatif à C++ (et que tu as le courrage d'attendre à peu près deux heures pour que toute la doc soit générée ), tu obtiendra quelque chose proche de ceci...

    Installes en plus graphviz, modifies quelques réglages, et tu auras une documentation strictement identique

    La seule chose que l'on puisse éventuellement reprocher à la doc que tu obtiendras, c'est le fait que la documentation des fonctions / classes ne soit pas aussi systématisée dans les sources de la STL (libstdc++ en l'occurrence) que dans les sources du framework java

    Mais ce n'est absolument pas un problème du au langage: c'est surtout du aux devs à qui on peut effectivement reprocher de n'avoir pas pris correctement en compte la notion de création de documentation
    Du coup, hier soir en rentrant chez moi, j'ai jeté un oeil sur les principaux éléments de la STL et je me suis dit "ah...... dommage pour moi". Ca m'a remotivé à m'intéresser à ce langage.
    On ne peut que s'en réjouir

    Quand je parlais de framework, je pensais plus à un ensemble de bibliothèque plutôt haut niveau (poco, boost) officiel (un peu comme en java ou c#) pour offrir des fonctionnalités de bases pour un développement moderne (IHM, XML, réseau etc ...)
    Ok, je vois ce que tu veux dire. Il y a Qt comme framework important mais il est vrai qu'il n'a rien d'officiel...
    Il y a bien boost dont une grande partie est dores et déjà intégrée dans la bibliothèque standard et qui préfigure ce qui pourrait etre intégré par la suite...

    Pour ce qui est de Qt, il faut savoir que sa philosophie est vraiment tout sauf proche de la philosophie de la bibliothèque standard, et qu'elle souffre réellement du syndrome NIH (Not Implemented Here)

    Par contre, il faut saluer la qualité de ce framework elle reste un candidat de choix dés qu'il s'agit de créer une application de "haut niveau" (comprenez : utilisant, au choix, des thread, des connexions réseau ou une IHM) portable

    Ceci dit...

    Il ne faut pas confondre le langage avec le framework qui tourne autour

    Pour prendre l'exemple de java, par exemple, le terme peut tout aussi bien représenter le langage que le framework qui tourne autour, et cela a quelque chose de normal dans le sens où, sans un framework un minimum évolué "standard" (on se comprend sur le terme quand meme ) il serait impossible de permettre à la JVM de faire son boulot correctement et d'offrir au développeur tout ce qu'il est en droit d'attendre d'un langage.

    C++ peut se permettre de ne fournir qu'un framework "minimaliste", dans le sens où il n'y a aucune dépendance envers une éventuelle machine avec laquelle il faut bien arriver à communiquer

    D'autant plus qu'il existe un nombre considérable de bibliothèques de qualité s'attaquant aux différents problèmes et défis actuels des développeurs

    Je ne suis pas loin de penser qu'il n'est à mon sens pas utile de rajouter une bibliothèque d'IHM dans le framework de base de C++, par contre, s'il était possible de rajouter, en vrac, la gestion de la sérialisation, des threads (bon, ca, c'est fait ), des systèmes de fichiers, d'expressions régulières et deux ou trois autres choses, ce ne serait certainement pas un mal
    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

  11. #51
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Et Qt vous connaissez ?
    Juste pour réagier aux différents messages, j'ai vu les critiques :
    - pas de framework haut niveau
    - documentation peu fournie ou peu accessible
    - problèmes de portabilité
    - syntaxe trop complexe par rapport a Java ou C#
    - pas d'IDE comparable à Eclipse avec autocomplétion et code-refactoring
    etc....

    Je me demandais, si vous étiez tous au courant qu'il existe un super Framework C++, nommé Qt (prononcer kioute, par pitié, pas kiouti ou kuté), qui est accompagné de son IDE dédié, QtCreator, qui possède :
    - un interface sympa et moderne
    - un moteur d'autocomplétion puissant, associé à la documentation dynamique en overlay
    - d'une doc du langage mais aussi des outils, très bien faite (pour moi la meilleure doc d'API que j'ai pu voir à ce jour)
    - un éditeur d'interface graphique (comme le fait VB.net par exemple)
    - intégration de pleni d'outils : git, svn, gdb, valgrind, ...
    - dans le même SDk, un outil de gestion des traductions (QtLinguist)

    De son coté, le langage Qt (je l'appelle langage car il ajoute de paradigmes et des mots clés inexistants en C++ standard, comme les foreach, les signal, les slots, rapprochant énormement de Java) apporte un API claire, très bien structurée et hyper complete (XML, SQL, Http, FTp, socks, GUI, FS, scripts etc)

    De plus, dernierement le projet a été doté d'un langage totalement nouveau, basé sur les technologies qui ont fait le succés de Qt (les meta objets, les signals/slots, etc) et les rend accessible depuis un langage déclaratif très dynamique, adjoint au Javascript, j'ai nommé QML.

    A noter aussi que Qt passe très bientôt en version 5.0, avec des performances et une portabilité très accrue, ainsi que des centaines de nouvelles classes/fonctions.

    Certaines personne devraient doc sortir du terrain C++ STD ou VSC++ avant de comparer le développement en C et celui en C++ qui n'ont plus grand chose a voir aujourd'hui, et avec Qt, C++ possède un framework de très grande qualité qui n'a rien a envie à Java ou CC# (bien au contraire selon moi, les garbage collector et autre types dynamiques ont des abbération inventées pour pouvoir développer sans réfléchir, ce qui n'est franchement pas une bonne chose)

    A bon entendeur !

  12. #52
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut
    Le sujet concerne le C++ et les débutants. Mes réponses vont dans cette optique à savoir qu'est ce qui peut les déranger.

    Citation Envoyé par Bousk Voir le message
    C'est un vrai point noir, mais pour ma part le duo Visual Studio / VisualAssistX je l'ai essayé et adopté !
    1) De même
    2) Visual assist est payant et assez cher
    3) Visual studio & visual assist sont windows only alors que le langage est pour toutes les plateformes
    4) L'écriture de la documentation passe toujours par un outil externe et je doute que beaucoup d'enseignant c++ prennent la peine de faire un cours sur doxygen etc ... alors que des cours de javadoc j'ai bien dû en avoir trois ou quatre (joie ^^)
    5) Un IDE avec la possibilité de faire des test unitaire C++, ce serait bien aussi.

    Citation Envoyé par Bousk Voir le message
    Pourtant cette écriture permet justement de réaliser les opérations que l'on souhaite et évite de se retrouver avec une référence cachée comme c'est souvent le cas en JAVA ou C#.
    Le C++ se veut très succins (un peu comme les mathématiques ) mais cela se payent par une relecture du code pas toujours aisé et un apprentissage assez dur.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template<class T> void maClasse::Foo(T*& param)
    On avouera que c'est pas simple à lire alors que je trouve que le C# a du code bien plus lisible.

    Citation Envoyé par Bousk Voir le message
    Dur à utiliser, je ne me prononcerai pas, ça dépend des personnes. Mais pour la pauvreté des fonctionnalités... la STL permet toutes les fonctions simples, portables. La STL ne permettra jamais de créer une fenêtre ou de se connecter à un serveur. Ca dépend beaucoup trop de la machine.
    Quand on est débutant, la STL c'est complexe. La notion de foncteur et son écriture avec le redéfinition de l'opérateur (), c'est pas quelque chose de trivial.

    Pour la seconde partie de ton argumentaire sur les fenêtre et les serveurs, si des framework comme Qt, Boost, poco etc.. le font c'est que c'est faisable.

    On se souviendra que B.Stroutstrup a avoué les lacunes du langage sur ces points (voir le going native 2012) et a demandé à la communauté de participé à la création d'un framework officiel.

    Citation Envoyé par Bousk Voir le message
    Mais on se rend vite compte que des frameworks existent en C++ et sont tout aussi puissants et fonctionnels que leurs équivalents JAVA/C#.
    Heureusement, mais ils n'ont rien d'officiel et donc leur enseignement passe à la trappe ce qui renfonce l'idée que le C++ est un langage DIY.

    Citation Envoyé par Bousk Voir le message
    Honnêtement, pointer les choses implicites en C++, faut le vouloir.
    La philosophie est pourtant qu'aucun code n'est caché justement ! Ton programme fait exactement (à un poil de cul près allez) ce que tu lui as demandé de faire.
    Quand on est débutant, on ne voit pas tout ce qui est constructeur par copie qui est fait généralement implicitement, les cast fait dans les constructeurs sur les types, les règles bizarres comme celui du constructeur a un paramètre, la redéfinition de type qu'on a oublié de protéger au début avec de multiples include, l'appel fait aux opérateurs, l'existence d'un pointeur sur la vtable qui s'ajoute à ta classe etc ...

    Je trouve qu'il manque un flag pour récupérer le fichier cpp après qu'il soit devenu une compilation unit.

    Quant à la partie sur le documentation, je trouve qu'une doc simple orienté débutant qui expose bien chaque point délicat du c++ en français ça manque.
    Car même si on s'habitue à lire de la documentation en anglais, certain point du langage sont difficiles à comprendre (par exemple les templates) et la barrière de la langue pèse un peu mais ce n'est que mon avis.

  13. #53
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Du coup, hier soir en rentrant chez moi, j'ai jeté un oeil sur les principaux éléments de la STL et je me suis dit "ah...... dommage pour moi". Ca m'a remotivé à m'intéresser à ce langage.
    J'ai vu tes commentaires et je voulais dire que... youuhouuu je ne suis pas le seul !

    Non, sérieusement, j'ai eu exactement le même sentiment que toi à force de passer du temps sur developpez, et je plussoie et te rejoins pour dire que ça fait vraiment chier de passer à coté de ce langage. On sait tous qu'être informaticien, c'est un peu comme être médecin : on aura toujours des trucs à apprendre, et il faudra ce maintenir à flot tous les jours, ne serait-ce que pour maitriser un seul langage (ce serait déjà bien). Alors quand à la sortie des écoles on a déjà un gros retard à combler, ça fait chier quand même...


    A quand la licence/master (ou plutôt le doctorat) en C++ ?!
    Nullius in verba

  14. #54
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par TheBootroo Voir le message
    Juste pour réagier aux différents messages,
    Je me demandais, si vous étiez tous au courant qu'il existe un super Framework C++, nommé Qt (prononcer kioute, par pitié, pas kiouti ou kuté)
    Qt != C++ et ça n'a rien d'officiel comme par exemple la STL.
    Qt existe aussi pour d'autre langage comme python.

  15. #55
    Membre éclairé Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Points : 791
    Points
    791
    Par défaut
    Citation Envoyé par TheBootroo Voir le message
    Juste pour réagier aux différents messages, j'ai vu les critiques :
    - pas de framework haut niveau
    - documentation peu fournie ou peu accessible
    - problèmes de portabilité
    - syntaxe trop complexe par rapport a Java ou C#
    - pas d'IDE comparable à Eclipse avec autocomplétion et code-refactoring
    etc....

    Je me demandais, si vous étiez tous au courant qu'il existe un super Framework C++, nommé Qt (prononcer kioute, par pitié, pas kiouti ou kuté), qui est accompagné de son IDE dédié, QtCreator, qui possède :
    - un interface sympa et moderne
    - un moteur d'autocomplétion puissant, associé à la documentation dynamique en overlay
    - d'une doc du langage mais aussi des outils, très bien faite (pour moi la meilleure doc d'API que j'ai pu voir à ce jour)
    - un éditeur d'interface graphique (comme le fait VB.net par exemple)
    - intégration de pleni d'outils : git, svn, gdb, valgrind, ...
    - dans le même SDk, un outil de gestion des traductions (QtLinguist)

    De son coté, le langage Qt (je l'appelle langage car il ajoute de paradigmes et des mots clés inexistants en C++ standard, comme les foreach, les signal, les slots, rapprochant énormement de Java) apporte un API claire, très bien structurée et hyper complete (XML, SQL, Http, FTp, socks, GUI, FS, scripts etc)

    De plus, dernierement le projet a été doté d'un langage totalement nouveau, basé sur les technologies qui ont fait le succés de Qt (les meta objets, les signals/slots, etc) et les rend accessible depuis un langage déclaratif très dynamique, adjoint au Javascript, j'ai nommé QML.

    A noter aussi que Qt passe très bientôt en version 5.0, avec des performances et une portabilité très accrue, ainsi que des centaines de nouvelles classes/fonctions.

    Certaines personne devraient doc sortir du terrain C++ STD ou VSC++ avant de comparer le développement en C et celui en C++ qui n'ont plus grand chose a voir aujourd'hui, et avec Qt, C++ possède un framework de très grande qualité qui n'a rien a envie à Java ou CC# (bien au contraire selon moi, les garbage collector et autre types dynamiques ont des abbération inventées pour pouvoir développer sans réfléchir, ce qui n'est franchement pas une bonne chose)

    A bon entendeur !
    Personnellement, je fais tout pour éviter de commencer à linker avec des framework de cette taille là (boost idem). Je ne dis pas qu'il faut tout refaire à chaque fois, mais en général, soit on a pas besoin de toutes les fonctionnalités proposées, soit on a des besoin plus spécifiques qui font que l'on va perdre du temps.. (et une troisième catégorie qui a effectivement besoin de ce genre de framework).

    Qt creator est pas mal quoi qu'encore un peu jeune. J'ai essayé eclipse, qui perd carrément son intérêt avec CDT (complétion douteuse, il est vite perdu) et anjouta qui ne m'a pas convaincu. J'ai découvert récemment le combo visual /Visual assist avec la chance d'être avec des gens qui les connaissent sur le bout des doigts, et c'est très agréable.

    Et moi je dis cul té

    Pour revenir au problème de l'enseignement, beaucoup de prof n'enseignent qu'une approche du langage, souvent après une intro à java. Beaucoup d'étudiant prennent alors la décision qu'il ne travailleront pas avec C++.

    Je pense que cet abandon de la part des étudiant contribue aussi à empêcher les profs de créer des programmes fouillés.

    D'après mon expérience, en début de cursus, on nous fait un aperçu de divers langages venant de plein d'horizons différents (j'ai fait de l'asm, du java, du php, du c, du cpp, du python, du prolog... plein de langages pour la plupart juste survolés). Ensuite on se spécialise dans un domaine (web, embarqué, client lourd, temps réel..) où on va plus essayer de comprendre les techniques et les principes plutôt que les subtilités du langage.

    Des langages comme le cpp sont exigeants, et c'est à l'étudiant de faire l'effort et de s'investir dedans. A quoi bon forcer les étudiants avec un programme aussi bon soit-il si 80% d'entre eux s'en foutent royalement et ne bosseront jamais avec?

    Et encore une fois, le langage n'est qu'un outil. Tout le monde peut apprendre à coder. Ce qui va faire la différence c'est l'expérience, l'algorithmie, l'architecture, et les connaissances (maths, physique, biologie... selon le domaine), pas le langage (me sortez pas le coup de l'OS en php svp.. )

  16. #56
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Je réponds en vrac.

    s/STL/SL
    Et je vous trouve mauvaise fois pour Java et les fenêtres. Oui, cela en existe en standard. Mais est-ce la solution préférée ? J'ai souvenir de 3 frameworks de fenêtrage pour Java (hormis Qt jambi), et le dernier à la mode autour de moi est celui d'eclipse et ses RCP. Pas très "standard". Enfin, autant que les commons & cie d'apache pour le Java, ou Boost et Qt pour le C++.


    Pour la doc, il y a en plein de disponibles -- même si ma préférée (dinkumware) a été retirée du web. Mais (c'est marrant j'ai déjà tenu ces mêmes propos sur un autre forum il y a peu), la liste de toutes les fonctions et classes disponibles n'est pas le plus important en C++. On en fait très vite le tour une fois compris les concepts, les itérateurs et les algos. Par contre, le langage en lui même est bien plus exigeant que le Java. On ne se limite pas à la syntaxe. Il y a tous les idiomes qui ne se trouvent pas sur une javadoc. D'ailleurs, je serais très surpris que la javadoc parle de LSP, DIP, LoD, & cie, de comment écrire equals, des paramètres qui sont pris par valeur, etc. Doit-on comprendre que la population Java considère que ces aspects sont inutiles et que seule compte la Javadoc ? J'en doute.

    Pour vim, Ekleog utilise la meilleure suite de plugins disponible (ahem ^^')
    (Merci Ekleog )
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  17. #57
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour à tous et merci de vos interventions

    A plusieurs reprises, le terme "officiel" a été utilisé. J'ai un peu de mal à comprendre l'idée. Ok, vous voulez dire par là qu'il y a un comité qui décide de ce qu'il y aura dans le C++ et un autre comité pour ce qu'il y aura dans Qt (idem avec les autres "gros" frameworks : Boost, WPF, .net,wxWidget, etc.)

    Mais du mal à comprendre pourquoi ça serait un défaut ? Pensez vous que la qualité des ces frameworks est moins bonne que ceux qui sont intégrés directement dans un langage ?

  18. #58
    Membre éclairé Avatar de seeme
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    430
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 430
    Points : 791
    Points
    791
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Bonjour à tous et merci de vos interventions

    A plusieurs reprises, le terme "officiel" a été utilisé. J'ai un peu de mal à comprendre l'idée. Ok, vous voulez dire par là qu'il y a un comité qui décide de ce qu'il y aura dans le C++ et un autre comité pour ce qu'il y aura dans Qt (idem avec les autres "gros" frameworks : Boost, WPF, .net,wxWidget, etc.)

    Mais du mal à comprendre pourquoi ça serait un défaut ? Pensez vous que la qualité des ces frameworks est moins bonne que ceux qui sont intégrés directement dans un langage ?
    Je en sais pas si c'est pertinent pour C++. Il y a le langage et des lib, point. Les libs sont ce qu'elles sont (bonnes, mauvaises, efficaces, bugguées, fiables...).

    Je pense que plus généralement, si quelque chose est intégré/packagé directement avec le langage, plus de gens sont susceptibles de l'utiliser (après tout, tu l'as sur ta machine avec ton compilo et tout ce qu'il te faut, logiquement tu vas l'essayer en premier pour savoir si ça te convient). Donc plus d'utilisateurs, donc plus de remontés donc potentiellement plus stable si le feedback des devs est bon.

  19. #59
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Honnêtement, pointer les choses implicites en C++, faut le vouloir.
    La philosophie est pourtant qu'aucun code n'est caché justement ! Ton programme fait exactement (à un poil de cul près allez) ce que tu lui as demandé de faire.
    Et pourtant à chaud j'en vois plusieurs :
    • Certains casts.
    • Par défaut les constructeurs à un argument définisse implicite un cast.
    • Les variables sont implicitement mutables par défaut.
    • Les types entiers autres que char sont implicitement signés


    Après oui il y a des raisons d'avoir ce comportement, oui sur certains un choix différents auraient été tout aussi implicite à moins d'une syntaxe extrêmement verbeuse (les deux derniers cas).

    Citation Envoyé par koala01 Voir le message
    Pour ce qui est de Qt, il faut savoir que sa philosophie est vraiment tout sauf proche de la philosophie de la bibliothèque standard, et qu'elle souffre réellement du syndrome NIH (Not Implemented Here)
    Ce n'est pas tant du NIH que du "les premières versions datent d'avant l'introduction de ces fonctionnalités dans le standard et il faut maintenant supporté l'historique".

  20. #60
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Bonjour à tous et merci de vos interventions

    A plusieurs reprises, le terme "officiel" a été utilisé. J'ai un peu de mal à comprendre l'idée. Ok, vous voulez dire par là qu'il y a un comité qui décide de ce qu'il y aura dans le C++ et un autre comité pour ce qu'il y aura dans Qt (idem avec les autres "gros" frameworks : Boost, WPF, .net,wxWidget, etc.)

    Mais du mal à comprendre pourquoi ça serait un défaut ? Pensez vous que la qualité des ces frameworks est moins bonne que ceux qui sont intégrés directement dans un langage ?
    C'est exactement ça.
    Quand on pense à JAVA on pense à l'API Java et tout ce qu'elle propose.
    C# rime avec .Net
    C++ avec STL mais pour tout ce qui est plus haut niveau c'est ce qu'on souhaite.

    L’inconvénient c'est que les enseignants que j'ai eu s'arrêtent au package de base : Langage C++ + STL et c'est tout. Du coup, en sortant du cours, on se dit que le C++ pour faire quelque chose de haut niveau ça semble bien plus compliqué qu'en Java ou C# surtout que parfois l'installation de bibliothèque et le link ne sont pas trivial.

Discussions similaires

  1. langage orienté gestion
    Par disneb dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 06/04/2008, 00h06
  2. régles de passage d'un diagramme de classe à un langage orienté objet
    Par lasmarmann dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 22/01/2007, 18h16
  3. [langage C][débutant] un vaisseau qui tire
    Par shinkyo dans le forum GLUT
    Réponses: 12
    Dernier message: 10/06/2006, 15h39
  4. VBA est-il un langage orienté objet ?
    Par Kcirtap dans le forum Général VBA
    Réponses: 5
    Dernier message: 06/12/2005, 09h46
  5. [web] [Que choisir ?] langages orientés web.
    Par otakuMerlin dans le forum Web
    Réponses: 4
    Dernier message: 07/04/2003, 11h13

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