• [^] # Typage statique vs. typage dynamique

    Posté par . En réponse à la dépêche Java la synthèse - Vers la maturité avec le JDK 1.2. Évalué à 0.

    Quelques precisions en passant:

    1. plus qu'un type abstrait algebrique, une interface Java est la declaration du type d'une certaine categorie d'objets.

    2. le typage statique n'est *absolument pas* incompatible avec la genericite qui, comme tu le dis, permet de manipuler des objets sans se soucier de leur classe, du moment qu'ils possedent les memes methodes. Cf. la theorie des types abstraits algebriques.

    3. Le type "induit" par une classe est constitue par l'ensemble de ses methodes, mais *pas* par ses attributs (qui constituent, eux, l'etat de l'objet, et non pas son comportement).

    4. Le fait de pouvoir s'auto-inspecter et de pouvoir generer des classes a la volee est peut-etre interessant, amis on ne peut pas dire que ce soit *elegant*. Ce concept -la reflexivite- est tres complexe et pose de serieux risques de plantage (quoique, concernant Java, la encore, il s'agit d'une restriction de la reflexivite). Notons que c'etait deja present dans Lisp il y a deja un bon moment.

    5. Quant a dire que Java est type statiquement, c'est un peu fort. On parle generalement de typage mixte, car une forte phase de compilation dynamique est effectuee (d'ou la lenteur du lancement d'un programme).

    6. Non seulement Java manque de l'heritage multiple, mais il lui faudrait aussi la genericite et la contravariance pour arriver a quelque chose de vraiment puissant. Je conseille a ceux que ca interesse de regarder du cote d'Eiffel (qui peut generer du bytecode Java ou du C) ou de son cousin (plus rigoureux sur certains aspects) Sather.

    Rogue.