[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