intéret du typage - Divers - Programmation
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.
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.
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.
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 |
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).
Marsh Posté le 29-08-2010 à 08:51:26
masklinn a écrit : |
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.
Marsh Posté le 29-08-2010 à 09:04:21
UB?
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
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
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
Marsh Posté le 29-08-2010 à 11:36:37
masklinn a écrit : |
Excuse moi d'avoir à travailler pour de vrai
Marsh Posté le 29-08-2010 à 12:19:47
Joel F a écrit : Excuse moi d'avoir à travailler pour de vrai |
C'est pas parce-que tout le monde n'est pas éboueur que tu dois être frustré comme ça.
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
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
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 |
Comme je l'ai originellement expliqué, c'est un choix perso
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...
Code :
|
Citation : |
Marsh Posté le 31-08-2010 à 19:19:37
skeye a écrit :
|
c'est nul, ca renvoie même pas "6 pommes"
Marsh Posté le 31-08-2010 à 20:03:47
lorill a écrit : |
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