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: Avez-vous déjà utilisé le langage D ?

Votants
17. Vous ne pouvez pas participer à ce sondage.
  • Oui, je l’utilise même encore

    3 17,65%
  • Oui, mais pas beaucoup

    3 17,65%
  • Non, je ne m’y suis jamais intéressé

    7 41,18%
  • Non, je n’en avais jamais entendu parler

    3 17,65%
  • Autre (à préciser)

    1 5,88%
  • Pas d'avis

    0 0%
D Discussion :

DMD : le compilateur de référence du langage D est désormais complètement open source


Sujet :

D

  1. #1
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Data Consultant
    Inscrit en
    Juillet 2013
    Messages
    2 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Data Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2 875
    Points : 86 930
    Points
    86 930
    Billets dans le blog
    2
    Par défaut DMD : le compilateur de référence du langage D est désormais complètement open source
    DMD : le compilateur de référence du langage D est désormais complètement open source
    son backend vient de passer sous la Boost License

    Le D est un langage de programmation impératif orienté objet et multiparadigme. Il a été conçu pour la programmation système et est inspiré par de nombreux langages dont C, C++ et Java. Créé en 1999, le langage D a été également présenté comme le successeur du C.

    Parmi les principaux avantages de D, ses créateurs mettent en avant la vitesse de compilation, estimant que la compilation de code D est beaucoup plus rapide que celle de code C++ pour des codes équivalents. Ils soutiennent également que D peut être utilisé comme un langage de script pratique pour une variété de tâches occasionnelles et qu'il est bien plus rapide que les autres langages de scripts. Entre autres avantages de D, ils estiment encore que le langage est bien plus facile à interfacer avec C et C++ que n'importe quel autre langage.

    Le compilateur officiel de D, DMD, est développé parallèlement à la spécification du langage. Il cible le langage machine. Excepté le backend qui est fermé et sous une licence propriétaire de Symantec, le reste du code du compilateur (frontend, bibliothèques et tous les autres fichiers inclus) est sous licence open source. Cela permet donc de corriger rapidement les problèmes rencontrés, mais également réaliser son propre compilateur en utilisant un autre backend.

    Il y a donc d'autres compilateurs en développement pour le langage D qui émergent dans le monde open source. Nous avons un compilateur GNU, GDC (pour GNU D compiler), mêlant le frontend de DMD et le backend de gcc ; et un compilateur sous licence BSD, LDC (pour LLVM D Compiler), mêlant le frontend de DMD et le backend LLVM.

    Le langage D connait une adoption très limitée et la licence du backend du compilateur DMD est sans doute l'une des raisons qui expliquent cela. En effet, si les deux autres compilateurs cités sont open source, ils accusent toutefois un retard sur DMD, en termes de support de fonctionnalités du langage D.

    Le langage vient toutefois de franchir une étape importante vers une adoption plus large par les développeurs. Symantec vient en effet de donner sa permission pour faire passer le backend de DMD sous la Boost License, une licence de logiciel libre, compatible avec la GNU General Public License de la Free Software Foundation. Cette licence hautement permissive permettra de distribuer plus facilement le compilateur avec d’autres logiciels open source. Espérons donc que cela n’arrive pas un peu trop tard, et que le langage qui a été annoncé comme le successeur de C puisse gagner du terrain. Pour cela, il doit d’abord faire face à la concurrence des jeunes langages comme Go ou Rust qui ont probablement capté une partie des développeurs qu’il pourrait intéresser.

    Sources : Dlang, GitHub

    Et vous ?

    Avez-vous déjà utilisé le langage D dans vos projets ? Partagez votre expérience.
    Pensez-vous que le passage du backend de DMD en open source pourrait vraiment booster l’adoption du langage D parmi les développeurs ? Pourquoi ?

    Voir aussi :

    Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D
    Débuter avec le langage D, un tutoriel de Sébastien Tahier
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2007
    Messages : 884
    Points : 2 018
    Points
    2 018
    Par défaut
    C n'a et n'aura pas de successeur dans un futur proche. Les licences de D interdise sa diffusion large, Go et Rust n'ont pas les même performances et polyvalences. Go et Rust ne font qu'ajouter une concurrence indirect sur les projets les moins "critique" (au sens de performances.)
    Tout ce que j'écris est libre de droits (Licence CC0) et je vous incite à faire de même.

  3. #3
    Membre émérite
    Avatar de Voyvode
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 476
    Points : 2 678
    Points
    2 678
    Par défaut
    Go et Rust n'ont pas les même performances et polyvalences.
    Concernant les performances brutes, Rust n’a rien à envier à C.

    La « polyvalence » est un critère vague. Si on parle en nombre et en variété de bibliothèques, le C a évidemment un avantage lié à son ancienneté. Si on parle d’accéder à des ressources bas niveau, Rust peut intégrer de l’assembleur.

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 552
    Points : 15 463
    Points
    15 463
    Par défaut
    Citation Envoyé par abriotde Voir le message
    C n'a et n'aura pas de successeur dans un futur proche. Les licences de D interdise sa diffusion large, Go et Rust n'ont pas les même performances et polyvalences. Go et Rust ne font qu'ajouter une concurrence indirect sur les projets les moins "critique" (au sens de performances.)
    Au niveau des performances brutes, Rust est du même niveau que le code C équivalent.

    Pour ce qui est de la polyvalence il faudrait que tu soit plus précis sur ce que tu entend par là. Le langage Rust en lui même est bien plus polyvalent que le C. Il est parfaitement adapté pour faire du bas niveau et permet de recourir également a des abstractions de plus haut niveau. Il permet de faire du fonctionnel. Il a aussi une forme d'approche objet bien que différente de celle du C++.

    Pour moi le seul point où l'on peut dire que C est plus polyvalent que Rust, c'est le nombre de plateformes supportées. A peu près toutes les architectures, même les plus folkloriques ont un compilateur C.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2007
    Messages : 884
    Points : 2 018
    Points
    2 018
    Par défaut
    Par polyvalence j'entends la capacité du C a être utilisé tel quel dans du C++ pour du code haut niveau et pouvoir manipuler les octet pratiquement au niveau de l'assembleur. Il permet d'implémenter très peu en assembleur sans sacrifice des performances. (le seul point ou il est pas au niveau, c'est la manipulation bit a bit mais parfois les compilateur retrouvent les bonne instructions assembleur.)
    Tout ce que j'écris est libre de droits (Licence CC0) et je vous incite à faire de même.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur C++
    Inscrit en
    Octobre 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur C++

    Informations forums :
    Inscription : Octobre 2008
    Messages : 242
    Points : 705
    Points
    705
    Par défaut
    D est une mauvaise alternative à C++ car il possède un garbage collector. Rust n'en a pas et possède des fonctionnalités modernes comme le pattern matching. Pour moi D est un coup d'épée dans l'eau.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 585
    Points : 1 138
    Points
    1 138
    Par défaut
    Citation Envoyé par Markand Voir le message
    D est une mauvaise alternative à C++ car il possède un garbage collector. Rust n'en a pas et possède des fonctionnalités modernes comme le pattern matching. Pour moi D est un coup d'épée dans l'eau.
    Corrigeons donc cette réponse trollesque...
    - car il possède un garbage collector. : oui.
    1) En quoi cela est-il mauvais pour 95% des projets professionnels qui ne sont pas soumis à des conditions absolument drastiques de performances du code et qui utilisent, qui des accès web-service ou internet, qui des bases de données, etc. ?
    2) Le GC de D est inutilisé par l'énorme majorité (quasi-totalité serait plus proche il me semble) des fonctions de la librairie standard, peut être rendu inopérant dans la plupart des fonctions d'un programme, et peut même être désactivé lorsque nécessaire.
    - Rust [...] possède des fonctionnalités modernes : oui.
    1) Rust a le pattern matching que D n'a pas... quoi que : c'est exactement ce qui existe dans le système de concurrence, par exemple, et s'il n'est pas natif dans le langage, il est programmable, la preuve ! Et pouvoir le créer comme on veut, c'est pas mieux ?
    2) D possède des fonctionnalités que Rust n'a pas : le système de template bien plus puissant que celui de C/C++ (en, entre parenthèses, bien plus clair...) par exemple.
    3) Il faut bien convenir qu'il est nécessaire de s'y reprnedre à un bon nombre de fois pour maitriser tout le système Rust de borrowing (mais ce n'est pas une tare), mais ce qui m'a fait abandonner ce langage, ce sont tous les Rc, Arc etc. qui me semblent un rajout tardif pour des cas non prévus initialement (notez le me).
    - Pour moi D est un coup d'épée dans l'eau : oui, exactement, pour moi. Ce sont les 2 seuls mots corrects de la phrase
    Et donc reprenons :
    Citation Envoyé par Markand Voir le message
    D est une mauvaise bonne alternative à C++ car il possède un garbage collector bien pratique dans 95% des cas, mais désactivable si nécessaire. Rust n'en a pas et possède également des fonctionnalités modernes comme le pattern matching, auquel D ajoute un système puissant de templates. Pour moi D est un coup d'épée dans l'eau.
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2008
    Messages : 167
    Points : 471
    Points
    471
    Par défaut
    J'ai répondu "autre" car à une époque, je m'y étais intéressé, sans en être convaincu.

    A regarder le site officiel, je reste sur mon opinion : aucun intérêt, malgré que l'article fasse l'article

    Citation Envoyé par Michael Guilloux Voir le message
    Parmi les principaux avantages de D, ses créateurs mettent en avant la vitesse de compilation, estimant que la compilation de code D est beaucoup plus rapide que celle de code C++ pour des codes équivalents. Ils soutiennent également que D peut être utilisé comme un langage de script pratique pour une variété de tâches occasionnelles et qu'il est bien plus rapide que les autres langages de scripts. Entre autres avantages de D, ils estiment encore que le langage est bien plus facile à interfacer avec C et C++ que n'importe quel autre langage.
    Explication :
    - Vu les machines dont on dispose aujourd'hui, le temps de compilation n'est plus un argument de vente.
    - L'intérêt d'un langage de script est de coder rapidement, surtout si c 'est pour des "taches occasionnelles". Et le temps d'exécution n'est pas un critère.
    - Je ne vois pas en quoi s'interfacer facilement avec du C ou du C++ est un argument de "vente", vu que c'est le cas pour la plus part des langages du marché.

  9. #9
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Points : 624
    Points
    624
    Par défaut
    Citation Envoyé par Voïvode Voir le message
    Concernant les performances brutes, Rust n’a rien à envier à C.
    Bah si : sur ton lien rust est plus lent pour 9 tests sur 10; et même quasiment 2 fois plus lent pour 2 tests.

    Et cette tendance à ressortir rust tout le temps me fait penser à une discussion à propos de C++ sur un autre forum :

    Is it really necessary in every post about any language to have the Rust lovers ranting about any non-Rust languaje?
    https://www.phoronix.com/forums/foru...272#post941272

  10. #10
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 552
    Points : 15 463
    Points
    15 463
    Par défaut
    Citation Envoyé par abriotde Voir le message
    Par polyvalence j'entends la capacité du C a être utilisé tel quel dans du C++ pour du code haut niveau
    Si on utilise tel quel du C dans du C++, on au mieux un code de "moyen" niveau : du mauvais C++ qui fera hurler de rage les amateurs de C++ moderne.
    Pour faire les choses proprement, mieux vaut garder son code C séparé du C++ et y faire appel via extern "C", ce que D et Rust savent très bien faire aussi.

    Citation Envoyé par abriotde Voir le message
    pouvoir manipuler les octet pratiquement au niveau de l'assembleur. Il permet d'implémenter très peu en assembleur sans sacrifice des performances. (le seul point ou il est pas au niveau, c'est la manipulation bit a bit mais parfois les compilateur retrouvent les bonne instructions assembleur.)
    Pour ce qui est de la connaissance de la représentation en mémoire des données manipulées, D et Rust font aussi bien, sinon mieux. C'est bien le minimum pour se prétendre être un langage système.
    Pour ce qui est de la connaissance du code machine qui sera généré par le compilateur, avec les optimiseurs modernes, mieux vaut ne prendre aucun pari, y compris en C.

    Citation Envoyé par Markand Voir le message
    D est une mauvaise alternative à C++ car il possède un garbage collector. Rust n'en a pas et possède des fonctionnalités modernes comme le pattern matching. Pour moi D est un coup d'épée dans l'eau.
    D a certes du mal a prétendre au titre de langage système, le GC étant trop utilisé, il est très difficile de s'en passer, même si il semble qu'ils travaillent a corriger cela.

    Ceci dit il n'est pas un coup d'épée dans l'eau et a de sérieux arguments à défendre face a Rust ou C++, comme par exemple :
    - il est assez simple a prendre en main
    - il est réputé pour ces capacités de méta-programmation
    - il a des performances plutôt correctes.

    Citation Envoyé par jpouly Voir le message
    - Vu les machines dont on dispose aujourd'hui, le temps de compilation n'est plus un argument de vente.
    - L'intérêt d'un langage de script est de coder rapidement, surtout si c 'est pour des "taches occasionnelles". Et le temps d'exécution n'est pas un critère.
    - Je ne vois pas en quoi s'interfacer facilement avec du C ou du C++ est un argument de "vente", vu que c'est le cas pour la plus part des langages du marché.
    Même avec des machine très puissantes, le temps de compilation n'est pas du tout négligeable, les compilateurs modernes faisant pas mal de vérifications et d'optimisations complexes. Rust travaille justement beaucoup a améliorer les temps de compilation vu que c'est la principale critique qu'ont remonté ceux qui l'utilisent professionnellement.

    Pour ce qui est de l’interfaçage avec le C, il est en effet géré par la plupart des langages, mais il est beaucoup plus facile a faire avec certains langages qu'avec d'autres. D et Rust s'en sortent plutôt bien sur ce point par rapport à des langages comme Go ou Java.

    Par contre l’interfaçage direct avec le C++ n'est géré par pratiquement aucun langage car le C++ est vraiment très complexe à supporter. S'interfacer parfaitement avec du C++ revient à devoir intégrer le C++ au langage. Il faut reconnaître au D d'être un des seuls langages qui permet un interfaçage, certes partiel, mais direct avec le C++.
    En général quand un veut s'interfacer avec du C++, on passe par une interface C intermédiaire.

    Citation Envoyé par zobal Voir le message
    Bah si : sur ton lien rust est plus lent pour 9 tests sur 10; et même quasiment 2 fois plus lent pour 2 tests.
    Sauf que le bechmark game est a prendre avec des pincettes. Ce qu'on constate, c'est que quand on utilise les mêmes techniques d'optimisations, les performances de Rust et C sont très proches.
    Les écarts sensibles s'explique par l'utilisation de technique différentes. Par exemple, sur n-body le C utilise explicitement SIMD (c'est faisable en Rust, mais seulement sur les versions nighly pour le moment), regex-redux est forcément dépendant de l'utilisation de la bibliothèque de regex, ...

    Citation Envoyé par zobal Voir le message
    Et cette tendance à ressortir rust tout le temps me fait penser à une discussion à propos de C++ sur un autre forum
    Is it really necessary in every post about any language to have the Rust lovers ranting about any non-Rust languaje?
    Il y a certes quelque prêcheurs trop zélés sur les forums, mais beaucoup moins je trouve que ceux qui critiquent les langages comme D ou Rust sans les connaître et partent avec comme base de discussion que de toute façon, seuls C et C++ sont capables de faire du bas niveau.

Discussions similaires

  1. [VC++ vs gcc]Comportement compilateur et références croisée
    Par vdemeester dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 31/07/2007, 14h33
  2. .net supporte bcps des langages, java est il compris?
    Par oumarou3 dans le forum Framework .NET
    Réponses: 3
    Dernier message: 07/02/2007, 01h19
  3. Réponses: 12
    Dernier message: 10/08/2006, 10h44
  4. Réponses: 8
    Dernier message: 11/07/2006, 18h27
  5. [langage] "@$" Quel est ce type de variable?
    Par YanK dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2005, 19h07

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