Speedcoding
Speedcoding : le premier langage scientifique moderne oublié de l’histoire de l’informatique
En 1953, alors que l’informatique n’en est encore qu’à ses débuts, IBM introduit un système de programmation qui va profondément transformer la manière d’utiliser les ordinateurs scientifiques : Speedcoding.
Conçu sous la direction de John W. Backus, ce système ne cherche pas d’abord à rendre les machines plus rapides, mais à résoudre un problème devenu critique dès les premières années du calcul électronique : programmer un ordinateur prend plus de temps que faire les calculs eux-mêmes.
À cette époque, écrire un programme signifie manipuler directement les instructions matérielles de la machine. Chaque opération arithmétique, chaque transfert de donnée et même la gestion de la position de la virgule décimale doivent être contrôlés manuellement. Les ingénieurs passent souvent davantage de temps à corriger leurs programmes qu’à résoudre le problème scientifique initial.
Speedcoding apparaît comme une réponse radicale à cette difficulté. Plutôt que d’obliger le programmeur à penser comme la machine, le système propose de transformer l’ordinateur en une sorte de calculateur scientifique abstrait. Le programmeur décrit alors les opérations mathématiques qu’il souhaite effectuer, tandis qu’un programme résident interprète ces instructions et appelle automatiquement les routines nécessaires.
Un langage interprété avant l’heure
Speedcoding est explicitement défini par ses concepteurs comme un système interprété. Chaque instruction écrite par l’utilisateur n’est pas exécutée directement par le matériel : elle est analysée puis traduite dynamiquement en opérations machine. Cette approche rend les programmes beaucoup plus simples à écrire, au prix d’une exécution généralement dix à vingt fois plus lente que le code machine pur.
Ce compromis peut sembler surprenant aujourd’hui, mais les centres de calcul de l’époque constatent rapidement que le coût principal d’un projet informatique n’est pas le temps machine, mais le travail humain nécessaire pour programmer et tester les applications. Speedcoding assume pleinement ce choix : réduire l’effort intellectuel du programmeur devient prioritaire.
Un langage pensé pour le calcul scientifique
Le cœur du langage repose sur le calcul en virgule flottante. Speedcoding permet de manipuler directement des nombres en notation scientifique, tandis que la conversion entre représentation décimale et binaire est réalisée automatiquement par le système. Cette abstraction élimine une source majeure d’erreurs dans les programmes scientifiques des années 1950.
Le langage fournit également un ensemble remarquable d’opérations mathématiques intégrées. Des fonctions comme la racine carrée, le sinus, l’arc tangente, l’exponentielle ou le logarithme peuvent être appelées directement par une simple instruction symbolique. Pour la première fois, un programmeur peut utiliser des fonctions avancées sans avoir à implémenter lui-même les algorithmes numériques correspondants.
Cette idée — aujourd’hui évidente — constitue l’une des premières formes de bibliothèque standard dans l’histoire des langages de programmation.
Une écriture de programme plus proche des mathématiques
Les programmes Speedcoding sont organisés sous forme d’instructions contenant à la fois une opération de calcul et une opération logique. Une même ligne peut donc effectuer un calcul numérique tout en modifiant le déroulement du programme.
Le langage propose déjà des mécanismes permettant les branchements conditionnels, les répétitions et la construction de boucles, éléments fondamentaux de la programmation moderne.
Un aspect particulièrement innovant réside dans la modification automatique d’adresses mémoire pendant l’exécution. Grâce à des registres spécialisés, certaines instructions peuvent évoluer dynamiquement, réduisant fortement la taille des programmes nécessaires pour traiter des tableaux ou effectuer des calculs matriciels.
Des problèmes qui demandaient auparavant des dizaines d’instructions en langage machine pouvaient parfois être exprimés en quelques lignes seulement.
Un langage conçu pour être utilisé réellement
Contrairement à plusieurs systèmes expérimentaux antérieurs, Speedcoding n’est pas resté théorique. Il est rapidement adopté par plusieurs installations utilisant les premiers ordinateurs scientifiques IBM. Les programmes sont écrits sur feuilles de codage puis transférés sur cartes perforées avant d’être chargés et exécutés automatiquement par le système.
Le langage inclut même des mécanismes de vérification permettant de répéter automatiquement certaines parties d’un programme afin de détecter d’éventuelles erreurs de calcul ou de transmission des données. Cette attention portée à la fiabilité annonce déjà les préoccupations futures du génie logiciel.
Un chaînon essentiel vers les langages modernes
Speedcoding reste étroitement lié à la machine pour laquelle il a été conçu, mais son importance historique dépasse largement ce cadre technique. Il introduit une idée décisive : un ordinateur peut être rendu plus utile non pas seulement par son matériel, mais par une couche logicielle qui simplifie la programmation.
Quelques années plus tard, John Backus appliquera cette même philosophie pour créer FORTRAN. La différence majeure sera l’utilisation d’un compilateur capable de produire du code aussi rapide que le langage machine tout en conservant la facilité d’expression inaugurée par Speedcoding.
Ainsi, même s’il est aujourd’hui peu connu, Speedcoding marque un moment fondamental dans l’histoire de l’informatique : le passage d’une époque où l’on programmait les machines à une époque où l’on commence enfin à programmer des langages.
Photo de couverture : Couverture du manuel IBM Speedcoding System for the Type 701, IBM, 1953.
Document historique issu des archives informatiques (probablement domaine public).
