Dec 24

Dans un précédent billet j’ai parlé des vertues du typage et quand sans lui, il fallait avoir un bon nombre de tests pour éviter les regressions. Cette batterie de tests n’est —selon moi— pas suffisante, voires impossible a mettre en place suivant les situations. Dans le cas ou vous écrivez un framework par exemple, vous ne pouvez imposer des tests aux utilisateurs de votre framework afin de compenser tout changement d’API.

Les langages dynamiques sont par définition des languages avec un typage faible…voire inexistant. J’ai lu dans un billet sur RubyCLR, que l’intéret de tout typage tombait de par l’usage de Test Driven Development. C’est tout simplement faux et que c’est l’utilsation de TTD et langugae dynamique donnent cette impression.

Une grande partie des nouvelles technologies suivent le même schéma d’adoption. Dans un premier temps, la nouvelle technologie est adoptée par énormément d’utilisateur et une certaine euphorie accompagne cette adoption. A ce stade, les sociétés commence à se pencher dessus sans l’adopter vraiment ou alors de manière expérimentale. On voir alors tout un tas de détracteurs apparaitres qui par la meme occasion mettent en exèrgue certains défauts (faux mythe) et la technologie est alors quelque peu délaissée. Si elle ne disparait pas, elle va survivre et progressivement etre adoptée par plus en plus de personnes … y compris les sociétés.

La survie de la technologie dépend uniquement de sa vraie valeur intrinsèque. Je pense que les languages dynamiques sont au premier stade: beaucoup d’”early adopters” avec peu de vrai applications/framework l’utilsations ou alors en tant qu’outil. Ou voit alors quelquesfan annoncer l’inutilité du typage. C’est abhérent car le typage n’est pas uniquement un artéfact due à la faible abstaraction des premiers langagues: le typage défini un modèle, et le modèle est au centre de tout a partir du moment ou il faut développer un système/application complexe qui est appeller à évoluer. C’est à ce point fondamental que certaines méthodologies commencent par le modèle avant le développement lui même (MDA).

Je pense donc que pour l’instant les languages dynamiques offrent une rapidité de dévelopment inégalée bien utile aucx development d’outils internes, de test ou de prototypage…mais n’enlève rien au besoin fondamental de typage/contrat des entitées utilisées dans une application ou un système complexe afin qu’il puisse évoluer.