Question

Quels que soient ses mérites, Actionscript 3 d’Adobe offre une occasion unique d’explorer les conséquences des langages typés et non typés, car il s’agit plutôt d’un sur-ensemble strict de javascript, avec tous les avantages syntaxiques des déclarations de types strictes, casting déclaratif, etc.

Cela permet de comparer le même code écrit dans les deux sens, tout en éliminant la syntaxe essentielle du langage.

Cela me conduit à me demander s’il existe des preuves quantitatives sur l’avantage réel du typage fort, en particulier pour la vérification des erreurs lors de la compilation, en ce qui concerne les taux d’erreur, la productivité de la programmation et le volume de code; ou nos perspectives sont-elles entièrement basées sur des spéculations et des conjectures? Existe-t-il d'autres langues pouvant être utilisées dans les deux sens (sans compter le VB à l'ancienne - ne pas être une langue très respectée de toute façon.)

J'ai passé beaucoup de temps avec les deux langues, mais je n'ai pas encore décidé de façon concluante ce que je préférais, et je préfère ne pas ajouter de preuves anecdotiques: je recherche des informations objectives.

Était-ce utile?

La solution

C’est l’une des grandes guerres de religion programmées, dépassée peut-être seulement par le conflit entre le seul vrai rédacteur en chef, EMACS, et l’apparition perverse de Satan vi.

En gros, si un programme écrit dans un langage dynamique est correct, il peut être converti en un langage à typage statique tout en conservant son exactitude, et inversement. L’avantage d’une langue véritablement typée statiquement est que les bogues apparaissant au moment de l’exécution dans un langage dynamique peuvent être identifiés lors de la compilation dans un langage typé statiquement.

Ce qui est souvent négligé dans ces situations, c’est que les langages à typage statique ont généralement des traits d’échappement (comme les transmissions de type), et que les langages apparemment dynamiques peuvent utiliser l’inférence de type pour déduire et traiter comme des types à expression statique dynamique. .

Ce qui est vraiment important, sous la couverture, c'est le programmeur. Si le programmeur pense que le programme est correct, il le sera également dans un langage statique ou dynamique. Je ne suis au courant d'aucune bonne preuve expérimentale montrant que l'un ou l'autre est plus productif ou plus enclin à commettre des erreurs en pratique.

Autres conseils

À mon avis, les langages fortement typés tels que C # peuvent identifier pendant la compilation de nombreuses erreurs ignorées qui ne seraient pas capturées dans un langage mal typé et provoqueraient donc une erreur d’exécution plus tard. Je ne pense pas qu'il s'agisse d'une spéculation, car une compilation stricte peut anticiper les problèmes susceptibles de provoquer des erreurs lors de l'exécution. Cela peut potentiellement éliminer la plupart des erreurs de codage que vous oubliez lors de l'implémentation, mais qui peuvent être facilement trouvées et corrigées par le compilateur.

La valeur du typage statique me semble assez limitée si vous croyez, comme moi, que vous ne pouvez pas dire que quelque chose est vraie à propos d'un logiciel, sauf si vous avez un test démontrant que c'est le cas. Si vous l'acceptez et le mettez en pratique, alors peu importe que les bogues soient identifiés au moment de la compilation ou au moment du test.

À ce stade, je préférerais le plus succinct des deux types de langages, qui selon mon expérience sont des langages dynamiques.

D'un autre côté, le typage statique ne vous aide vraiment que si vous n'écrivez pas de tests. Si tel est le cas, le typage statique ne suffira probablement pas pour assurer le bon fonctionnement de votre logiciel.

L'OP et felipecsl ne comprennent pas bien la terminologie utilisée pour parler des disciplines de frappe.

La saisie statique signifie que les types sont vérifiés pendant la compilation (quelle que soit la signification de la compilation dans la langue). La frappe dynamique signifie que les types sont vérifiés au fur et à mesure de l’exécution des expressions / instructions. Le typage fort signifie par exemple que vous ne pouvez pas transformer (transformer) un pointeur en entier. La frappe faible est le contraire de la frappe forte.

Il n'y a pas de "frappe stricte", pour autant que je sache.

Maintenant, laissez quelqu'un d'autre répondre à la question; -)

Les caractères faibles nécessitent plus de temps de maintenance. À mesure que les programmes deviennent plus complexes, de plus en plus de problèmes surviennent du fait qu’il n’existe pas de compilateur pour résoudre les problèmes évidents. Non recommandé pour les grands projets complexes. Je parle d'expérience.

Statistiquement typé lang. Ont leurs variables et xpressions comme types fixes qui sont explicitement indiqués par le programmeur ou inférés par. Le compilateur.utilisant ceci. Info, la vérification de type ici sera effectuée au moment de la compilation. Alors que les valeurs typées dynamiquement ont des valeurs fixes pour lang, mais les variables et xxpressions ne sont pas corrigées ... en raison du fait que chaque fois qu'un opérande est calculé, il est susceptible de renvoyer des valeurs différentes, la vérification du type est ensuite effectuée après que l'opérande a été calculé. après calcul mais avant d'effectuer l'opération au moment de l'exécution

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top