Introduction

L'article aborde la question de savoir si C est toujours un langage de programmation ou s'il est devenu un protocole que les autres langages doivent utiliser pour interagir avec les systèmes d'exploitation. L'auteur soutient que C n'est plus un langage de programmation, mais plutôt un standard que les autres langages doivent suivre pour être compatibles avec les systèmes d'exploitation existants.

Contexte Technique

Le problème commence avec les interfaces de fonction étrangères (FFI), qui permettent aux langages de programmation de communiquer avec des fonctions écrites dans d'autres langages. Pour interagir avec les systèmes d'exploitation, les langages doivent utiliser les FFI pour appeler des fonctions écrites en C. Cela signifie que les langages doivent comprendre la syntaxe et la sémantique de C, ce qui peut être difficile en raison de la complexité et de l'ambiguïté du langage. Les exemples de Rust, Swift et Python montrent que même les langages modernes doivent utiliser les FFI pour interagir avec les systèmes d'exploitation.

Analyse et Implications

L'analyse de l'auteur met en évidence les difficultés de parser les en-têtes C et de résoudre les symboles de fonctions. Les outils comme rust-bindgen utilisent libclang pour parser les en-têtes C, mais cela ne résout pas le problème de la résolution des includes, des typedefs et des macros. Les langages doivent donc soit utiliser un compilateur C pour parser les en-têtes, soit les traduire manuellement. Les implications de cela sont que les langages de programmation sont contraints de suivre les conventions de C pour être compatibles avec les systèmes d'exploitation existants, ce qui peut limiter leur capacité à innover et à améliorer leur design.

Perspective

La question de savoir si C est toujours un langage de programmation ou s'il est devenu un protocole est importante pour l'avenir de la programmation. Les limites de C, telles que son manque de définition claire et son ABI non standard, rendent difficile pour les langages de programmation de communiquer avec les systèmes d'exploitation de manière efficace. Les langages de programmation doivent trouver des moyens de contourner ces limitations pour être compatibles avec les systèmes d'exploitation existants. Il est important de surveiller les développements futurs dans ce domaine pour voir comment les langages de programmation évolueront pour répondre à ces défis.