C, C++, Python, ADA, Ruby, Java, Rust, MISRA-C, Swift et j’en passe. Autant de noms de langages qui se voient associés pour leur plus grand bien ou pour leur malheur à la question de la sécurité. Ou de la sûreté. Ou les deux. En cinquante ans, les besoins ont évolué et avec eux les contraintes auxquelles les développeurs — et donc les langages qu’ils utilisent — sont soumis. Petite rétrospective à travers différents langages qui ont, ou ont eu, leur heure de gloire.
0. C
En 1972, quand le langage C sort des laboratoires Bell, les ressources sont faibles : peu de mémoire, fréquence d’horloge faible, Internet n’existe pas… Dans ce contexte, la sécurité n’est pas essentielle. Et cela peut se comprendre : avec de telles contraintes, on essaie d’optimiser chaque instruction, d’utiliser le moins de mémoire possible, certainement pas de contrôler la validité de chaque opération !
Beaucoup de concepts avec lesquels nous sommes familiers viennent d’ailleurs de cette période.
Compilation séparée ? Bien sûr, un compilateur ne peut pas faire tenir en mémoire des programmes trop gros (anecdote amusante : pour être conforme avec le standard ANSI C, un compilateur n’a pas besoin de supporter des identifiants de plus de… 6 caractères pour les identifiants externes et 31 pour les identifiants locaux. La place, je vous dis).
Gestion manuelle de la mémoire ? L’IBM Personal Computer, contemporain de cette époque,...
- 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