La notion de type est très très loin d'être une notion technique.
C'est justement ce que je conteste. La notion de type est une notion technique induite par la manière dont l'ordinateur stocke les données et par l'utilisation que tu peux en faire.
Pour un débutant, il pourrait n'exister que deux types de données : les nombres et les chaines de caractères. Les booléens sont inutiles, parce que dans du code de débutant, ils sont implicites : aucun débutant de va faire "bool ans = a > 2; if (ans) {...}". À l'adolescence, j'ai codé des années sans tilter qu'on pouvait stocker le résultat d'un test dans une variable, et ça ne m'a pas gêné plus que ça.
Il ne faut pas prendre le débutant pour un débile. Quand il fait des cin >> pour lire des données entrées au clavier et les stocker dans des variables, il sait très bien qu'il tape les touches "4" et "2" pour rentrer 42, et que c'est le programme qui les transforme en nombre ou en caractères. Et, contrairement à ce qu'on peut prétendre après 10 ans d'expérience en programmation, ça n'a rien de logique. Sur une feuille de papier, "42" et 42 sont conceptuellement exactement identiques. C'est pareil que pour la différence entre un int et un float ; la différence n'existe qu'à cause d'une contrainte technique. La programmation typée crée une différence artificielle entre les deux, et en fonction du langage, le transtypage peut être plus ou moins complexe. Mais je vois ça comme un défaut inhérent à la formalisation d'un programme, ça n'est pas intuitif, et ça n'est pas important pour comprendre la logique d'un programme.
À mon avis, l'intérêt du typage fort ne saute aux yeux qu'après des années à avoir expérimenté les bugs dus aux ambiguités du typage faible. On demande un password et on n'a pas prévu que l'utilisateur rentre "1234", etc. Mais d'une manière générale, un argument du type "C'est compliqué et ça vous gêne maintenant, mais vous verrez plus tard que c'est important" est un argument très faible ; c'est un argument d'autorité, souvent d'ailleurs employé pour justifier une pédagogie archaïque (apprentissage des instruments de musique, par exemple: fais des gammes pendant 3 ans, et après seulement tu auras le droit de jouer un morceau).
[^] # Re: Décalage
Posté par arnaudus . En réponse à la dépêche MicroAlg: langage et environnements pour l’algorithmique. Évalué à 4.
C'est justement ce que je conteste. La notion de type est une notion technique induite par la manière dont l'ordinateur stocke les données et par l'utilisation que tu peux en faire.
Pour un débutant, il pourrait n'exister que deux types de données : les nombres et les chaines de caractères. Les booléens sont inutiles, parce que dans du code de débutant, ils sont implicites : aucun débutant de va faire "bool ans = a > 2; if (ans) {...}". À l'adolescence, j'ai codé des années sans tilter qu'on pouvait stocker le résultat d'un test dans une variable, et ça ne m'a pas gêné plus que ça.
Il ne faut pas prendre le débutant pour un débile. Quand il fait des cin >> pour lire des données entrées au clavier et les stocker dans des variables, il sait très bien qu'il tape les touches "4" et "2" pour rentrer 42, et que c'est le programme qui les transforme en nombre ou en caractères. Et, contrairement à ce qu'on peut prétendre après 10 ans d'expérience en programmation, ça n'a rien de logique. Sur une feuille de papier, "42" et 42 sont conceptuellement exactement identiques. C'est pareil que pour la différence entre un int et un float ; la différence n'existe qu'à cause d'une contrainte technique. La programmation typée crée une différence artificielle entre les deux, et en fonction du langage, le transtypage peut être plus ou moins complexe. Mais je vois ça comme un défaut inhérent à la formalisation d'un programme, ça n'est pas intuitif, et ça n'est pas important pour comprendre la logique d'un programme.
À mon avis, l'intérêt du typage fort ne saute aux yeux qu'après des années à avoir expérimenté les bugs dus aux ambiguités du typage faible. On demande un password et on n'a pas prévu que l'utilisateur rentre "1234", etc. Mais d'une manière générale, un argument du type "C'est compliqué et ça vous gêne maintenant, mais vous verrez plus tard que c'est important" est un argument très faible ; c'est un argument d'autorité, souvent d'ailleurs employé pour justifier une pédagogie archaïque (apprentissage des instruments de musique, par exemple: fais des gammes pendant 3 ans, et après seulement tu auras le droit de jouer un morceau).