Lorsque l’on parle de programmation sécurisée, on pense d’abord à un dépassement d’indice d’un tableau ou à des droits d’accès non respectés, puisque ces aspects sont visibles par le programmeur. Par contre, la pile est sous le contrôle absolu du compilateur et le contrat implicite est que « ça fonctionne » tant que nous le laissons faire son travail, qui est de plus en plus alambiqué. L’article précédent [1] détaillait de façon lovecraftienne les soucis de flexibilité et de sécurité inhérents au modèle de programmation à une seule pile, utilisé par (quasiment) tous les compilateurs actuels. J’ai amalgamé tous ces problèmes dans le terme « Single Stack Syndrome », mais il n’y a pas que le C ou le x86 dans la vie ! Nous pouvons trouver des inspirations dans d’autres langages, d’autres architectures et d’autres ères.
Mais quand nous parlons de piles, de quoi s’agit-il vraiment, pourquoi et depuis quand ? Un petit (re)tour dans l’histoire de cette structure indispensable, que tout informaticien doit absolument connaître, s’impose, car elle a connu une longue et sinueuse évolution.
1. Au commencement
Je n’ai pas trouvé de trace des piles comme structure ou circuit avant l’avènement de l’ère informatique. Je doute que le boulier entre dans cette catégorie. La récursion est cependant connue par les mathématiciens, en particulier en tant que concept sous-jacent aux preuves inductives.
Le problème des Tours de Hanoï fut publié en 1889 et sa résolution emploie habituellement un algorithme récursif sur trois piles, mais il a fallu attendre encore pour que cette structure dernier arrivé premier sorti soit mécanisée. En tout cas, les piles sont entrées dans la culture informatique dès la fin de la Deuxième Guerre mondiale, car elles sont essentielles au...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première