• [^] # Re: Inutile

    Posté par . En réponse à la dépêche Sortie de TOM 2.3. Évalué à 4.

    c'est presque vrai sauf qu'il y a des infios que les langages haut niveau comme lissac ou caml, ou eiffel, ou même c++ (pas java par exemple) sont capable de fournir :

    si je veux faire une liste chaînée "générique" en C par exemple j'écris :


    struct linked_list {
    void* value;
    struct linked_list* next;
    };


    c'est le choix notemment de la glib.

    Maintenant en eiffel/c++ j'écrirai une liste chaînée réellement générique:


    template class linked_list ...


    et je l'instancie avec linked_list par exemple. (dans le cas de caml, le type est inféré, caractéristique qui semble avoir été mise de côté dans les débats ci-dessus mais peut-être que les personnes qui ont un peu vite vomi sur le langage n'en ont même pas pris conscience). Et là, même si du code C est généré par le compilo eiffel/c++/caml, il sera plus efficace parce que le compilo aura un vrai type à la place de void* et poura faire des optimisations sachant par exemple que le champ value ne pourra pas pointer sur linked_list.

    Le typage (qui comme par hasard est fort en caml) apporte donc des infos nécessaires à l'optimisation en plus de fournir une abstraction du programme assez proche du langage pour qu'une bonne partie des erreurs de programmation soit détectées à la compil.