[gull] Types : [was: Php/MsSQL obsoletes?]

Marc Mongenet marc.mongenet at gmail.com
Fri Sep 30 00:30:38 CEST 2005


2005/9/28, JM Nunes <Jose.deAbreuNunes at ieug.unige.ch>:
> L'occasion d'apporter mes 2 centimes :-)
>
> *************** en C ****************
> main () {
> char* x = "123";
>    printf ("x=%i"; x);
> }
> ************

La fonction printf a le prototype suivant :
int printf(const char *, ...);
L'usage des "..." sert justement à faire sauter la vérification du type
et du nombre de paramètres passés.

Printf me semble donc plutôt démontrer le fort typage de C,
puisqu'il faut avoir recourt à un mécanisme certes fort utilisé
(avec printf, sprintf, fprintf) mais finalement exotique et très
peu connu (qui a déjà écrit une fonction C à liste de paramètres
variable ?)

En fait, C est né avec un typage faible : avant l'invention des
prototypes il n'était pas possible de vérifier le type ni le nombre des
paramètres ! La conversion pointeur-entier se faisait aussi sans
avertissement. Mais C est devenu un langage fortement typé. Les
conversions int - short - long ne représentent plus guère un
problème que pour les académiciens et les rares programmes qui
ont des raisons légitimes d'utiliser des unsigned et autre types
de bas niveau.

Si C était né avec toutes les vérifications de types que chacun utilise
aujourd'hui, tous le monde citerait C comme exemple de langage
fortement typé avec simplement quelques (dangeureux mais pour la
plupart évitables) archaïsmes. Je soupçonne d'ailleurs 90% de la
critique actuel de C de n'être que des échos de la critique, en ce
temps fondée, des années1970.

Marc Mongenet



More information about the gull mailing list