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

Contribuez C++ Discussion :

Le langage D


Sujet :

Contribuez C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut Le langage D
    Salut les C++iens,

    Suite au séisme provoqué par le retrait des concepts, je lis çà et là des prédictions nostradamussiennes (pacorabanniennes ?) de la mort du C++.
    Bon, je ne sais pas si on peut avancer de telles choses aujourd'hui et je n'ai pas non plus spécialement envie que le C++ meure aussi vite (en fait, ce n'est même pas le sujet de la conversation que je souhaite engager), mais j'aimerais malgré tout sortir la tête de mon trou pour voir ce qui se trame au pays de la succession du C++.

    Le C++, héritant du C, commence à être un langage assez vieux et par conséquent de plus en plus difficile à réformer. Difficile en effet d'ajouter des killer-features s'intégrant harmonieusement à la version précédente tout en assurant la rétrocompatibilité. Et je ne parle même pas des boulets qu'on se traine depuis le C (le typage faible, le préprocesseur archaïque et j'en passe).

    De plus, les alternatives montantes telles que le Java et le C# ne me convainquent pas des masses : faciliter la tâche du développeur d'accord (et encore, je me sens plus libre en C++), mais pas au détriment des performances, ni au cout de l'introduction d'une machine virtuelle ou autre interpréteur dont on connait les inconvénient. Mais bref, ce n'est pas le sujet non plus.

    Je viens de me renseigner un petit peu ce matin sur le langage D. Celui-ci se présente comme un re-engineering du C++, ou une remise à plat si vous préférez.
    Le D, la puissance du C++ sans sa complexité : vous y croyez ? J'ai pu lire qu'Andrei Alexandrescu (célèbre expert C++), lui, semble y croire.

    Je ne vais pas vous faire une présentation des fonctionnalités de D (la page correspondante de Wikipédia le fera mieux que moi), mais celles-ci semble prometteuses.

    En tout cas, tout ceci semble assez intéressant, je vais me pencher sur le sujet.

    Que pensez-vous de D comme digne successeur de C++ ?
    Y a-t-il une alternative plus convaincante selon vous ?
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    La mort du C++ est annoncée depuis les premières versions de Java et surtout depuis l'apparition de la plateforme .Net. Il est clair que le C++ n'étant pas trop fait pour le monde Internet, c'est un sérieux handicap à mon avis supérieur à sa complexité. Ensuite, le COBOL aussi doit mourir depuis déjà une trentaine d'année... Et on forme toujours des gens au COBOL. Ca s'appelle l'existant. Côté C++, il y a aussi une grosse base d'existant en particulier dans des métiers spécifiques (télécom, réseaux, embarqué). Ce qui fait que même les nouveaux projets démarrent souvent avec encore du C++. Enfin, je ne suis pas persuadé que les hoquets du C++0x soit un critère d'abandon du langage au niveau industriel au profit d'un autre langage.

    Concernant le langage D, le problème c'est que cela ressemble encore à un langage 'universitaire', c'est à dire assez peu utilisé dans le monde industriel. Va-t-il se développer ? Pour être franc, je pense que ça ne marchera que si un acteur comme Microsoft diffuse massivement des outils autour de ce langage. Et ça n'a pas trop l'air d'être à l'ordre du jour.

    Quel successeur au C++ ? J'aurais tendance à dire que c'est une fausse question. Le C++ n'empêche pas que des projets existent et démarrent en C. Il y a cohabitation entre les deux langages. Ce sera probablement le cas entre le C++ et d'autres langages (C#, D, Java, etc.).

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pour le peu que j'en ai lu, j'ai un peu peu l'impression que le D perpetue certaines des "erreurs" qui font que le C++ (ou du moins sa version moderne) a eu du mal à s'implanter en entreprise (par rapport au C, par exemple, qui a été adopté assez tôt).

    A ce stade on a

    - un langage trop ouvert. C'est le problème du multiparadigme : ca rend le langage compliqué à apprendre, et cela nuit à la constitution rapide d'une base d'utilisateurs (qui se fragmente en petits groupes, par "paradigme")

    - ce penchant pour l'abstraction que l'on retrouve dans pas mal de langages "de seconde génération", qui satisfait les théoriciens, mais perd les apprenants. Pour bien comprendre et apprécier les avantages du nouveau langage, il faut comprendre et maitriser les defauts des langages précédents... Par ailleurs, ce type de langage, qui repose sur des idées assez théoriques est souvent considéré comme "difficile" par des ingénieurs non informaticiens, qui sont souvent la principale force pour l'adoption de nouveaux langages dans l'entreprise.

    - pas assez d'efforts consacrés à la librairie. C'était la force du C, et déjà le problème du C++. Je ne serais pas étonné que le manque d'attention portée aux premières versions de la SL et de la STL (et je ne parle même pas de la doc) ait été une des principales raisons du relatif échec du C++ en entreprise.

    Maintenant, D est un langage jeune, et les choses peuvent changer, mais je ne crois pas qu'il prenne la bonne voie.

    Francois
    Dernière modification par Invité ; 25/07/2009 à 09h13.

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Euh, me semble bien que D utilise aussi la SL non?
    Et je rejoins 3Darchi sur le côté 'universitaire', je dirais plus théorique même que applicatif. (peut être je me trompe j'ai vraiment pas de recul, mais j'ai pas vu souvent des sources en D me passez sous les yeux...).
    Des critiques que j'ai lu aussi c'est qu'il fait assez "boite à outils" on met les nice-features du moment ensemble et voilà. Mais là pareil je peux me tromper, pas assez de recul, trop jeune.

    Quand à la mort du C++, j'y crois pas... y'a encore trop de domaine où il domine, l'embarqué pour ne cité que lui, je rajouterais les jeux vidéos, quoiqu'en dise les javai-istes et dotnet-istes j'ai pas encore vu de gros blocksbusters codé en C# ou en java.
    Et bon... l'industrie du jeux vidéos représente quand même une sacrée part du marché..
    Donc à mon avis on va avoir droit encore longtemps à de la cohabitation. Mais bon tout ça reste quand même assez 'boule de crystal' l'informatique changeant tellement vite, qui vivra verra...

    Enfin c'est vrai que le gros manque (enfin perso ça me manque pas du tout ^^) de C++ face à java et C# c'est qu'il est pas du tout tournée vers le développement web, or c'est vrai que tout tends vers ça aujourd'hui... (même les jeux justement, comme quake par exemple).

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Goten Voir le message
    Euh, me semble bien que D utilise aussi la SL non?
    Non, D a sa propre librairie de base (également appelée Standard Library), surnommée Phobos (http://www.digitalmars.com/d/2.0/phobos/phobos.html), elle permet un accès direct aux fonctions de la librairie C (ce qui est une très bonne chose) et aux API des OS sous jacents, mais n'est pas compatible, à ma connaissance, avec les bibliothèques du C++.

    En ce sens, D est plus proche du C que du C++.

    Francois

  6. #6
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    Citation Envoyé par Goten Voir le message
    Enfin c'est vrai que le gros manque (enfin perso ça me manque pas du tout ^^) de C++ face à java et C# c'est qu'il est pas du tout tournée vers le développement web, or c'est vrai que tout tends vers ça aujourd'hui... (même les jeux justement, comme quake par exemple).
    En quoi le C++ n'est-il pas tourné vers le Web ?
    C'est plus un problème de bibliothèque que de langage, non ?

    Merci pour vos réactions, c'est intéressant .
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Le C et le C++ ne sont pas trop tournés vers l'interface, le web en est un aspect...

    Francois

  8. #8
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Citation Envoyé par Florian Goo Voir le message
    En quoi le C++ n'est-il pas tourné vers le Web ?
    C'est plus un problème de bibliothèque que de langage, non ?
    A part deux ou trois librairies CGI il faut bien reconnaître que le C++ n'offre pas grand chose dans le développement web si on le compare par exemple à Java ou .Net qui proposent des frameworks à base de composants gérant la majeure partie des problèmes liés au session et à AJAX.

    Est-ce que c'est juste une histoire de biliothèque? Pas à 100% car la majorité des frameworks de présentation à base de MVC utilisent la réflexion qui n'est pas facilement disponible en C++, je dis pas qu'il est impossible de s'y prendre autrement mais c'est un élément, tout comme la capacité d'un serveur d'application écrit en java à charger dynamiquement, de façon sûre et aisée une autre application java pour servir des requêtes sans laisser les éventuels fautes de celle-ci le faire tomber.

    Je dirai qu'en général, le C++ n'était pas vraiment idéal pour tout ce qui est application de gestion en fait, vous connaissez beaucoup d'ORM digne de ce nom en c++? Non? Peut être encore une fois l'absence de la réflexion dans le langage?

    Sinon au sujet de D, je partage un peu certains des avis énoncés sur ce topic: son grand point faible est qu'il n'est pas suffisamment utilisé dans le monde professionnel, en conséquence côté communauté et ressources sur le web c'est assez pauvre, et à ce titre je suppose que n'importe qui serait frileux à l'idée de faire confiance à D pour des projets sérieux.

    C'est dommage je trouve car une place existe pour un langage tel que D, et je pense que cette place est justement entre C#/Java et C++. Les technos managées sont très productives mais souffrent parfois d'un manque lorsque le développeur souhaiterait pouvoir contrôler très finement la mémoire et que la vitesse d'exécution est une priorité. Le C++, langage compilé, permet ce contrôle fin mais au prix d'un coût en sécurité et en productivité qui est quand même, à mon sens, réel.
    Et je perçois le D comme une tentative de donner à un développeur le choix de ce qui est le plus pertinent dans les différentes parties de son projet, par exemple en choisissant d'utiliser le garbage collector pour des parties non critiques et de le désactiver pour les fonctionnalités où la vitesse est primordiale.

    En résumé sa meilleure chance serait qu'un grand comme microsoft ou google le *porte*. En l'état actuel j'ai l'impression que ça stagne depuis quelques années.

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut,

    Pour en revenir au noeud du problème, je peux t'assurer que les "chroniques d'une mort annoncées" d'un langages ont eu lieu de tous temps...

    Et, de tous temps, elles se sont révélées n'être que des mirages, quel que soit le langage (utilisé de manière professionnelle) visé ou le temps laissé pour qu'elles se réalisent...

    Le bémol que l'on peut émettre, c'est que certains langages se sont retrouvé limités à des secteurs de niches particuliers, mais, dans l'ensemble, dés que tu as des développements étalés sur dix ans avec un langage précis, il est souvent plus facile et moins onéreux de trouver "la perle rare" qui connait le langage et de continuer à l'utiliser que reprendre le développement intégral dans un autre langage

    Cela a été le cas avec Ada, Cobol, et C quand un nouveau langage a été annoncé (je me demande même si, concernant fortran, il n'y aurait pas eu prophétie identique à la sortie de C), et, pourtant, ils sont toujours utilisés

    De plus, la décision prise concernant les concepts en C++ ressemble plus à un ajournement concernant leur mise au point qu'à un abandon définitif

    Sans compter le fait que ce n'est pas parce qu'une feature particulière n'est pas adoptée que, forcément, cela implique que le langage subira une "perte de vitesse", même si cette feature semble importante

    Tout cela pour te dire qu'il "n'est pas impossible" que l'absence des concepts fasse que certains nouveaux programmeur décident de ne pas l'utiliser, mais qu'il y a encore de la marge pour en arriver au fait que cette absence décide ceux qui l'utilisent à changer de langage

    Ceci dit, mon avis personnel est qu'il est bon d'être "spécialisé" dans un langage particulier, mais que cela n'empêche absolument de connaitre au minimum les bases des autres, et qu'il est même souhaitable d'être en mesure de se débrouiller avec

    Il n'est pas souhaitable de vouloir les maitriser parfaitement tous, car à trop vouloir savoir tout faire, on en vient à ne rien savoir faire correctement, mais c'est malgré tout une bonne chose que d'être en mesure de poser un oeil attentif sur un code écrit dans un autre langage que celui dans lequel on est "spécialisé" et d'arriver à comprendre ce qui est fait
    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. #10
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    Merci Koala, c'est très rassurant pour moi de lire tout ceci
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    So, mettons nous tous au D \o/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  12. #12
    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
    Bon alors sur proposition de Florian Goo, je relance le topic.

    Tout d'abords, pour que vous cituiez le personnage, je suis un utilisateur expérimenté de C++, mais surtout un utilisateur de D bien que j'ai bien moins d'expérience dans ce langage.

    Dans un premier temps, soyons réaliste : D ne va pas tuer C++. C++ à un tel passif qu'il ne va pas disparaitre du jour au lendemain. On a un tas de libs en C++, tout plein de programmeurs expérimentés, et c'est une techno connue vers laquelle un décideur se tournera plus facilement qu'une techno moins connues (dissonance cognitive tout ça).

    D propose de faire du C++ à l'envers. En C++, on part bas niveau, mais, avec divers outils comme les smart pointers, ce que tous le monde utilise de nos jours, on s'élève à un niveau supérieur.

    D propose de coder haut niveau d'origine, mais de descendre bas niveau quand cela est nécessaire. Ce qui est à mon avis une meilleur approche étant donné la proportion de code haut niveau vs bas niveau dans une appli standard.

    Par exemple, la mémoire alloué l'est par défaut par un GC, mais on peut décider d'utiliser le mécanisme de notre choix.

    Ou bien les fonction membres d'une classe sont virtuelle par défaut. On précise qu'elles en le sont pas à l'aide du mots clef final, se besoin est.

    Pour moi, D, c'est ce qu'aurait du être le C++ si on l'avait conçu avec l'expérience qu'on a maintenant.

    J'ai vu ici que D avait été conçu par des théoriciens. Mon avis d'utilisateur est diamétralement opposé. En connaissant C++, j'ai juste l'impression de coder plus facilement sans me sentir vraiment plus limité. La syntaxe est plus simple, les bugs moins nombreux (ou détectés plus tôt/facilement), et ça compile vite !

    D'ailleurs, ça compile suffisamment vite pour que D puisse être utilisé en langage de scripting. Le compilateur dmd fournis déjà cette possibilité.

    Parmi les choses sympathiques, il y a par exemple les unitest, les lazy évaluation pour les paramètres de fonction, les templates sont bien mieux pensées qu'en C++, permettent de faire plus plus simplement (C++0x propose des choses intéressantes la dessus, mais tout est déjà dans D), la surcharge d'opérateur est aussi mieux pensée.

    Voila pour D1. D2 promet bien plus, notamment sur le multithreading, ou l'approche est vraiment intéressante. D2 est un peu le C++0x version D, le truc génial qui peine à venir.

    Maintenant D souffre de quelques soucis de jeunesse. Il y a deux lib standard en compétition (sic) ce qui n'aide pas à s'y retrouver au début, et google est bien prolifique en réponses qu'avec C++ (bien qu'on ai généralement moins de questions aussi).

    La compatibilité avec C est très bien assurée, mais pas avec C++. Ceci est principalement du au fait que noms ne sont pas standardisées en C++, ce qui pose des soucis quand il faut lier le tout. Si appeler du code C est facile, D rompt la compatibilité au niveau syntaxique, ce qui est le principal défaut de C++ selon moi. Repartir sur une base saine et fraiche, c'est a mon avis ce qu'il faut à C++.

    Bref, c'est pour moi une bonne solution pour un projet tout neuf. Mais il faut savoir être réaliste, réutiliser l'existant est un gros point fort de C++.

  13. #13
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    Le D différencie allocation sur la pile et sur le tas, et donc permet le RAII. Ça c'est fort bien !

    Ou bien les fonction membres d'une classe sont virtuelle par défaut. On précise qu'elles en le sont pas à l'aide du mots clef final, se besoin est.
    Ça par contre j'aime moins. J'ai bien plus de fonctions membres « finales » que virtuelles dans mes codes…
    Enfin, vu qu'on a plus de chances de s'exclamer « ah ben voilà pourquoi ça bugue, j'avais oublié de rendre la fonction virtuelle ! » que la même chose avec s/virtuelle/finale.
    Après tout, les variables sont mutables par défaut en C++. C'est certainement plus cohérent.

    Maintenant D souffre de quelques soucis de jeunesse. Il y a deux lib standard en compétition (sic) ce qui n'aide pas à s'y retrouver au début
    Fichtrement rédhibitoire, non ?

    La compatibilité avec C est très bien assurée, mais pas avec C++. Ceci est principalement du au fait que noms ne sont pas standardisées en C++, ce qui pose des soucis quand il faut lier le tout.
    Je ne sais plus où j'ai entendu parler de volonté de standardisation de l'ABI C++. Dans C++0x, peut-être ?
    Si on pouvait utiliser du C++ aussi bien que du C en D, ce serait un essor formidable.
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

Discussions similaires

  1. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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