Developpez.com

Le Club des Développeurs et IT Pro

GCC 9 sera la première version stable du compilateur à supporter le langage D :

Un nouveau frontend allonge la liste

Le 2018-11-03 21:21:42, par Patrick Ruiz, Chroniqueur Actualités
La collection de compilateurs GNU (GCC) dispose d’un nouveau frontend ; c’est le résultat de l’intégration d’un commit au projet GCC il y a bientôt une semaine, ce, suite au feu vert du GCC Steering Committee.


D’après ce qui ressort du commit, ledit frontend est une redite de celui de GDC – GNU D Compiler. Ce dernier vient allonger une liste dans laquelle on retrouve déjà des frontend pour les langages C (gcc), C++ (g++), Objective-C (gobjC), Objective C++ (gobjC++), Java (gcj), Ada (gnat), Fortran (gfortran) et Go (gccgo). À la réalité, la liste de frontend qui font office de potentiels candidats à une intégration avec la distribution standard de GCC est plus longue. Il s’agit de projets matures ou en cours de développement. On parle ici de GNU Pascal Compiler (GPC), Mercury, Cobol for GCC, GNU Modula-2, GNU Modula-3, GHDL, PL/1 for GCC et GCC Unified Parallel C (GCC UPC).

En 2015, Andrei Alexandrescu a annoncé son départ de Facebook pour se consacrer au développement du langage D en partenariat avec la fondation qui en a la charge. Il fait partie des observateurs qui soutiennent que D fait office de meilleur successeur au langage C que Rust et Go. Une intégration d’un frontend pour le langage D avec GCC est donc de nature à décupler l’intérêt des développeurs pour ce langage, mais il faudra que les intéressés fassent montre de patience. En effet, référence faite aux échanges sur le forum dédié au langage, l’intégration est prévue avec GCC 9. D’après le plan de développement du compilateur, les travaux sur cette version ont débuté le 25 avril dernier. La version stable est attendue pour le premier trimestre de l’année 2019.

Pour ceux qui sont au stade de sa découverte, 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. Illustration avec le fragment de code qui suit :

Code D :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void main() 
{ 
    import std.stdio, std.string, std.algorithm, std.conv; 
  
    // Reduce the RPN expression using a stack 
    readln.split.fold!((stack, op) 
    { 
        switch (op) 
        { 
            // Generate operator switch cases statically 
            static foreach (c; "+-*/") 
                case [c]: 
                    return stack[0 .. $ - 2] ~ 
                        mixin("stack[$ - 2] " ~ c ~ 
                            " stack[$ - 1]"); 
            default: return stack ~ op.to!real; 
        } 
    })((real[]).init).writeln; 
}

Source : dlang.org

Et vous ?

Qu’en pensez-vous ?

Le feu vert du GCC Steering Committee pour l’intégration de GDC avec GCC augmente-t-il la côte du langage D ?

Avez-vous déjà fait usage du langage D ? Si oui, pour quel projet ? Quels retours pouvez-vous faire en termes de comparaison avec le langage C ?

Voir aussi :

Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D

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

C2 : un langage qui se présente comme une évolution de C plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements

Pourquoi les langages C et C++ auraient-ils encore de nombreuses années devant eux ? Donnez votre avis
  Discussion forum
6 commentaires
  • kmedghaith
    Membre confirmé
    Le langage D est extrêmement interessant. Il peut être vu comme du C++ avec plus de fonctionnalités pour la programmation générique et au temps de la compilation, moins les défauts du C.
    Ceci n'est pas étonnant vu que Andrei, son second père, vient du monde C++ auquel il a contribué avec beaucoup de bonnes idées..
    Quand il a compris que le C++ n'allait pas assez dans la direction qu'il a préconisait, il en est parti pour s’occuper à temps complet du D. Il faut voir sa présentation lors du cppcon 2018 pour comprendre son animosité (amicale et toujours sur un ton humoristique) à l’égard du comité de normalisation.
    Ceci dit, un langage, sans bibliothèque standard solide, plein de libraires pour faire des applications et une large communauté, ça ne décolle pas facilement.
    Le C++, dès sa première version, était compatible avec le C. Et il n'a vraiment été adopté qu'après la publication de la stl plus d'autres libraires comme Qt.
  • Pyramidev
    Expert éminent
    Je suis développeur C++. Je connais un peu D. Je connais aussi un peu Rust, mais moins que D.

    De mon point de vue, avant que le langage D ne puisse décoller pour devenir un concurrent sérieux à C++ et Rust, il y a 3 problèmes à régler :
    • Le langage D n'est pas encore assez stable. Il y a encore trop souvent des changements non rétrocompatibles. Je consulte régulièrement le forum D de dlang.org et j'ai vu plusieurs fois des développeurs se plaindre que des bibliothèques externes ne compilaient plus après une mise à jour de DMD et que cela se produisait plus souvent qu'avec d'autres langages.
    • Le compilateur officiel, DMD, a trop de bogues.
    • La bibliothèque standard, Phobos, n'est vraiment pas sympa avec ceux qui veulent désactiver le ramasse-miettes. Pour rappel, le langage D permet de définir des fonctions avec un attribut @nogc qui permet de garantir à la compilation que le code sous-jacent ne nécessite pas le ramasse-miettes. Mais, dans Phobos, il y a encore beaucoup de trop de fonctions qui ne sont pas @nogc alors qu'elles devraient l'être.


    Si un jour ces 3 problèmes seront corrigés, alors le langage D pourra décoller. Mais, pour l'instant, je pense que c'est Rust qui décollera au détriment de D.

    Pour l'instant, le principal intérêt que je vois à utiliser le langage D, c'est de devenir meilleur en programmation générique et en métaprogrammation.
    Le C++ possède les templates, les fonctions constexpr et les macros, mais cela reste très loin derrière le langage D.

    Envoyé par Markand
    C'est un langage qui n'apporte aucune réelle nouveauté.
    Je t'invite à lire https://dlang.org/spec/spec.html
    Tu verras que le langage D a une tonne de fonctionnalités. Il est plus riche que C++ et le surpasse largement en programmation générique et surtout en métaprogrammation.
  • Steinvikel
    Membre expert
    Qu’en pensez-vous ?
    "Il fait partie des observateurs qui soutiennent que D fait office de meilleur successeur au langage C que Rust et Go."
    Le langage ce montrant explicitement son successeur est le C++. Quand est-il de la comparaison C++17 vs D ? et C2 ?
    D'ailleur, je m'étonne qu'il ne fasse pas parti des propositions dans les thèmes du style :
    Quel langage pourrait remplacer C ? (Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D)
    ou encore Pourquoi les langages C et C++ auraient-ils encore de nombreuses années devant eux ?...je comprend qu'il puisse être perçu comme "vieux" parce que développé depuis les années 80, mais il a évolué depuis... quelqu'un aurait des notions concrètes qui sont limitantes dans C++ et nécessaires pour plus de possibilités /performances ?
    Est-il perçu comme un langage parallèle plutôt que successeur ?

    multiparadigme, polymorphisme, réflexivité, asynchronisme, typage fort, le degrés de contrôle bas niveau... la facilité de codage dans tel ou tel contexte...
    Des éléments que j'ai rarement vu côte à côte pour la description d'un langage, mais qui serait parfait comme brochure de présentation !
    PS: ça demande sûrement pas mal de temps de rassembler toutes ces info... en tout cas quand on s'y connait pas, comme moi. ^^'

    edit:
    - D peut être également utilisé pour écrire rapidement des scripts. En plus, les scripts exécutés bénéficient de performances énormes indépendamment du nombre de scripts.
    - D dispose d’un nombre important de bibliothèques. De plus, il utilise la même structure de mémoire que C et C++, ce qui fait que la bibliothèque entière de C est facilement accessible à D ...et des travaux sont en cours (2016) pour faire la même chose avec C++.
    - La compilation du code D est beaucoup plus rapide que celle du C++ pour des performances équivalentes (sur du code exécuté) ...pour Go c'est l'inverse.
    "Pour Andrei Alexandrescu (un des co-créateur du langage D), les caractéristiques d’introspection statique, le temps de compilation assez rapide ainsi que les nombreux atouts uniques au langage D, font de celui-ci le remplaçant idéal à C. Partant de ce fait, il trouve que Go est dépassé et n’a même pas saisi le problème, tandis Rust s’essaye à donner quelques éléments de solutions. (...) il estime que comparativement à D, même C++ s’est égaré dans les bois."
  • chrtophe
    Responsable Systèmes
    Le langage D est-il utilisé ?
    Je le connais que de nom et depuis peu.

    Je ne suis pas développeur, mais pour moi le C et le C++ sont tellement implantés, que je ne vois pas ce langage n'être autre chose qu'une niche.

    Ce n'est pas un jugement du langage lui-même. Et de ce que j'ai vu de ce langage, il a quelques éléments intéressants.
  • Pyramidev
    Expert éminent
    Envoyé par chrtophe
    Le langage D est-il utilisé ?
    Sur la page Wikipédia du langage D, on peut trouver plusieurs exemples :
    Notable organisations that use the D programming language for projects include Facebook,[49] eBay,[50] and Netflix.[51]

    D has been successfully used for AAA games,[52] a JavaScript virtual machine,[53][54] an operating system kernel,[55] GPU programming,[56] web development,[57][58] numerical analysis,[59] GUI applications,[60][61] and a passenger information system.[62]
    Les notes de bas de page renvoient vers des articles que je n'ai pas lus.

    J'ai aussi un exemple détaillé sous la main : https://dlang.org/blog/2018/06/20/ho...-migrate-to-d/
    Cet exemple vient de l'industrie maritime. Une entreprise avait un code d'un demi-million de lignes en Extended Pascal. Mais Extended Pascal était sur le point de ne plus être maintenu, donc ils ont voulu transpiler le code vers un autre langage. Finalement, Bastiaan Veelo, un lead developer de l'entreprise, a écrit un code en D pour transpiler Extended Pascal vers D. Le choix du langage D est détaillé dans l'article.
  • Markand
    Membre éclairé
    Je ne vois pas l'intérêt de continuer à développer D. C'est un langage qui n'apporte aucune réelle nouveauté. En plus de ça il a souffert d'avoir eu 2 bibliothèques standard, possède un GC et n'a même pas de pattern matching.