C'est effectivement une définition que l'on peut choisir.
une des définitions donnée est celle-ci
dans ce cas Java est faiblement typé carles conversions implicites de types sont formellement interdites. Si de telles conversions sont possibles, le langage est faiblement typé.Le puriste de Java me dirons que dans ce cas c'est la méthode Integer.toString(); je réponds tout comme en javascript et dans ne nombreux langage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Integer i = 5; String a = "test : " + i;
une autre définition parfois combiné avec la précédente parfois non estLorque je faisla compilation ou l'exécution peuvent détecter des erreurs de typage. Si ces erreurs ne sont jamais reconnues, le langage est faiblement typési cela me retourne NaN (Not a Number)
Code : Sélectionner tout - Visualiser dans une fenêtre à part a= Math.sin("t");
Ais-je détecté que le type est incorrect ?
Math.sin étant une méthode don la signature prends tout objet y a-t-il eu une erreur non détecté ?
JS serait-il fortement typé si tout d'un coup aulieu d'utiliser la LIB standard j'en utilisait une qui vérifie le type de Math.sin ?
Que dire des fonction qui retourne une code 0 1 -1 et ne lève aucune exception ?
Je trouve que tous cela est bien plus ambigüe qu'il n'y parait.
Si je réuni ces deux définitions j'aurais tendence à dire que JS est faiblement typé.
Mais je peux choisir d'autre définition. par exemplede tels langages existes. je pourais faireUn langage est faiblement Typé s'il autorise un objet à changer de type au cours de sa vie.dans un tel exemple les référence a b et c ne change jamais de nature. un copilateur type Java pourait donc vérifier les type et ne trouverait aucune erreur de type.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Object a = new Integer(5); Integer b = a; typeof a; // Integer log(b); //5 a.toString(); String c = a; typeof a; // String log(b); //null log(c); //"5"
pourtant l'objet à changé de nature en cours de route.
si je prends les deux première définition ce langage est fortement typé. si je prends la dernière JS est fortement typé.
qui croire ?
Benjamin C. Pierce American professor of computer science at the University of Pennsylvania.
author of one book on type systems, Types and Programming Languages ISBN 0-262-16209-1. has also edited a collection of articles to create a second volume Advanced Topics in Types and Programming Languages ISBN 0-262-16228-8. à dit
Je suis du même avis. Sur la grosse centaine de langage que je connais (plus ou moins bien) la diversité est telle que je suis incapable de choisir une définition de fortement typé ou faiblement typé.J'ai passé quelques semaines à essayer de clarifier les terminologies « fortement typé », « statiquement typé », « sûr », etc., et j'ai trouvé cela extraordinairement difficile… L'utilisation de ces termes est si diverse qu'elle les rend presque inutiles.
Je préfère comprends le typage du langage que de savoir s'il est fortement ou faiblement typé.
pour moi le typage le plus faible està l'opposé le plus fort typage est celui qui interdit toute utilisation d'un type à la place d'un autre. et qui donc impose à chaque objet le nécéssitant la présence d'une méthode explicite (comme toString() en Java) appellée explicitement.Un langage est faiblement Typé s'il autorise un objet à changer de type au cours de sa vie.entre les deux existe une multitude de définition qui donne une palette de couleur au choix.
Code : Sélectionner tout - Visualiser dans une fenêtre à part String a = "test : " + i.toString();
A+JYT
Partager