Je me demande pourquoi les langues faiblement typées sont toujours activement développées. Par exemple, quel avantage peut-on tirer de pouvoir écrire
$someVar = 1;
(...) // Some piece of code
$someVar = 'SomeText';
au lieu d'utiliser la version très différente et typée
int someInt = 1;
(...)
string SomeString = 'SomeText';
Il est vrai que vous devez déclarer une variable supplémentaire dans le deuxième exemple, mais est-ce que cela fait vraiment mal? Toutes les langues ne devraient-elles pas s'efforcer d'être fortement typées car elles renforcent la sécurité des types au moment de la compilation, évitant ainsi certains écueils dans la transcription de types?
weak-typing
DotNetStudent
la source
la source
Réponses:
Le typage fort / faible et le typage statique / dynamique sont orthogonaux.
Fort faible est de savoir si le type de valeur importe, fonctionnellement parlant. Dans une langue faiblement typée, vous pouvez prendre deux chaînes qui se trouvent être remplies de chiffres et effectuer une addition entière sur celles-ci; dans une langue fortement typée, il s'agit d'une erreur (sauf si vous convertissez ou convertissez d'abord les valeurs en types corrects). La frappe forte / faible n'est pas une chose en noir et blanc; la plupart des langues ne sont ni 100% strictes ni 100% faibles.
Le typage statique / dynamique consiste à savoir si les types se lient à des valeurs ou à des identificateurs. Dans un langage à typage dynamique, vous pouvez attribuer n'importe quelle valeur à n'importe quelle variable, quel que soit le type; le typage statique définit un type pour chaque identificateur, et l'affectation à partir d'un type différent est soit une erreur, soit une conversion implicite. Certaines langues adoptent une approche hybride, permettant des types déclarés statiquement ainsi que des identifiants non typés («variante»). Il y a aussi l'inférence de type, un mécanisme où le typage statique est possible sans déclarer explicitement le type de tout, en demandant au compilateur de comprendre les types (Haskell l'utilise intensivement, C # l'expose à travers le
var
mot clé).Une programmation dynamique faible permet une approche pragmatique; la langue ne vous gêne pas la plupart du temps, mais elle n'intervient pas non plus lorsque vous vous tirez une balle dans le pied. Un typage statique fort, en revanche, pousse le programmeur à exprimer explicitement certaines attentes concernant les valeurs dans le code, d'une manière qui permet au compilateur ou à l'interpréteur de détecter une classe d'erreurs. Avec un bon système de type, un programmeur peut définir exactement ce qui peut et ne peut pas être fait pour une valeur, et si, par accident, quelqu'un essaie quelque chose de indésirable, le système de type peut souvent l'empêcher et montrer exactement où et pourquoi les choses tournent mal.
la source
&
pour la concaténation), les opérations comme"12"+3
ou45 & "6"
ne posent aucune ambiguïté (elles calculent respectivement 15 et "456"). Dans un langage plus fortement typé, l'opérateur "+" pourrait être surchargé en toute sécurité pour la concaténation de chaînes et l'ajout numérique sans provoquer d'ambiguïté car les opérations sur les chaînes et les nombres seraient interdites. Des problèmes surviennent lorsque le langage ne précise ni les types ni les opérations à effectuer.Un typage faible est plus dans le sens de
1 == "TRUE"
. Cette section sur le wikipedia illustre bien la différence.Veuillez noter qu'aucun des exemples de wikipedia n'est tapé statiquement, ce à quoi vous faites référence dans votre deuxième exemple.
Donc, si la question est de savoir pourquoi les gens utilisent des langages typés dynamiquement, alors la réponse est: les systèmes de type statiques vous imposent des limites. Beaucoup de gens n'ont tout simplement jamais travaillé avec un système de type statique expressif, ce qui les amène à conclure que les inconvénients du typage statique l'emportent sur les avantages.
la source
Les langages de types faibles sont toujours en cours de développement car les gens les utilisent et les aiment. Si vous n'aimez pas le typage faible, n'utilisez pas de langues faiblement typées. Déclarant que quelque chose est la seule vraie voie et que tout le monde devrait le faire, la seule vraie voie ignore la complexité du monde.
la source
Pas nécessairement. Learning Objective-C: A Primer aborde cette question directement dans le contexte d'Objective-C:
la source