intéret du typage

intéret du typage - Divers - Programmation

Marsh Posté le 28-08-2010 à 17:44:12    

Bonjour,
 
 
Quel est l'intérêt d'un typage fort comme on le trouve dans les langages comme java,c ... par rapport aux langages non typés comme le php
 
Je suis convaincu que le typage c'est bien mais je n'arrive pas à l'expliquer clairement.
 
Merci

Reply

Marsh Posté le 28-08-2010 à 17:44:12   

Reply

Marsh Posté le 28-08-2010 à 18:42:56    

- typage statique: le type est porté par les variables
- typage dynamique: le type est porté par les valeurs
- non typé (ex. assembleurs, BCPL): le type est porté par les opérateurs
 
Typage fort ou pas: est-ce qu'il y a la possibilité de tromper le système de type.  Ca ne s'applique pas aux langages non typés.  Le C est moins fortement typé que le PHP (à ma connaissance, en PHP il n'y a pas moyen d'appliquer une opérateur sur des valeurs du mauvais type, en C, entre les casts et les fonctions variadiques, c'est aisé).
 
L'avantage du typage statique par rapport au typage dynamique, c'est qu'un certain nombre d'erreurs sont détectées statiquement, à la compilation (en prime, c'est plus facile de générer du code efficace).  L'inconvéniant, c'est qu'on perd un peu de souplesse.  En passant, on peut considérer que la POO dans les langages typés statiquement réintroduit un peu de typage dynamique, mais d'une manière qui est vérifiable statiquement.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 28-08-2010 à 18:56:45    

Typage_fort, par Wikipedia.
 

Reply

Marsh Posté le 28-08-2010 à 19:04:48    

Tu mélanges typage statique/dynamique et typage fort/faible.
 
Tout est relatif, mais on pourrait dire que par exemple:
- Java: typage statique & fort
- python: typage dynamique & fort
- perl: typage dynamique & faible (polymorphisme ad hoc, etc)
- C: typage statique & faible.
 
 
Un typage fort, même dynamique, te garantit que tu ne peux appliquer que des opérations légale à tes données. Le contre-exemple, c'est le C: t'as un pointeur, pour peut que tu le casts, tu peux en faire ce que tu veux, même si ça fait n'importe quoi. Alors qu'en ruby, si tu as un Fixnum, tu ne pourras jamais lui appliquer des opérations d'Array. Tu te prendras une exception (typage dynamique) mais tu ne passeras pas.

Reply

Marsh Posté le 28-08-2010 à 21:52:57    

Taz a écrit :

Tout est relatif, mais on pourrait dire que par exemple:.


On pourrait surtout dire que "typage fort" n'a strictement aucune signification formelle, qu'il y a des dizaines de définitions différentes pour la différence faible/fort et qu'il ne faut jamais utiliser ces termes dans une discussion de types, c'est la marque d'un charlot.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-08-2010 à 21:57:00    

dav-42 a écrit :

Quel est l'intérêt d'un typage fort comme on le trouve dans les langages comme java,c ... par rapport aux langages non typés comme le php
 
Je suis convaincu que le typage c'est bien mais je n'arrive pas à l'expliquer clairement.


Là tu parles surtout de l'axe typage statique vs typage dynamique.
 
Le typage statique n'est pas intrinsèquement supérieur au dynamique (surtout avec des systèmes de types pourris et pleins de trous genre C ou Java). Il limite habituellement la flexibilité du langage (à quel point dépend du système de types choisi et de la manière dont il est implémenté), mais elle transforme certaines classes d'erreur (là encore en nombre variable selon le système de types) en erreurs statiques de compilation, offrant certaines sécurités (car évitant de pouvoir trouver ces erreurs dans le programme).


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-08-2010 à 08:51:26    

masklinn a écrit :


 mais elle transforme certaines classes d'erreur (là encore en nombre variable selon le système de types) en erreurs statiques de compilation, offrant certaines sécurités (car évitant de pouvoir trouver ces erreurs dans le programme).


 
C'ets leur intérêt principal non ? Enfin, moi j'aime bien quand ca compile pas plutot que quand ca fait des UB sans raison.

Reply

Marsh Posté le 29-08-2010 à 09:04:21    

UB?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-08-2010 à 09:53:04    


 
Undefined Behavior.
 
En parlant du typage du C, ne pas oublier que c'est l'évolution d'un langage non typé auquel on a ajouté un typage statique.
 
En passant: http://lucacardelli.name/Papers/TypeSystems.pdf


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 29-08-2010 à 10:15:55    

Un Programmeur a écrit :

Undefined Behavior.


C'est pas parce qu'une erreur n'est pas choppée statiquement que ça mène à une UB, tout le monde ne code pas en C [:petrus75]

Un Programmeur a écrit :

En parlant du typage du C, ne pas oublier que c'est l'évolution d'un langage non typé auquel on a ajouté un typage statique.


Pas mon problème [:spamafote]

Message cité 1 fois
Message édité par masklinn le 29-08-2010 à 10:17:15

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-08-2010 à 10:15:55   

Reply

Marsh Posté le 29-08-2010 à 11:36:37    

masklinn a écrit :


C'est pas parce qu'une erreur n'est pas choppée statiquement que ça mène à une UB, tout le monde ne code pas en C [:petrus75]


 
Excuse moi d'avoir à travailler pour de vrai :o

Reply

Marsh Posté le 29-08-2010 à 12:19:47    

Joel F a écrit :

Excuse moi d'avoir à travailler pour de vrai :o

C'est pas parce-que tout le monde n'est pas éboueur que tu dois être frustré comme ça.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-08-2010 à 12:40:19    

masklinn a écrit :

C'est pas parce-que tout le monde n'est pas éboueur que tu dois être frustré comme ça.


pardon, vendredi c'etait y a deux jour  :o  
 
Plus sérieusement, on est bien d'accord, le terme UB est un peu fort. Mais le message est là. Je préfére attraper les erreurs à la compil qu'en prod  :jap:

Reply

Marsh Posté le 29-08-2010 à 12:47:25    

Joel F a écrit :

Plus sérieusement, on est bien d'accord, le terme UB est un peu fort. Mais le message est là. Je préfére attraper les erreurs à la compil qu'en prod  :jap:


Comme je l'ai originellement expliqué, c'est un choix perso [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 29-08-2010 à 12:49:28    

d'où mon "je préfére"

Reply

Marsh Posté le 31-08-2010 à 14:39:22    

Un Programmeur a écrit :

Le C est moins fortement typé que le PHP (à ma connaissance, en PHP il n'y a pas moyen d'appliquer une opérateur sur des valeurs du mauvais type, en C, entre les casts et les fonctions variadiques, c'est aisé).


 
Faut le dire vite...:D
 

Code :
  1. $i = "3 pommes";
  2.  
  3. function add($a, $b){
  4.  
  5. return $a + $b;
  6.  
  7. }
  8.  
  9. echo add($i, $i);


 

Citation :


6


 
[:doc petrus]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-08-2010 à 19:19:37    

skeye a écrit :


 
Faut le dire vite...:D
 

Code :
  1. $i = "3 pommes";
  2.  
  3. function add($a, $b){
  4.  
  5. return $a + $b;
  6.  
  7. }
  8.  
  9. echo add($i, $i);


 

Citation :


6


 
[:doc petrus]


c'est nul, ca renvoie même pas "6 pommes" :fou:

Reply

Marsh Posté le 31-08-2010 à 20:03:47    

lorill a écrit :


c'est nul, ca renvoie même pas "6 pommes" :fou:


 
[:chrisbk]


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed