[gull] Re: Types

JM Nunes Jose.deAbreuNunes at ieug.unige.ch
Fri Sep 30 11:41:54 CEST 2005


(je reprends ma réponse que je n'ai pas pu finir hier...)

Je crois qu'avoir choisit le type "string" n'a fait que compliquer ce
qui peut être montré plus simplement.

Avant je note que on peut forcer énormément les langages vers l'un ou
l'autre paradigme de programmation. Il y 2 ans -je crois- c'est un
programme en C qui a gagné le concours du ICFP (programmation
fonctionnel), je ne crois cependant pas que quelqu'un présente C comme
un langage fonctionnel.

Je recommence donc avec des types plus simples: ints et floats. Ce qui
est en question quand on parle de type c'est n'est pas la répresentation
physique mais bien la sémantique (i.e., ce que c'est le valeur mis dans
une "variable" - dans certains langages on dirait plutôt "binding").
Passons aux nombres:

************
$ ledit ocaml
         Objective Caml version 3.08.3
#  3 / 2;;
- : int = 1
#  3 / 1.5;;
This expression has type float but is here used with type int
***************

ce qui montre que en Ocaml il n'y a pas de conversion implicite de types.
En Python c'est

***************
>>> 3 / 2
1
>>> 3 / 1.5
2.0
***************

donc conversion implicite, donc typage moins strict ou fort que Ocaml
(on peut parler de surcharge de l'opérateur + mais, quoi qu'il en soit,
il n'y a pas de contrôle strict de type).
Et en C c'est pareil.

Le cas de printf, à mon avis, montre juste que C a besoin de
déclarations mais nullement que les types déclarés sont strictement
vérifiés et validés à chaque usage. Je crois que sur ce point Python est
plus strict et, selon j'ai pu lire, le %s est traité de façon toute
particulière. N'empêche: Python n'est pas aussi strict que Ocaml, mais
ça peut être un avantage pour le programmeur.

Pour des définitions non "wikipediques", quioque pas forcement
meilleures, je ne saurai que recommander foldoc.org.

Si l'on parle du même sujet, et si nous sommes d'accord sur ce que sont
les types, alors il est force de conclure que le typage de Ocaml est
plus fort que celui de Python ou C. Ce qui ne veut pas dire qu'un
langage fortement typé est toujours préférable, juste qu'il est plus
strict dans la vérification des types.




More information about the gull mailing list