2013-05-07 1 views
0

Une langue typée dynamiquement (par exemple, Python) effectue une vérification de type au moment de l'exécution, de sorte qu'une variable ou un paramètre peut faire référence à une valeur de n'importe quel type. La définition de la langue nécessite-t-elle que les variables et les paramètres ne soient pas saisis? Serait-il logique de modifier la langue pour avoir des variables et des paramètres avec des types?Types dans les langages à typage dynamique

+0

Votre question initiale était close. Vous aurez besoin de faire plus d'un changement mineur de formulation pour le demander à nouveau. – Abizern

+0

Des tonnes de langues le font: typage progressif, inférence de type pour les langues dynamiquement typées, les contrats, vous l'appelez. –

+1

Quel est le problème avec la façon dont la question est posée? – akonsu

Répondre

1

Cette question est probablement gonna get fermé à moins sauvé grâce par quelqu'un comme @ jon-Skeet. Jusque là, je crois que quiconque vient d'un arrière-plan de programmation fortement typé plaidera pour au moins l'option de spécifier la frappe. Mais à la fin de la journée, les créateurs/modificateurs de la langue n'aimaient pas l'exigence de taper suffisamment pour ne pas mettre d'effort pour permettre la possibilité de spécifier le type. Je ne compte donc pas que cela se produise, même si cela peut sembler très logique. De ma brève recherche, il semble que python ne permet pas de spécifier les types. Mais vous pouvez vérifier le type en utilisant isinstance http://docs.python.org/library/functions.html#isinstance

Maintenant, pour des raisons personnelles, je dis pourquoi pas. Si les mainteneurs/créateurs de la langue en question peuvent le faire d'une manière qui ne compromet pas l'efficacité/l'intention réelle de la langue, ils devraient au moins permettre à quelqu'un qui est intéressé d'ajouter la capacité de spécifier le type de le faire.

0

Vous pouvez mélanger le typage statique et dynamique; il y a beaucoup de langues qui font cela. Dans le cas le plus simple, vous auriez une hiérarchie de classes comprenant tous les types racine à object (en utilisant la terminologie Python). Chaque variable "non typée" aurait le type object afin qu'elle puisse contenir n'importe quelle variable. D'autres variables peuvent avoir des types plus spécifiques, tels que int. Une implémentation devrait toujours effectuer une vérification de type à l'exécution, mais elle pourrait optimiser les contrôles où les types peuvent être déterminés au moment de la compilation.

Cython fait quelque chose similaire, sauf qu'il déleste la partie de typage statique à un compilateur C:

def foo(): 
    cdef int i = 0 # statically typed variable 
    ham = "spam" # dynamically typed variable 

    while i < 10: 
     print(ham) 
     i += 1 
Questions connexes