MOOSE Project -- new OS ?

Kyle Hayes kyle@putput.cs.wwu.edu
Sun, 23 Oct 1994 23:30:24 +0800


Salut Francois-Rene,

Voila, ce-que j'ai comme doc.  Pas beaucoup, et, tout en anglais.
Ce document decrit comment la language fonction.

l'idee est tres proche a celui de FORTH.  En FORTH, tout code est
compose de mots (words).  Chaque mot fonction totalement independent
des autres.  Il y a que la pile qui les lie (?).  En TSOL,
c'est la meme chose.  Par contre, en TSOL il n'y pas de mots.  Il y
les messages et les objets (comme en Smalltalk ou Self).  

En FORTH tous mots sont definies par un array (conceptuellement)
d'autres mots.  La machine virtuelle de FORTH appele ces mot un
apres l'autre jusqu'a la fin d'array.  Menfin, c'est approximativement
ca.

En TSOL chaque method est un array de messages ou d'objets constants.  
Au lieu d'appeler un fonction direct comme en FORTH, le VM 
(machine virtuelle) de TSOL envoi le message vers l'objet en haut de
la pile.  Ceci donne un autre niveau d'indirection et permet le
polymorphisme.

Je dit tout ca tres mal en francais :-)

Peut-etre un exemple est en ordre:

en FORTH:

: inc 1 + ;   (ajuter un au numero en haut de la pile)

en TSOL l'equivalent est un code array (un peu comme un mot FORTH
sans nom):

[ 1 + ]

Si ce code array est mis dans l'objet traits d'entier dans un slot
avec le selecteur `inc', on l'utilisera comme ceci:

[ 3 inc ]

Le VM envoi le message `inc' a l'objet "3".  Dans l'objet traits
de ceci, le fonction lookup() trouve le code array [ 1 + ].  Ce
code array est en suite execute.  Jusqu'ici, c'est le meme resultat
qu'en FORTH, non?

Maintenant, on fait un autre code array:

[ 0 self at 1 + 0 self atPut ]   (ajuter un au premier caracter dans la chaine)

On met ce code array dans le traits object de la chaine de caracters
avec le selecteur `inc' (comme on a fait en haut).

Maintenant, on peut ecrire:

[ "Gello, World" inc printString ]

Le resultat sera:

Hello, World

Dans le code array en haut il y a trois objets.  Le premier est une
chaine de caracters, "Gello, World".  Le deuxieme est le message
`inc'.  Le troisieme aussi est un message, `printString'.  En executant
ce code array, la VM de TSOL fait trois etapes.

1) La VM examine le premier object, la chaine de caracters.  Parce que
ceci n'est pas un type d'objet special, la VM le met sur la pile.

2) La VM examine `inc'.  Ceci est un objet de type message.  La VM
envoi ce message a l'objet en haut de la pile (la chaine qu'on a mit la
en etape 1).  Le resultat de ce lookup est un code array.  La
VM l'execute.  

3) La VM examine et envoi le troisieme et dernier objet dans le code
array, `printString'.  Comme en etape 2, le lookup trouve un code array
qui est en suite execute par la VM.

Pour voir ou on utilise le polymorphisme, il suffit de regarder ces
deux code arrays suivants:

[ 3 inc ]
[ "goobar" inc ]

Tous les deux sont parfaitement legal.  On ne peut pas faire ca en FORTH.
Il faut deux mots:

3 incInt

   et

"goobar" incString

Franchement, on ne fera jamais un code array comme j'ai fair pour la
chaine de caracters.  C'est trop debile pour etre utilisable :-)  J'espere
que ce petit exemple t'a donne neanmoins une petite idee comment TSOL marche.

Actuellement, j'ai termine la VM.  Je suis en train de dessigner une
sorte de parser en TSOL pour TSOL.  C'est ce partie qui n'est pas tres
"fun" :-(

Dit bonjour au 10eme pour moi.  J'ai habite 18 mois au 10, rue de la
grange au belles.  C'est pas loin du 19eme.

Ce doc est en LaTeX avec quelques figures en postscript.  Il y a
cinq fichiers.  Tous sont dans un fichier "tar" que etait compresse
avec gzip.

Best,
Kyle

begin 600 TSOL.doc.tar.gz
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
#H   
 
end