Résumé
- Le livre publié en 1983 par Adele Goldberg et David Robson délimitait l’interface entre une image virtuelle Smalltalk-80 et chaque machine virtuelle propre au matériel : mémoire d’objets, bytecodes, contextes d’exécution, envoi de messages et opérations primitives.
- Goldberg a soumis cette interface à des implémentations réelles. Apple, DEC, Hewlett-Packard et Tektronix ont construit des portages, partagé les divergences avec Xerox PARC et comparé leurs exécutions à des traces de référence.
- La réussite prouvait la portabilité à l’intérieur d’une frontière précise. Elle ne démontrait pas une égalité de débit, de pauses, de métriques typographiques, de fenêtres, d’entrées-sorties ou de qualité interactive.
Un standard obligé de démarrer
Smalltalk-80 n’était pas seulement un langage dont il suffisait d’accepter la syntaxe. C’était un milieu de travail persistant : classes, compilateur, navigateur, débogueur, graphiques et interface vivaient ensemble sous forme d’objets. Porter le système signifiait transporter ce monde cohérent. Une description grammaticale n’aurait pas suffi.
Dans Smalltalk-80: The Language and Its Implementation, Adele Goldberg et David Robson ont formalisé une séparation décisive. L’image virtuelle contenait les objets du système et ses outils. En dessous, une machine virtuelle adaptée à l’ordinateur cible fournissait l’interpréteur, la mémoire d’objets et les primitives reliant l’image au calcul, au stockage, à l’écran, au dispositif de pointage et aux fichiers. Les méthodes sources étaient compilées en instructions de huit bits, exécutées par un interpréteur à pile ; les contextes représentaient les calculs actifs.
La promesse de portabilité était donc limitée mais puissante : reconstruire correctement un petit noyau dépendant du matériel, puis charger la même image. Le Blue Book ne remplaçait pas le logiciel par un texte. Il rendait explicites assez de comportements pour qu’une autre équipe puisse recréer la couche inférieure sans dépendre d’un savoir oral détenu à PARC.
Goldberg a ajouté une discipline essentielle : ce ne seraient pas seulement les auteurs qui jugeraient la spécification suffisante.
Les porteurs extérieurs faisaient partie du dispositif de mesure
Dans son histoire orale de 2010 au Computer History Museum, Goldberg raconte avoir obtenu l’autorisation de Xerox de publier largement. Avec l’appui de Bert Sutherland, elle a ensuite recruté Tektronix, Hewlett-Packard, DEC et Apple. Pour participer, une entreprise devait réunir une équipe logicielle interne et son équipe matérielle. La question n’était pas « aimez-vous le langage ? », mais « que produit ce matériel sur les performances de ce système ? ».
Le récit du processus, repris dans Smalltalk-80: Bits of History, Words of Advice, précise que six sociétés ont été invitées et que quatre ont réalisé l’implémentation. Elles se sont engagées à communiquer les erreurs de la spécification et leurs conseils de conception. Xerox livrait des images successives, des indications sur les pointeurs, l’espace objet, les contextes, les méthodes compilées et les classes, ainsi qu’une assistance directe lorsque le texte et le système divergeaient.
Chaque portage devenait ainsi un test du document. Une hypothèse invisible sur l’Alto ou le Dorado apparaissait dès qu’un ingénieur de DEC, HP, Tektronix ou Apple ne pouvait pas reproduire le comportement. La variété matérielle ne constituait pas un bruit à éliminer : elle produisait les questions auxquelles le contrat devait répondre.
Les partenaires n’ont pas apposé un label à un texte achevé. Les numéros et les primitives ont évolué, les images ont grandi, et la première conférence des implémenteurs a discuté comptage de références, ramasse-miettes et caches de méthodes. Goldberg explique que la plupart des chapitres de la tentative antérieure ont été réécrits ; la spécification formelle de la VM, déboguée par l’épreuve des portages, était ce qui méritait d’être conservé.
Les traces disaient exactement quel accord était testé
Une ressemblance à l’écran ne pouvait pas suffire. Les équipes ont reçu plusieurs traces d’exécution. La plus fine exposait les références mémoire, allocations, bytecodes, envois de messages, retours et appels de primitives. Des traces plus longues réduisaient le niveau de détail. L’implémenteur pouvait donc confronter le comportement de sa VM à une séquence attendue.
Cette précision reflétait les couches du Blue Book. Le protocole de mémoire distinguait accès aux pointeurs, aux mots et aux octets. L’interpréteur devait retrouver classe et méthode, créer un contexte, tenir la pile, traiter un échec de recherche et envoyer doesNotUnderstand:. Les bytecodes couvraient empilements, stockages, envois, retours et sauts. Les primitives regroupaient calcul, collections, mémoire, contrôle, entrées-sorties et fonctions système.
Le graphisme montrait nettement la couture. Une grande partie de BitBlt, du texte et de la composition était exprimée dans les objets de l’image. Mais le curseur, le clavier, la mémoire d’écran et les fichiers rencontraient nécessairement une machine physique. Les primitives raccordaient ces deux domaines. Deux hôtes pouvaient donc répondre à la même demande de l’image avec des contrôleurs, des organisations mémoire ou des séquences d’instructions différents.
Le critère de réussite était opérationnel : lire et adopter l’image, puis produire les comportements attendus. Lorsque les équipes ayant réussi les premières étapes ont chargé une quatrième image sans modifier leur VM, elles ont démontré que l’interface s’était stabilisée. Elles n’ont pas démontré que les ordinateurs étaient devenus équivalents.
Compatible ne voulait pas dire identique
Dans le récit de Goldberg, l’adoption de l’image est séparée d’une mesure plus subjective : la performance effective de chaque système. Une image commune rend les machines familières. Les mêmes classes existent, les mêmes méthodes se compilent, les mêmes navigateurs s’ouvrent. Pourtant, le ressenti dépend encore des choix situés sous la frontière portable.
La recherche de méthode peut utiliser un cache différent. La mémoire peut être récupérée par comptage de références, traçage ou combinaison des deux. Une primitive peut être microcodée, écrite en assembleur ou relayée par une fonction hôte plus lente. L’ordonnancement, la scrutation des entrées, la géométrie d’écran, les métriques de police, le curseur et le système de fichiers changent la latence et le rendu. Deux VM correctes peuvent conserver le sens des objets tout en offrant des rythmes très différents.
Le choix des caractères en fournit une preuve discrète. Goldberg se souvient que le groupe a retenu l’ASCII standard parce que tous les participants ne contrôlaient pas leurs polices. La portabilité a ouvert Smalltalk à davantage de machines ; elle a aussi réduit ce domaine d’expression au dénominateur que les hôtes pouvaient partager.
Le préambule du Blue Book reconnaissait en outre que les matériels disponibles ou annoncés manquaient de puissance pour l’ensemble de l’ambition interactive. Une spécification pouvait définir l’envoi d’un message ou l’accès à un objet. Elle ne pouvait pas donner à un processeur lent la vivacité d’un Dorado, agrandir un écran ou supprimer toute pause de récupération mémoire.
La leçon reste actuelle : une preuve de compatibilité vaut à la couche où elle a été recueillie. Réussir le chargement de l’image et la trace de bytecodes prouve l’accord image/VM. Cela ne prouve pas l’identité des délais, des polices, des fenêtres, des périphériques ou de l’expérience complète.
Publier signifiait livrer plusieurs vues du système
La diffusion publique ne se résumait pas au Blue Book. Le numéro spécial de BYTE d’août 1981 a présenté Smalltalk-80 à un public plus large. Le livre de 1983 reliait le langage à la spécification de la VM. Smalltalk-80: The Interactive Programming Environment, paru en 1984, décrivait le travail quotidien dans l’environnement. Glenn Krasner a dirigé le volume où les implémenteurs ont consigné leurs expériences.
Goldberg et Robson ont organisé ensemble le livre du langage. Goldberg décrit un processus dans lequel elle et Dan Ingalls conduisaient les débats et tranchaient les questions de système, tandis que Robson servait de médiateur pour les objections. Ingalls a rappelé plus tard que Robson avait réalisé l’essentiel de l’interpréteur de référence. Texte, modèle exécutable et décision collective devaient donc converger.
Cette histoire ne doit pas être réduite à une invention solitaire. Simula et Sketchpad ont nourri la vision d’Alan Kay ; Kay a formulé l’orientation vers les messages et l’ordinateur personnel. Dan Ingalls a bâti et fait évoluer les interpréteurs. Diana Merry a travaillé sur l’affichage de texte et l’édition mêlant texte et images. Ted Kaehler a contribué aux graphiques bitmap puis aux systèmes mémoire. Larry Tesler a participé au Notetaker et à l’environnement. David Robson a transformé les décisions en spécification et en interpréteur. Les équipes de PARC et les porteurs extérieurs ont rendu le contrat exécutable.
Le rôle de Goldberg devient plus net dans ce cadre : obtenir le droit de publier, relier le laboratoire à une communauté d’implémentation, faire remonter les observations matérielles, coécrire la spécification et conduire la matière jusqu’à une forme publique achevée. Elle n’a pas seulement raconté un système existant ; elle a organisé la procédure qui permettait de savoir ce que le système exigeait réellement.
Une frontière durable parce qu’elle laissait changer la mécanique
L’histoire ultérieure confirme la fécondité de cette séparation. Certaines variantes de Smalltalk sont issues des images licenciées ; d’autres ont été écrites à partir de la documentation. Chez Apple, Dan Ingalls a adapté l’interface à une souris et à des écrans différents. Un processeur plus rapide et une surface d’affichage plus grande ont profondément amélioré l’expérience sans changer l’ascendance conceptuelle du système.
Squeak va plus loin. Dans les années 1990, Ingalls et ses collègues ont utilisé l’interpréteur de référence publié et une image APDA pour amorcer une nouvelle implémentation. Ils ont remplacé la table d’objets par des pointeurs directs, adopté un ramasse-miettes générationnel et produit du C à partir d’un sous-ensemble de Smalltalk. Ted Kaehler, John Maloney et Scott Wallace ont changé des mécanismes centraux tout en préservant la continuité utile.
Un bon contrat portable protège donc une couture, pas chaque détail historique. Il donne aux nouveaux implémenteurs assez de certitude pour transformer la mécanique inférieure, et assez de tests pour voir quand cette transformation brise le monde supérieur.
Le Smalltalk Zoo du Computer History Museum expose aujourd’hui cette diversité. Une famille commune n’est pas une collection de machines identiques. Le Blue Book a permis à Smalltalk de voyager parce qu’il indiquait quels comportements devaient franchir la frontière — et quels choix pouvaient rester locaux.
Sources
- Histoire orale d’Adele Goldberg, Computer History Museum, 2010.
- Adele Goldberg et David Robson, Smalltalk-80: The Language and Its Implementation, 1983.
- Adele Goldberg et David Robson (dir.), Smalltalk-80: Bits of History, Words of Advice, 1983.
- Adele Goldberg, Smalltalk-80: The Interactive Programming Environment, 1984.
- Daniel H. H. Ingalls, « The Evolution of Smalltalk: From Smalltalk-72 through Squeak », 2020.
- Alan C. Kay, « The Early History of Smalltalk », 1993.
- Numéro Smalltalk de BYTE, août 1981.
- Smalltalk Zoo du Computer History Museum.
Briefing des membres
Contexte approfondi du profil
Connectez-vous avec le bon niveau d'adhésion pour débloquer le briefing complet et les notes de source.
Réservé à Strategic Circle
Strategic Circle
Ouvert à tous les lecteurs. Débloquez les briefings de profil après adhésion et connexion.
Rejoindre Strategic CircleRéservé aux membres de Leadership Alliance
Leadership Alliance
Réservé aux propriétaires et dirigeants qualifiés d'actifs IP ; connectez-vous pour débloquer les briefings Alliance.
Rejoindre Leadership Alliance
