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 :
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.
[^] # Re: Inutile
Posté par _ . En réponse à la dépêche Sortie de TOM 2.3. Évalué à 4.
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.