• [^] # Re: Bof

    Posté par . En réponse à la dépêche Le langage D. Évalué à 3.

    Bonjour,

    Je suis d'accord sur le fait que cette présentation n'est pas très réussie, elle passe du temps sur des trucs qui ne font pas l'intérêt du langage (comme les boucles ou les classes), tant en délaissant quantité de choses bien plus intéressantes. Il y en a de bien meilleures sur le net si vous êtes anglophone. Pour ma part, je considère que D est l'un des langages natifs les plus puissants actuellement (si ce n'est LE langage natif le plus puissant).

    Pour ce qui est des delegates, voici un exemple plus intéressant:

    // find est une fonction template qui prend un delegate en predicat
    // le if(is(typeof...)) est une condition sur le prédicat vérifiée par le compilateur
    // celui-ci doit retourner un bool
    // input[1..$] dénote le tableau input[i] pour i = 1 .. length-1
    T[] find(alias pred, T)(T[] input)
     if (is(typeof(pred(input[0])) == bool)
    {
     // on raccourcit le tableau d'un elem, ce qui revient à avancer le pointeur *input
     for(; input.length > 0; input = input[1..$]){
     if (pred(input[0])) break; // si le prédicat est vérifié, on s'arrête
     }
     return input;
    }
    // exemple d'usage
    unittest{
     int[] a = [1, 2, 3, 4, -5, 3, -4];
     // trouve le premier nombre < 0
     auto b = find!(delegate bool(int x){return x < 0;})(a);
     // idem, notation raccourcie qui tire parti de l'inférence de type
     auto b = find!((x){return x < 0;})(a);
    }
    
    

    Vous voyez dans l'exemple ci-dessus plusieurs notions de D: les templates, les contraintes de signature, les fonctions d'ordre supérieur, et l'inférence de type. C'est la combinaison de toutes les features de D qui en font sa puissance.

    Enfin je suis amusé par une légère forme de langue de bois en fin de dépêche. Tu dis que le langage "n'est pas propriétaire" (je ne sais pas exactement ce que ça veut dire) mais le paquet conseillé pour Debian est "dmd", un compilo qui est justement propriétaire. Je note aussi que si on va sur la page officielle du langage et qu'on clique sur "téléchargement", on ne se voit proposer que celui-là; c'est bien qu'il existe des implémentations libres à côté mais encore faut-il qu'elles soient à jour, compétitives et utilisées, ce qui reste à prouver. Bref il me semble un peu optimiste (voire autruche) de classer cette remarquer dans la catégorie "mythes et légendes fausses".

    C'est inexact. La licence du backend du compilo DMD est propriétaire, mais le frontend est complètement open source. Et on peut contribuer au backend à volonté. La seule chose qui est interdite par la licence, c'est de redistribuer le backend.

    Le source est sur Github
    Quand aux autres compilos, si LDC (LLVM) est fortement en retard, LDC (gcc) est en etard de 2 versions, soit environ 4 mois, sur DMD. Il est parfaitement utilisable et utilisé en pratique.