Introduction
Le langage C, tel qu'introduit par Brian Kernighan et Dennis Ritchie dans "The C Programming Language", a profondément influencé le développement logiciel. Pourtant, beaucoup d'aspects de la première édition de ce langage, souvent appelé K&R C, restent méconnus. Après avoir exploré la spécification du livre, le document de rationalisation C89, et le code source du compilateur Unix de la 7e édition, voici ce que j'ai découvert.
Une grammaire contextuelle et sensible
La grammaire du C est souvent critiquée pour sa complexité. Cependant, dans le contexte du développement de l'époque, elle avait du sens. Le compilateur C original était monopasse, essentiel pour les systèmes à mémoire limitée. Cela signifiait que le suivi des identificateurs lors de l'analyse était déjà intégré. Ainsi, la grammaire contextuelle, bien que maladroite, était justifiable.
L'absence de void
Fait surprenant, void est une invention de l'ANSI C. Avant, les fonctions retournaient implicitement int. Si un retour n'était pas nécessaire, il suffisait de ne pas utiliser d'instruction de retour. Les pointeurs, quant à eux, étaient plus flexibles, permettant une assignation libre entre eux.
Types de flottants différents
Le K&R C ne connaissait pas long double, mais plutôt long float, synonyme de double. Cette approche visait probablement à éviter l'introduction de nouveaux mots-clés, bien que la coexistence des deux soit intrigante.
Spécificateurs de type
Il n'y avait pas de spécificateur signed; seul unsigned existait. Les combinaisons de spécificateurs étaient limitées, rendant la gestion des types plus simple mais déroutante pour les développeurs modernes.
Pourquoi cela reste pertinent
Avec l'essor des systèmes embarqués et des applications nécessitant une gestion fine des ressources, comprendre les origines du C peut offrir une perspective précieuse. Le K&R C, bien que considéré archaïque, illustre une approche de conception focalisée sur l'efficacité et la simplicité.
Conclusion
Le K&R C, malgré ses limitations, a posé les bases d'un langage qui continue d'influencer de nombreuses technologies. Pour les développeurs cherchant à optimiser leurs systèmes, ces leçons historiques restent essentielles.
Discutons de ton projet en 15 minutes.