Tout dépend du système de type, mais un système statique peut se permettre d'oublier les types à la compilation (pas de checks à runtime) alors qu'un système dynamique doit conserver et vérifier les types durant l'exécution du programme. Cela apporte potentiellement une meilleure performance du programme.
L'argument principal en faveur du typage statique étant toutefois qu'un système de type permet de détecter des classes d'erreurs à la compilation en rendant les mauvais programmes impossibles à écrire.
A type system is a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute
Benjamin Pierce, Types and Programming Languages
C'est l'expressivité du système de type qui détermine sa capacité à capturer des mauvais comportements. Toutefois il faut limiter cette expressivité pour être capable d'assigner un type à une expression en un temps raisonnable.
Un système de type dynamique n'assure rien à la compilation, donc par construction on remplace la notion d'état non représentable en erreur (spécifique) à l'exécution. Cela permet de ne pas se soucier des types avant de lancer le programme, mais en contrepartie, il faut se convaincre que tout marche comme on s'y attend (ce qui devient dur sur de gros programmes).
Une petite remarque : les garanties d'un système de types sont à modérer, car on peut faire des conversions non-sûres dans la majorité des langages. C'est le cas de C avec les casts, mais aussi d'ocaml avec Obj.magic.
Pour moi un système de type statique fort est un avantage certain.
[^] # Re: Go ?
Posté par Aluminium95 . En réponse au journal Java (EE) Sapu cépalibre.. Évalué à 6.
Tout dépend du système de type, mais un système statique peut se permettre d'oublier les types à la compilation (pas de checks à runtime) alors qu'un système dynamique doit conserver et vérifier les types durant l'exécution du programme. Cela apporte potentiellement une meilleure performance du programme.
L'argument principal en faveur du typage statique étant toutefois qu'un système de type permet de détecter des classes d'erreurs à la compilation en rendant les mauvais programmes impossibles à écrire.
C'est l'expressivité du système de type qui détermine sa capacité à capturer des mauvais comportements. Toutefois il faut limiter cette expressivité pour être capable d'assigner un type à une expression en un temps raisonnable.
Un système de type dynamique n'assure rien à la compilation, donc par construction on remplace la notion d'état non représentable en erreur (spécifique) à l'exécution. Cela permet de ne pas se soucier des types avant de lancer le programme, mais en contrepartie, il faut se convaincre que tout marche comme on s'y attend (ce qui devient dur sur de gros programmes).
Une petite remarque : les garanties d'un système de types sont à modérer, car on peut faire des conversions non-sûres dans la majorité des langages. C'est le cas de C avec les casts, mais aussi d'ocaml avec
Obj.magic.Pour moi un système de type statique fort est un avantage certain.