Je trouve que dire « le typage dynamique, ça marche pas pour les gros projets », c'est quand même un peu simpliste, il me semble qu'il y a quand même quelques contre-exemples. Cela dit, pour le refactoring, je suis d'accord que typage dynamique + orienté objet ça rend les trucs un peu compliqué, puisqu'effectivement quand tu vois x.show () tu sais pas si c'est un appel à la méthode qu'il faut renommer ou à une autre méthode show () qui doit continuer à s'appeler show (), elle.
Par ailleurs, je suis pas sûre que C/Gobject soit vraiment un très bon exemple de typage statique. Dans du code C/Gobject, il y a beaucoup de casts qui se contentent de vérifier que t'as un pointeur, ou encore des fonctions qui prennent ou qui renvoient du void * (enfin, du GPointer), et pour tout ce qui est objet les vraies vérifications de type (par exemple, vérifier que GtkWindow hérite de GtkWidget et que tu peux donc effectivement appeler gtk_widget_truc) elles se font en fait en dynamique. Un petit exemple (tiré d'un "Hello World" Gtk+) :
Là en fait la seule vraie vérification statique de typage, c'est que "clicked" est bien un char *, par contre tu peux compiler sans que button ou window ne soient des GtkObject, et avec gtk_widget_destroy qui n'ait pas du tout la bonne signature (je pense quand même que ça vérifie que c'est un pointeur sur fonction).
Donc le typage statique, pourquoi pas, mais dans ce cas il faut un autre langage que le C...
[^] # Re: C vs Python pour des applis Gnome
Posté par Lizzie Crowdagger . En réponse au journal Quelques langages de programmation pour GNOME. Évalué à 5.
Mouais...
Je trouve que dire « le typage dynamique, ça marche pas pour les gros projets », c'est quand même un peu simpliste, il me semble qu'il y a quand même quelques contre-exemples. Cela dit, pour le refactoring, je suis d'accord que typage dynamique + orienté objet ça rend les trucs un peu compliqué, puisqu'effectivement quand tu vois x.show () tu sais pas si c'est un appel à la méthode qu'il faut renommer ou à une autre méthode show () qui doit continuer à s'appeler show (), elle.
Par ailleurs, je suis pas sûre que C/Gobject soit vraiment un très bon exemple de typage statique. Dans du code C/Gobject, il y a beaucoup de casts qui se contentent de vérifier que t'as un pointeur, ou encore des fonctions qui prennent ou qui renvoient du void * (enfin, du GPointer), et pour tout ce qui est objet les vraies vérifications de type (par exemple, vérifier que GtkWindow hérite de GtkWidget et que tu peux donc effectivement appeler gtk_widget_truc) elles se font en fait en dynamique. Un petit exemple (tiré d'un "Hello World" Gtk+) :
Là en fait la seule vraie vérification statique de typage, c'est que "clicked" est bien un
char *, par contre tu peux compiler sans quebuttonouwindowne soient des GtkObject, et avecgtk_widget_destroyqui n'ait pas du tout la bonne signature (je pense quand même que ça vérifie que c'est un pointeur sur fonction).Donc le typage statique, pourquoi pas, mais dans ce cas il faut un autre langage que le C...