Chuck Moore, expérimentateur inlassable

Intro

Au début, Chuck créa le Forth.
Mais il n'abandonna jamais la créature à son triste sort...

Charles H. Moore, plus souvent nommé "Chuck" dans les textes anglophones consacrés au langage Forth est l'inventeur du langage. On trouve, dans "Le Forth" (de C. Kevin McCabe et traduit par Axel Harvey) édité par Belin Modulo en 1985, la mention suivante :
"... il fut engagé en 1968 par le National Radio Astronomy Observatory, où il installa le premier "vrai" Forth... En 1973, M. Moore s'associa à plusieurs individus pour fonder FORTH Inc., une entreprise ayant pour objet la distribution de versions commerciales du langage..."

Ce qu'il y a de remarquable dans le parcours de Chuck Moore, c'est qu'il a tenté tout au long de sa longue vie active (qui se poursuit encore à ce jour) d'améliorer sans cesse le langage dans ce que celui-ci a de "signifiant".
Vu de l'extérieur, on peut avoir le sentiment qu'ayant trouvé une bonne idée, il n'a cessé de s'interroger sur la nature profonde du concept qui la transcende : " finalement, Forth, c'est quoi, vraiment ? ".
En ont résulté différentes expérimentations : Forth minimaliste, Forth le plus portable possible, processeurs minimalistes exécutant directement un Forth minimaliste.
Chuck semble plus épris d'absolu... que du montant de son compte en banque. C'est dire s'il a fait tache dans l'univers informatique des 20 dernières années : une raison de plus pour ressentir un peu d'admiration pour le personnage.

Si vous recherchez une biographie "officielle", vous pouvez aller à l'adresse :
http://colorforth.com/bio.html
D'où l'on a extrait ces quelques citations :

Born in McKeesport Pennsylvania, near Pittsburg, in 1938 (...)
He learned Lisp from John McCarthy. And Fortran II for the IBM 704 to predict Moonwatch satellite observations at Smithsonian Astrophysical Observatory (1958). Compressed this program into assembler to determine satellite orbits (1959). (...)
Chuck invented Forth (1968) and collected his personal software library onto an IBM 1130 which was connected to the first graphics terminal he'd seen (IBM 2250). Soon he used Forth to control the 30ft telescope at Kitt Peak for the National Radio Astronomy Observatory (1970).

Ce qui peut se résumer ainsi :

Né en 1938 en Pensylvanie (un état de la côte Est des E.U.).
En 2003, cela lui fait 65 ans, donc.
A pratiqué Lisp et Fortran qu'il utilise pour faire des calculs de prédiction de passages de satellite
(on trouve ici l'articulation avec l'astronomie)
Invente Forth en 1968. Connexion avec un des premiers ordinateurs graphiques
(tiens : colorforth a une interface graphique, bien qu'il soit taillé "mini", est-ce un hasard ?). En 2003, il a 35 ans de Forth derrière lui... j'ai intérêt à bosser :-)
Utilisation de Forth pour contrôler un radio-télescope en 1970.

cmforth, un langage dédié au processeur Novix (et réciproquement)

(d'après un extrait traduit par Frédéric Dubois)

Le premier Forth en hardware était le Novix. Chuck a écrit cmForth pour la première machine Forth. cmForth ne pesait que quelques kilos de code-objet et environ 30K de source. Il comprenait un métacompilateur pour se compiler lui-même (a.l. : se refabriquer à la volée) ... et était très petit et très puissant.
Il était si rapide que, lorsqu'il était lancé depuis une disquette, il pouvait démarrer et se métacompiler lui-même depuis la disquette avant que le lecteur n'atteigne sa vitesse de croisière.

Cette phase a été appelée hardware Forth puisque le Forth écrit par Chuck était pour le Novix qui était un Forth dans un processeur
...
Chuck n'était cependant pas satisfait de cmForth parce qu'il était trop lié au hardware. Le Novix avait certaines caractéristiques puissantes mais écrire un compilateur pour tirer parti des caractéristiques spécifiques de ce hardware exotique était trop compliqué et trop spécifique à ce hardware seulement
...
Forth a été un langage très portable parce qu'il était basé sur l'implantation de la machine virtuelle Forth sur un certain hardware. Une fois cela fait vous aviez affaire à plus ou moins la même machine virtuelle sur n'importe quel Forth. Chuck examina le concept et décida de concevoir une machine virtuelle Forth améliorée et conçut à la fois ces nouveaux processeurs et ces nouveaux Forth ...
Il voulait s'éloigner d'une approche de Forth spécifique au hardware et retourner à l'utilisation d'une approche portable pour son nouveau Forth.

Les processeurs "Forth"

On en présentera trois ici : Novix, P21 et F21

Novix

On trouve sur le site http://www.ultratechnology.com/chips.htm : cette description de Novix :

Novix NC4000 First Forth chip by Chuck Moore and others at Novix Inc., PGA 1985, Forthkit, chips, boards, software from Computer Cowboys (Chuck Moore)

Ce qui peut se traduire par :

"Novix NC4000 est le premier processeur Forth réalisé par Chuck Moore et d'autres à la société Novix Inc., en 1985 (les IBM PC et compatibles commençaient à se diffuser largement), kit Forth, puces, cartes, logiciel par "Computer Cowboys (Chuck Moore)".

En cliquant sur le lien Novix de la page citée ci-dessus, on obtient une information très riche sur ce processeur (en anglais et non encore traduit ici), dont on peut citer ceci, qui est un peu redondant :

The Novix NC4000 is a super high-speed processing engine which is designed to directly execute high level Forth instructions. The single chip microprocessor, NC4000, gains its remarkable performance by eliminating both the ordinary assembly language and internal microcode which, in most conventional processors, intervene between the high level application and the hardware.

P21

Toujours à partir du site http://www.ultratechnology.com/chips.htm : cette description de P21 :

First VLSI chip by Chuck Moore 1994 and designed with the first release of OKAD, 100 mip, 1.2u, 40-pin DIP, on-chip composite 15-color/gray scale video generator. Chips, boards, software, from Offete Enterprises, Inc., Dr. C. H. Ting

Ce qui peut s'exprimer ainsir :

le P21 est le premier processeur à forte intégration des composants (VLSI) défini par Chuck Moore, en 1994, avec la première version du langage OKAD. 100 MIPS (million d'instructions par seconde), gravé à 1,2 micromètre, puce à 40 pattes, générateur de signal vidéo 15 couleurs (ou nuances de gris) inclus. Puces, cartes, logiciel, tout cela fourni/fabriqué par Offete Enterprises Inc, dont le "chef" serait M. C.H. Ting. (trad. : à moins d'un contresens).
Rem.: En 1994, Chuck a 54 ans et 24 ans de Forth. Et il en veut encore ? A cet âge, mon voisin est entré en maison de retraite (véridique !).
Rem2.: Il est encore possible d'acheter cet ensemble, à partir du lien cité.

F21

Toujours à partir du site http://www.ultratechnology.com/chips.htm : cette description de F21 :

the foxchip. UltraTechnology's own second generation VLSI design by Chuck Moore using OKAD. Prototyped in .8u The prototypes have a CPU w/ 500mip/internal 240mip/sram 120mip/dram, 40 msps analog coprocessor, composite and RGB video coprocessor, serial/network router coprocessor, parallel port, rtc. Chips, software, prototypes in the UltraTechnology Store (this site). 500 MIPs in 1997 in .8u scal

Ce qui peut se traduire par :

Le "chip" du Renard (allusion à Jeff Fox, acteur important du monde Forth, sachant que Fox=Renard en anglais).
Seconde génération de processeur à forte intégration (VLSI) défini par Chuck Moore en utilisant le langage OKAD. Prototype gravé avec une finesse de 0,8 micromètre. Avec cette finesse de gravure (en 1997), le processeur exécute 500 MIPS en cycles internes, ce qui se traduit par 240 MIPS quand on le relie à de la SRAM et 120 MIPS avec de la DRAM. Divers coprocesseurs spécialisés : vidéo composite et RGB, série et réseau, port parallèle.
Des prototypes pouvaient être achetés chez UltraTechnology (ce n'est plus vrai).
En utilisant des processus plus actuels, il pourrait être 10 fois plus rapide (d'après Jeff Fox).

Rem.: Le Virus Informatique a publié un article remarquable sur le F21 et le P21. Cet article est consultable en ligne sur le site du Virus.

Extraits d'interview de 1993 à 2000

A l'adresse http://www.ultratechnology.com/moore4th.htm on peut lire (extraits) :

The goal in what I am trying to do is not provide the simplest possible hardware or the simplest possible software but the simplest combination of the two. (...)

Ce qui peut se dire ainsi :

mon objectif n'est pas de proposer le matériel le plus simple possible, ni le logiciel le plus simple possible, mais plutôt la combinaison des deux la plus simple posible.

Plus loin...

I am utterly frustrated with the software I have to deal with. Windows is beyond comprehension! UNIX is no better. DOS is no better. There is no reason for an OS. It is a non-thing. Maybe it was needed at one time. (...)

Ce qui peut se dire ainsi :

La première fois que j'ai lu ceci, j'ai été très surpris, voire scandalisé : je venais d'investir des mois à me familiariser avec Linux. Depuis, j'ai réfléchi.
Les logiciels dont je dois m'accomoder professionnellement me mettent dans un état de profonde frustration. Windows est incompréhensible ! UNIX n'est pas meilleur, pas plus que DOS. Le système d'exploitation (généraliste) n'a pas de raison d'être. C'est une "non-chose". Peut-être cela a-t-il été utile à un moment ?

Plus loin ...

But nobody realized what was going on with this kind of threat, its insidious. You don't realize that it is a serious "conquer the world" threat. Well it occurred to me that we are subject to that kind of attack. That somehow someone slipped into the software industry and has been taking over the world. And everybody has been going along with it accepting that this is the way things are in software and that forty mega lines of code is needed to do anything interesting.
(...)
Maybe its time to say no. This isn't the way it has to be. We know it doesn't have to be that way. Yet we are virtually the only people in the world who do. (...)
A thought occurs to me, if I were to retire what would I do? One thing I could do is go out to someone who has a million lines of code and say, "Hey, I'll rewrite this for you. You pay me a reasonable amount and a bonus upon completion and I'll shrink it by two orders of magnitude." (You should charge by the lines eliminated.) (laughter)

Remarque : traduction sans commentaires :-) d'un texte daté de 2000

Nul ne réalise ce qui se passe avec cette sorte de menace, elle est insidieuse. On ne se rend pas compte qu'il il a là une menace de "conquête du monde". Il me semble que nous en sommes là. Quelqu'un s'est introduit dans l'industrie du logiciel et s'en est emparé. Et tout le monde semble accepter qu'il en soit ainsi et que 40 millions de lignes de code soient nécessaires pour faire quelque chose d'intéressant.
(...) Peut être est-il temps de dire non. Cela ne devrait pas être ainsi. Nous savons ici que ce n'est pas la bonne direction. Cependant nous sommes pratiquement les seuls au monde à le dire. (...)
Il m'est venu une idée : si je voulais prendre ma retraite, que devrais-je faire ? Par exemple aller voir un entrepreneur qui a un million de lignes de code et lui dire :
"Hey, je vais vous réécrire ceci. Vous me paierez une somme raisonnable mais complétée d'un bonus proportionnel à la réduction de la taille du code qui devrait être de deux ordres de grandeur (cent fois plus court).
En somme, ne pas faire payer la ligne, mais la ligne éliminée (rires dans l'assistance).

Chuck Moore consultant

Ce qui suit est extrait de la page http://colorforth.com/consult.html. Voici une traduction "au moins mal" (selon mes aptitudes à traduire-comprendre le texte de l'auteur.

Consultant

Je suis mécontent des langages informatiques et des applications réalisées avec. Cela semble être le cas d'un certain nombre de personnes. Les systèmes d'exploitation sont extrèmement complexes et peu fiables. Les applications sont gigantesques et boguées. Tout un secteur industriel vit là-dessus, aussi la situation ne va pas s'améliorer.

Cela ne devrait pas être ainsi. Je ne peux changer l'industrie (informatique), mais je peux proposer des solutions fines à quelques clients. Ayant une grande expérience autour de solutions adaptées aux sciences, j'ai créé des logiciels depuis 40 ans. Voir ma biographie. Je ne suis pas un manager. Je n'ai pas d'organisation structurée. (Mais) je suis expert dans l'analyse et la solution de problèmes.

Client

Si vous voulez du C, Windows, Unix, allez voir d'autres offres de services. Si vous cherchez une solution rapide, simple, peut être même à un problème insoluble, alors lisez la suite.

Je travaille avec colorForth. Il s'agit du langage le plus merveilleux que j'aie jamais vu. Je suis persuadé qu'il permet de coder avec 1% de l'équivalent en langage C.

Bien qu'il soit incompatible avec un autre logiciel et les formats de fichiers, il est compatible avec n'importe quoi par l'intermédiaire du bus, du réseau, d'un médium mobile (disquette par exemple). C'est à ce niveau que le standard s'applique : au niveau de la communication et non à celui de l'implémentation. A ce niveau, l'incompatibilité améliore la sécurité.

Je cherche des clients qui veulent modifier leurs codes. Les applications sont fournies avec leurs sources et la documentation ; l'apprentissage est inclus. Elles sont recompilées (instantanément) à chaque fois qu'on les exécute. L'édition est aisée, les tests sont faits en mode interactif et les changements provisoires, tant que l'on n'a pas sauvé l'application. Cela permet l'amélioration jusqu'à une solution exacte.

Application

Pour certaines applications, il peut être utile de travailler avec Windows. Ce n'est pas toujours le cas. Une application devant s'exécuter sur un ordinateur donné est seulement liée à lui par ses possibiltés et ses performances.

colorForth s'exécute sur les PC. Ce "monde" a changé pendant les dix dernières années. Pas le logiciel. Un PC puissant coûte moins de $1,000. Pas besoin de s'embêter avec le "multiple threads" ou les pages de mémoire virtuelle. Les fonctions des systèmes d'exploitation classiques sont obsolètes. Ils sont devenus le problème plus que la solution.

colorForth se lance depuis une disquette, copie 1.4 Mo dans la RAM, arrête le lecteur, se recompile et s'exécute indéfiniment. Ou démarre depuis le disque dur, si Windows n'a pas gelé le secteur de boot. Avec des Mo de RAM il n'est plus nécessaire de faire des accès continuels aux disques.

Tout au long de ma carrière j'ai interfacé des ordinateurs avec des matériels inhabituels, depuis les affichages et disques, jusqu'aux satellites et robots.
Forth est excellent pour

Processeurs

Je conçois également des processeurs. Un processeur personnalisé n'a de sens que pour une série de 100 000 (ou plus). Autant de puces que vous voulez. Non traduit : Turn-around on prototypes is 4 months. First, commission a simulation.

Cost

Coût de l'heure de consultant : $100/hr (augmenté des frais). Je négocierai une prestation globale.

Quelques exemples de coûts :

* Installer colorForth sur votre PC peut prendre plusieurs heures : les affichages et les pilotes de disques ne sont pas réellement standards.
* L'adaptation à votre configuration peut prendre plusieurs heures.
* Une application complète demandera de quelques jours à des semaines...

Pour une évaluation gratuite : chipchuck@colorforth.com

(....)
Le coût d'un ordinateur dédié à une application est "rien". (il doit vouloir dire : la quincaille, cela ne coûte presque plus rien).
La valeur (d'usage) d'une application optimisée est immense.