Veille Technologique : Étudier les avantages et inconvénients du typage statique et du typage dynamique pour des applications interactives Sujet proposé par Noël Plouzeau François HUVE - Mathieu GUICHAOUA M2 GL Istic 2011-2012
PLAN Introduction Partie 1 : Cas des langages au typage dit statique Partie 2 : Cas des langages au typage dit dynamique Conclusion
Introduction Application interactive ? Plusieurs écrans Navigation et interaction
Introduction Une grande variété de dimensions pour le typage. Celle qui nous intéresse : Typage statique (ex : Java…) / Typage dynamique (ex: PHP…) Meilleur choix pour une application interactive ?
Partie 1 : Cas des langages au typage dit statique Définition du typage statique Langages statiques à composantes dynamiques Opposition au typage dynamique
Partie 1 : Cas des langages au typage dit statique Avantage : erreurs relevées à/avant compilation Question : fiabilité indispensable ?
Partie 1 : Cas des langages au typage dit statique Avantage : optimisation de code et performances Question : rapidité nécessaire ?
Partie 1 : Cas des langages au typage dit statique Inconvénient : code à ajouter manuellement pour transtyper une variable Complexifie la vie de développeurs avec moins d’expérience
Partie 1 : Cas des langages au typage dit statique Exemple : Traitement sur des entiers Pseudo code (typage statique) : a = 4 b = "2" concatenate(a,b) #Erreur de type add(a,b) #Erreur de type concatenate(str(a),b) #Rend "42" add(a, int(b)) #Rend 42
Partie 1 : Cas des langages au typage dit statique Exemple : Traitement sur des entiers Pseudo code (typage dynamique) : a = 4 b = "2" concatenate(a,b) # Rend "42" add(a,b) # Rend 42 Typage faible + typage dynamique = simplifie codage + ajoute risques
Partie 2 : Cas des langages au typage dit dynamique Avantages principaux : - Simplification code concernant variables - Compilation plus rapide -> important pour visualisation - Moins de questions à se poser sur type des données ex : numéro de téléphone
Partie 2 : Cas des langages au typage dit dynamique Simplification codage vs. Insécurité des types Risque d’incohérence des données Question : prêts à prendre le risque ?
Partie 2 : Cas des langages au typage dit dynamique Inconvénient, exemple concret : concept objet en PHP source : Wikipedia::PHP (English)
Partie 2 : Cas des langages au typage dit dynamique Suite inconvénients : typage non statique dans concept objet demande : - Plus de rigueur sur les appels de méthodes - Capacité à se passer de complétion contextuelle de l’IDE - Encore PLUS de tests, diffère selon les cas
Partie 2 : Cas des langages au typage dit dynamique Avantage concernant tests : gain de temps sur la "compilation" Petit avantage "sale" : typage dynamique permet meilleur réutilisation code via concept objet en autorisant n’importe quel appel de méthode sur n’importe quel objet tant qu’il ne provoque pas d’erreur de typage
Conclusion Dépend fortement du contexte de développement ! ( spécifications appli. , niveau d’optimisation code voulu… ) Cependant, typage dynamique semble préférable pour applications interactives
Conclusion Résumé des raisons : - Plus rapide pour tester l’interface graphique, permet plus de tests vraiment fonctionnels - Simplifie code pour développeur, permet faire faire à moindre prix (surtout pour appli web) - Langages à typage statique pas nativement faits pour des applications interactives (nécessité passer par librairies) tandis que certains langages à typage dynamique sont faits pour cela (PHP, JavaScript…). Mix intéressant : Google Web Toolkit
Questions ? Sources : Premières parties de : Including both static and dynamic typing in the same programming language, by F. Ortin D.Zapico, J.B.G. Perez-Schofield, and M. Garcia Et articles Wikipédia : http://fr.wikipedia.org/wiki/Typage_statique http://en.wikipedia.org/wiki/Dynamic_typing http://en.wikipedia.org/wiki/Php http://en.wikipedia.org/wiki/Strong_typing