Le langage D est-il le successeur du C++ ?

Le , par Florian Goo, Membre éclairé
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 ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de yan yan - Rédacteur http://www.developpez.com
le 04/10/2010 à 16:50
Citation Envoyé par JolyLoic  Voir le message
Appeler du code C++ depuis du code D ne serait que la partie émergée de l'iceberg : Pour utiliser confortablement du code C++ depuis un autre langage, il faudrait aussi pourvoir dériver d'une classe C++ et redéfinir des fonctions virtuelles, avoir un modère de gestion des ressources compatible, être capable de transmettre les exceptions entre les différents langages dans les deux sens...

Il me semble que gcc utilise un pseudo-langage intermédiaire (un peu comme le CIL) pendant la compilation et que les binaires étaient compatible. De plus, je n'ai pas vue de choses qui était incompatible entre le D et le C++ qui empêcherais une classe D d'hériter d'une classe C++.
Mais bon, je ne fais que supposer.

Es ce que l'on ne pourrais pas imaginer un équivalent de boost.python pour D ?
Avatar de JolyLoic JolyLoic - Rédacteur/Modérateur http://www.developpez.com
le 04/10/2010 à 18:16
Disclaimer : Je n'ai jamais fait de D, j'ai juste lu quelques articles.
Citation Envoyé par yan  Voir le message
De plus, je n'ai pas vue de choses qui était incompatible entre le D et le C++ qui empêcherais une classe D d'hériter d'une classe C++.
Mais bon, je ne fais que supposer.

J'ai l'impression que le modèle objet n'est pas le même, par exemple l'absence d'héritage multiple doit pas mal influencer la manière dont les fonctions virtuelles sont gérées...

En cherchant d'autres exemple, je suis tombé sur :
Features To Drop
Link compatibility with C++. The C++ runtime object model is just too complicated - properly supporting it would essentially imply making D a full C++ compiler too.

Citation Envoyé par yan  Voir le message
Es ce que l'on ne pourrais pas imaginer un équivalent de boost.python pour D ?

Je n'ai pas utilisé boost.python non plus. Je pense qu'on doit pouvoir arriver au même genre de fonctionnalités, avec le même genre de limites, qui impose d'écrire pas mal de code intermédiaire (par exemple :
http://www.boost.org/doc/libs/1_44_0...tual_functions)
Avatar de Klaim Klaim - Membre expert http://www.developpez.com
le 05/10/2010 à 11:34
Citation Envoyé par JolyLoic  Voir le message
Disclaimer : Je n'ai jamais fait de D, j'ai juste lu quelques articles.

J'ai l'impression que le modèle objet n'est pas le même, par exemple l'absence d'héritage multiple doit pas mal influencer la manière dont les fonctions virtuelles sont gérées...

C'est le moins qu'on puisse dire :
- pas d"héritage multiple
- struct et class sont radicalement différent (sémantique de valeur et sémantique d'objet, respectivement) - ça pose des problèmes avec les objets c++;
- le compilo définit à la compilation si il y a besoin de virtualité sur un fonction membre, ou pas - non-précisé par l'utilisateur
- garbage collector par défaut (mais pas de vm)
- thread-local par défaut...

En gros je vois pas comment les deux languages peuvent être directement compatible. Au mieu, on pourrait pouvoir manipuler un pointeur vers un objet C++ et appeler des méthodes... et encore je suis pas sur qu'il n'y aurait pas des complications.
Avatar de JolyLoic JolyLoic - Rédacteur/Modérateur http://www.developpez.com
le 05/10/2010 à 11:52
Donc en gros on pourrait au mieux faire pour D un truc comme C++/CLI est fait pour le C#.

Et d'expérience, même si c'est fonctionnel, c'est lourd, c'est peu élégant, et c'est une source de bugs.
Avatar de Klaim Klaim - Membre expert http://www.developpez.com
le 05/10/2010 à 13:14
Eventuellement, on peut utiliser D comme un language de script. D'après la doc, le language est suffisamment simple à implémenter pour même pouvoir tourner sur une VM si besoin (et d'après eux les expressions sont context-independant contrairement au C++).

Si on approche le language comme ça ça peut être interessant, mais pas pour un scripteur qui y connait peu en programmation...

A priori le plus simple c'est d'avoir une interface en C qui encapsule par exemple du code C++ de manière a ce que D puisse aussi avoir une interface de son coté qui encapsule le C. Tout un programme...
Avatar de ponce ponce - Membre averti http://www.developpez.com
le 06/10/2010 à 12:50
Citation Envoyé par _skip  Voir le message
  • Pas d'API SGBD

  • Pas d'API pour imprimer, même basique

  • Librairies GUI en peau de banane

  • IDE en tôle ondulée (rouillée)

Pour les GUI/SGBD etc, c'est pas grandiose en effet.

Pour l'IDE je conseille de se tourner vers Visual D, c'est développé par un seul gars mais c'est bien actif et ça apporte la complétion et un débugger.

Pour ta critique sur dsource, oui il y a plein de projets inutiles et/ou abandonnés mais bon, le fait est que les gens font pas mal de projets inutiles quel que soit le langage.

D est utilisé dans quelques boites, par exemple celle-ci: http://www.sociomantic.com/careers
leur blog en parle: http://blog.sociomantic.com/2010/04/...eriences-in-d/
Avatar de _skip _skip - Expert éminent http://www.developpez.com
le 06/10/2010 à 13:41
J'avais aussi demandé qu'ils inscrivent la mailing list sur nabble afin d'avoir une présentation forum comme ici :

http://lucene.472066.n3.nabble.com/

avec groupage des posts et fonction "rechercher" plutôt que cette m***e :
http://www.digitalmars.com/pnews/ind...italmars.D.ide

où les fils de discussion sont juste impossibles à suivre. Ma demande a été juste ignorée...

Pour ta critique sur dsource, oui il y a plein de projets inutiles et/ou abandonnés mais bon, le fait est que les gens font pas mal de projets inutiles quel que soit le langage.

Juste mais le problème c'est que le mec qui cherche des ressources sur D il tombe là dessus et il voit que plus rien ne bouge depuis 2007. Et même pour les projets qui reçoivent des contributions il n'y a aucune description, aucune roadmap, rien.

Ce que je dénonce, c'est qu'il y a visiblement une communauté active et désireuse de contribuer, juste que ses efforts sont dispersés dans tous les sens et que rien n'est coordonné. C'est vraiment du gâchis et le résultat rebute sans doute bien du monde.
Avatar de ponce ponce - Membre averti http://www.developpez.com
le 07/10/2010 à 11:22
Pour les newsgroups, il y a plusieurs interfaces Web dont une seule est à peu près utilisable (et encore). Utilise ces liens ou alors un client news.

Les plus intéressants sont digitalmars.D et digitalmars.D.announce

http://www.digitalmars.com/webnews/n...=digitalmars.D
http://www.digitalmars.com/webnews/n...ars.D.announce

Après pour dsource.org, pas mal de développeurs ont migré vers bitbucket parce que le site est trop souvent down.

Pour les infos sur le langage et la communauté autour http://prowiki.org/wiki4d et le canal #D sur freenode sont des bonnes ressources.
Avatar de Klaim Klaim - Membre expert http://www.developpez.com
le 28/10/2010 à 19:25
Il y a (eu) une discussion très interessante sur les différences entre Go (de Google) et D (qui visent tous les deux a être des langages systèmes mais sont différents par leur approche - simplicité pour Go VS C++Killer/multi-paradigm pour D ) avec intervention d'Alexandrescu en prime.

Discussion très polie et courtoise, enrichissante, surtout si on est interessé dans ces languages ainsi que dans C++, Python, Ruby, Java...

La discussion : http://groups.google.com/group/golan...091e27ab?pli=1

Une note sur le fait qu'Alexandrescu dit que visiblement le probleme des dispersion politique de la communauté serait réglé. Ce qui serait une bonne chose si c'est vrai (difficile a vérifier sans suivre).
Avatar de _skip _skip - Expert éminent http://www.developpez.com
le 02/11/2010 à 13:17
Si on se fie aux newsgroups, le binding en D pour Qt serait sur le point de ressuciter.
Avatar de Klaim Klaim - Membre expert http://www.developpez.com
le 02/11/2010 à 15:20
Oui j'ai cru voir passser l'info aussi. Pour l'instant j'ai juste récupéré de quoi faire du SFML avec D voir un peu ce que ça donne. Mais je m'y mettrais pas immédiatement.
Offres d'emploi IT
Ingénieur(e) systèmes distribués
Artelys - Ile de France - Paris (75002)
Consultant technique mobilité (android, ios) h/f
INEAT Conseil IDF - Ile de France - Boulogne-Billancourt (92100)
La DGSI recrute un technicien en développement d'applications web
DGSI - Ile de France - Levallois-Perret (92300)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique C++