L’histoire du développement de logiciels s’étend sur près d’un siècle, marqué par d’énormes changements dans les technologies informatiques. On peut dire qu’il y a neuf documents qui ont laissé une marque indélébile sur le monde du développement logiciel. Ces documents, rédigés par des visionnaires et des innovateurs, ont façonné les fondements mêmes de l’informatique et du génie logiciel.
Alan Turing, « On Computable Numbers, with an Application to the Entscheidungsproblem » (1936)
L’article fondateur d’Alan Turing, publié en 1936, est souvent considéré comme la naissance de l’informatique. Dans ce travail, Turing a introduit le concept de la machine de Turing, une construction théorique qui a jeté les bases de la compréhension de l’informatique. Il a démontré que tout problème pouvant être résolu de manière algorithmique pouvait être calculé par une machine de Turing. Ce concept est devenu un modèle de base pour l’informatique, servant de fondement théorique aux ordinateurs modernes.
Les idées visionnaires de Turing ont fourni un cadre théorique pour le calcul et ont eu de profondes répercussions sur le développement pratique des ordinateurs. Ses travaux ont ouvert la voie à la création des premiers ordinateurs numériques, marquant ainsi le début de la technologie informatique.
Première ébauche d’un rapport sur l’EDVAC » de John von Neumann (1945)
En 1945, John von Neumann a rédigé un document qui allait bouleverser l’architecture des ordinateurs. Intitulé « First Draft of a Report on the EDVAC », ce document présente l’Electronic Discrete Variable Automatic Computer (EDVAC) et introduit un tout nouveau concept : l’ordinateur à programme enregistré.
L’idée de Von Neumann était de concevoir un ordinateur qui stocke à la fois les données et les instructions dans la même mémoire, ce qui permet à un ordinateur de modifier son propre programme en cours d’exécution. Ce concept est à la base de l’architecture de von Neumann, qui est encore utilisée dans la quasi-totalité des ordinateurs modernes. Il a comblé le fossé entre les concepts théoriques et l’informatique pratique, ouvrant une ère où les ordinateurs pouvaient être programmés pour effectuer un large éventail de tâches.
« Specifications for the IBM Mathematical FORmula TRANSlating System, FORTRAN » par John Backus et al. (1954)
L’année 1954 a été marquée par un bond en avant dans le développement des logiciels avec la création du langage de programmation FORTRAN. John Backus et son équipe d’IBM ont mis au point ce langage, qui signifie « Formula Translation ». Bien que la spécification du FORTRAN n’ait pas été publiée, son impact sur le monde de la programmation a été profond.
FORTRAN a été le premier langage de programmation de haut niveau, conçu pour simplifier le processus d’écriture de code pour les calculs scientifiques et techniques. Il a apporté avec lui le concept d’abstraction, permettant aux programmeurs d’exprimer les algorithmes sous une forme plus proche de la pensée humaine, plutôt que de devoir travailler au niveau du code machine. Cette évolution des langages de programmation a favorisé le développement de nombreux autres langages de haut niveau et a marqué une étape importante pour rendre le développement de logiciels plus accessible et plus efficace.
Edsger Dijkstra’s « Go To Statement Considered Harmful » (1968)
En 1968, Edsger Dijkstra a publié un article qui remettait en question une pratique courante en programmation, à savoir l’utilisation de l’instruction « go-to ». Intitulé « Go To Statement Considered Harmful », ce document critique l’utilisation non structurée des instructions « go to » dans le code et préconise des pratiques de programmation structurées.
L’argument de Dijkstra était que l’utilisation excessive d’instructions d’introduction conduisait à un code difficile à comprendre, à maintenir et à déboguer. Il a introduit le concept de programmation structurée, qui encourage l’utilisation de structures de contrôle telles que les boucles et les conditionnelles pour créer un code plus lisible et plus fiable. L’article de Dijkstra a influencé la manière dont les programmeurs abordaient le développement de logiciels, en détaillant clairement l’importance de la qualité et de la structure du code.
Nouvelles orientations en cryptographie » de Diffie-Hellman (1976)
L’année 1976 a vu un nouveau développement dans le domaine de la cryptographie avec la publication de « New Directions in Cryptography » par Whitfield Diffie et Martin Hellman. Ce document présente le concept de cryptographie à clé publique, une nouvelle approche de la communication sécurisée.
La cryptographie à clé publique permet à deux parties de communiquer en toute sécurité sur un canal non sécurisé sans avoir à partager une clé secrète à l’avance. Cette innovation a jeté les bases d’une communication numérique sécurisée, en détaillant les protocoles de sécurité encore utilisés aujourd’hui. Les travaux de Diffie et Hellman ont ouvert de nouveaux domaines pour l’échange sécurisé de données, apportant un changement énorme à la cryptographie et modifiant la confidentialité et la sécurité des communications numériques.
Manifeste GNU » de Richard Stallman (1985)
En 1985, Richard Stallman a rédigé le « Manifeste GNU », un document qui allait catalyser le mouvement des logiciels libres. Stallman a défendu le développement et la distribution de logiciels libres, montrant l’importance de la liberté de l’utilisateur et de la collaboration communautaire.
Le manifeste GNU a servi de base au projet GNU, une initiative ambitieuse visant à créer un système d’exploitation libre et gratuit de type Unix. La vision de Stallman, qui considère les logiciels comme une entreprise collaborative, les utilisateurs ayant la liberté d’étudier, de modifier et de distribuer les logiciels, a eu un impact durable sur la communauté des développeurs de logiciels. Elle a inspiré la création de la Free Software Foundation (FSF) et de la GNU General Public License (GPL), qui ont joué un rôle déterminant dans le développement d’innombrables projets de logiciels libres.
Roy Fielding’s « Architectural Styles and the Design of Network-based Software Architectures » (2000)
La thèse de Roy Fielding, intitulée « Architectural Styles and the Design of Network-based Software Architectures » (Styles architecturaux et conception d’architectures logicielles basées sur le réseau), publiée en 2000, a introduit le style architectural REST. REST, qui signifie Representational State Transfer, est devenu un standard dans le développement de services web et d’API.
Les travaux de Fielding ont mis l’accent sur les principes de simplicité, d’évolutivité et d’apatridie dans la conception d’architectures logicielles basées sur les réseaux. Les API RESTful sont depuis lors devenues la base du développement web, permettant les interactions des applications web avec les serveurs et les bases de données. Les contributions de Fielding ont eu un impact énorme et durable sur la façon dont les services web sont conçus et mis en œuvre.
Bitcoin : A Peer-to-Peer Electronic Cash System » de Satoshi Nakamoto (2008)
En 2008, un individu ou un groupe utilisant le pseudonyme Satoshi Nakamoto a publié un livre blanc qui a bouleversé la finance et la technologie. Intitulé « Bitcoin : A Peer-to-Peer Electronic Cash System », ce document présente le concept de monnaie numérique décentralisée et la technologie blockchain sous-jacente.
Le bitcoin offre un moyen d’effectuer des transactions financières sans avoir recours à des intermédiaires tels que les banques. Il s’appuie sur un grand livre décentralisé, la blockchain, pour enregistrer et vérifier les transactions. L’émergence du bitcoin a donné naissance aux crypto-monnaies, entraînant la création de milliers de crypto-monnaies alternatives.
« TensorFlow : A System for Large-Scale Machine Learning » par Martin Abadi et al. (2015)
L’année 2015 a marqué un tournant dans l’apprentissage automatique et l’intelligence artificielle avec la publication de « TensorFlow : un système pour l’apprentissage automatique à grande échelle ». Cet article, rédigé par Martin Abadi et ses collègues, présente TensorFlow, une plateforme open-source permettant de construire et de déployer des modèles d’apprentissage automatique.
Sa flexibilité, son évolutivité et son écosystème étendu en ont fait un choix privilégié pour les chercheurs, les scientifiques des données et les ingénieurs. Ce document a fait progresser les technologies d’apprentissage automatique, en aidant au développement d’applications d’IA sophistiquées et en contribuant à la croissance rapide du domaine.