corrector, tu confonds le langage C avec les méthodes de programmation.
Le C est justement un langage considéré comme bas-niveau car il permet de faire n'importe quoi, surtout des trucs qui, algorithmiquement parlant, sont particulièrement cradingue. Mais parfois les contraintes machines sont ce qu'elles sont, et justement C permet d'y répondre mais, certes, salement. Le but est parfois que ça marche, vite et bien.
Si tu veux que le programmeur ne code pas comme un porc, tu l'obliges à utiliser un langage contraignant comme Ada qui est "haut-niveau" car ne permettant pas de faire n'importe quoi en manipulant des pointeurs en entiers ou l'inverse. Cela dit, Ada n'est pas utilisable directement sans API système basée sur du C car la plupart des OS actuels sont tous développés sur des bibliothèques en C.
Si tout était programmé en Ada, on n'aurait peut-etre meme pas de faille de sécurité basée sur des largesses d'appréciation du développeur.
@Jack: un pointeur est un pointeur, pas en entier. Mais C s'en tape, la preuve:
char *tata = toto + 4;
Ca marche car le compilateur s'en moque bien et sait comment s'y retrouver.