Smalltalk

2002.10.28

Avant le Macintosh il y a eu le Xerox Alto — un prolongement et radicalisation des idées développés dans le Sketchpad d’Ivan Sutherland et le oNLine System (NLS) de Douglas Engelbart. Et au cœur de l’Smalltalk (matériel), il y a eu l’environement de programmation et de rendu, Smalltalk (logiciel). Ces deux technologies, qui composent en réalité le même projet d’ensemble, ont été inventé au Xerox Parc à Palo Alto (Californie) entre années 1971 et 1980.

C’est Smalltalk qui déterminera plus que tous ces systèmes, l’avenir de l’interface graphique et servira d’influence non seulement pour les systèmes d’exploitation, mais également pour des plateformes de programmation intégrés comme la bibliothèque NeXT ou Java. Mais son influence serait lente. Le projet sera vu par des personalités importantes de l’industrie informatique (Hewlett Packard, Apple, DEC, etc.), mais ne sera jamais commercialisé par Xerox lui-même, qui préfère créer des licences permettant à d’autres (comme Apple) de s’en servir. En conséquence, son impacte n’arriva que très doucement dans les 20 ans qui l’ont succédé, c’est-à-dire par petites gouttes, jamais en masse. Prendre le projet de Smalltalk dans son ensemble était finalement trop difficile à avaler pour une industrie qui avait du mal à comprendre même l’intérêt de base d’une telle machine.

Dans le projet de Xerox Parc il n’y avait pas uniquement une nouvelle façon d’interagir avec la machine, il y avait surtout une nouvelle façon de la programmer. On a tendance à l’oublier, se focalisant plutôt sur son interface graphique. Encore aujourd’hui, cette couche immatérielle reste la plus difficile à manier pour la plupart des utilisateurs; ce genre d’accès est relégé au travail de spécialistes, c’est-à-dire de « programmeurs », et éventuellement des spécialistes auto-déclarés, c’est-à-dire les « hackers ». C’est ce que Steve Jobs a compris à moitié, tout de suite après la conception du Macintosh qui était déjà une des premières tentatives de commercialisation des idées développés aux laboratoires du Xerox Parc; le Macintosh était une grande avancé dans l’industrie informatique, mais il n’était que la moîtié de l’équation. Il fallait que Jobs quitte Apple avant qu’il ne songe à intégrer cette deuxième aspect du projet de l’Smalltalk — la part algorithmique hautement modulaire (cf. NeXT).

They showed me really three things. But I was so blinded by the first one I didn’t even really see the other two. One of the things they showed me was object orienting programming they showed me that but I didn’t even see that. The other one they showed me was a networked computer system. They had over a hundred Alto computers all networked using email etc., etc., I didn’t even see that. I was so blinded by the first thing they showed me which was the graphical user interface. I thought it was the best thing I’d ever seen in my life. Now remember it was very flawed, what we saw was incomplete, they’d done a bunch of things wrong. But we didn’t know that at the time but still though they had the germ of the idea was there and they’d done it very well and within you know ten minutes it was obvious to me that all computers would work like this some day.
– Steve Jobs ; Triumph of the Nerds ; 1996

Par contre, depuis le début du projet d’Alan Kay, tous les élements de la machine (interface graphique, interface de programmation, design mobilier) étaient considérés comme un ensemble et volontairement conçu comme des moyens d’accès en tant que nouvelle forme d’écriture. Cette écriture se construisait dans un ensemble, de mannière holistique (on est dans la Californie du nord des années 1970). Le véritable projet d’Alan Kay n’a jamais été de construire les machines de demain pour les entreprises. Son idée était qu’il fallait construire une machine que des enfants pouvait programmer eux-mêmes — en fonction de leur besoins et leurs logiques d’enfant.

Xerox Alto Smalltalk Graphical Interface
Xerox Alto Smalltalk Graphical Interface

The purpose of the Smalltalk project is to support children of all ages in the world of information. The challenge is to identify and harness metaphors of sufficient simplicity and power to allow a single person to have access to, and creative control over, information which ranges from numbers and text through sounds and images. {…} The result is a lively interactive system which provides its own text editing, debugging, file handling and graphics display on a personal computer.
– Daniel Ingalls ; The Smalltalk-76 Programming System: Design and Implementation ; 1978

Toutes les logiques de la machine devaient découler de cette logique de l’accès à l’algorithme comme nouvelle forme d’écriture. Et cette écriture devait utiliser les enfants comme point de référence : autant qu’un enfant pouvait apprendre à lire et écrire du texte, il pouvait apprendre à lire et écrire des algorithmes :

People people don’t usually sit down and do for themselves a complete a complete tool, like an illustrator, they go to the store and spend several hundreds of dollars, and yet {with Smalltalk} we see twelve year old children coming up with an idea and being able to implement it; and not only being able to implement it, but being able to implement it in a very compact form. Now why is that, and why is this such an important part of computer literacy? I think literacy has three important parts to it. There is an access part, and in the print medium we call that reading: somebody else makes up the material, and we have the skills to penetrate that material and understand it. Access literacy. The second one, is creative literacy. We don’t think a person is literate if all they can do is read, we think they should be able to write. And the English language is powerful enough in its metaphor that we can do very strong expressions of our own intent in just a page or two, and start a revolution with just two pages of well-couched prose. Programming language just haven’t been strong enough and easy enough to understand. But if we’re ever to have computer literacy, it is going to have to have those two things as first order attributes. And then the third thing in computer literacy, is that for anything that we can be literate in there is a literature. So when we read Shakespeare, we have to read Shakespeare with a completely different approach to the genre of the Elisabethan Age than we do from reading Mickey Spilane. So throughout the many centuries in which the English language has existed, there are different genre that we have to adapt to. And that’s the third form of literacy: genre literacy.
– Alan Kay ; Doing With Images Makes Symbols: Communicating with Computers ; 1987

Pour Alan Kay, la part algorithmique de la machine constituait son véritable lieu d’alphabetisation. Il décompose cette alphabetisation en trois constituants : accès (lecture), créativité (écriture), et genre (style) — ce dernier étant évidement plus complexe (et plus ou moins un des sujets principaux de cette thèse), mais les deux premiers sont très simples à comprendre : lire et écrire sont réversibles dans la mesure que pour pouvoir lire il faut savoir écrire. L’alphabetisation informatique pour Kay consistera donc en la création de langages suffisament modulaires et simples que n’importe qui pourrait les apprendre et les manipuler de la même mannière qu’ils apprendraient à lire et écrire des avec des glyphs (cf. le concept de « grammatisation » de Stiegler dans De la misère symbolique)

Smalltalk tire sa force de sa simplicité. Dans la phrase clé qu’on utilise pour défendre la plateforme, on dit que « tout est un objet ». Ce qui signifie que chaque élement qui execute les programmes est une entité conceptuel contenant : a) des variables internes, b) des fonctions internes pour agir sur ces variables, et c) des moyens de communication avec d’autres objets (où des variables et fonctions internes peuvent entrer en jeu) :

Communication is the metaphor for processing in the Smalltalk language. Objects are created and manipulated by sending messages. The same model describes activities ranging from ordinary arithmetic to communicating processes in separate machines. The response to a message is implemented by a method, which reads or writes some data field, or sends further messages to achieve the desired response. The communication metaphor supports the principle of modularity, since any attempt to examine or alter the state of an object is sent as a message to that object, and the sender need never know about internal representation. For example, points represented in polar coordinates r and theta would have a method which responds to the message, y, by returning r*theta cos.
– Daniel Ingalls ; The Smalltalk-76 Programming System: Design and Implementation ; 1978