Dans cette vidéo, je voudrais vous expliquer un petit peu
les différentes façons dont Pharo est packagé, pour que
vous vous y retrouviez dans le futur.
Quand vous allez installer Pharo vous irez sur un lien
normalement qu'on vous aura donné, mais si vous allez sur
Pharo, la distribution au moment où je fais cette vidéo c'est
la version 4 mais la version 5 sera rigoureusement identique.
Quand j'ai downloadé Mac OSX, j'obtiens ce Zip.
Si je dézippe ce Zip, j'obtiens ce que j'appelle Pharo4 app.
Quand je le lance Pharo 4 app, j'ai Pharo.
Imaginons qu'on va faire
"Hello". Quand je fais Sauve, ça va me sauver l'environnement.
Je vais faire Save.
Si je fais Quit maintenant, je vais le relancer après,
et j'aurai exactement "Hello", puisque sauvegarder l'image
Pharo c'est faire une copie de mémoire avec tous les
objets dont les objets Bytecode et les méthodes compilées.
Maintenant qu'est-ce qu'il y a dans
cette application ?
Sur Mac, on peut voir ce qu'il y a l'intérieur.
Si je fais Show Contents qu'est-ce que je vais voir?
Je vais trouver une machine virtuelle Pharo et des ressources.
Et là, je vais trouver un fichier changes et un fichier
image.
Le fichier image, c'est celui qui contient vraiment les
objets qui représentent la mémoire, et le fichier changes
c'est un fichier qui comprend tous les changements
incrémentaux que l'on a faits. Si je double-clique
sur le fichier image,
normalement suivant votre OS, je vais le lancer sur une
machine virtuelle Pharo que j'ai installée, ça va me
relancer mon fichier image.
Ce fichier image, qu'est-ce qui se passe?
Imaginons que je définisse une classe.
Je vais définir un package,
"Add package" "ATest".
Dans ce package,
je vais définir "MyStrangeClass".
Je la définis et puis là, je vais mettre "foooo" qui rend
42.
Si je sauve cette image avec un autre nom, je vais la
sauver avec le nom
Pharo40Stef.
Qu'est-ce que ça va avoir fait ?
Je quitte. Ça m'a créé un autre couple
image et change. Dans ce fichier changes, on ne va pas l'ouvrir
parce que ce n'est pas lisible pour l'humain, il y a le
code des méthodes que je viens de créer.
Et là si je relance Pharo 4, je vais le
relancer en utilisant ma machine virtuelle, j'obtiens
de nouveau le snapshot, ce qu'on appelle la copie du
système que j'avais fait à un temps T
ultérieur.
Maintenant, si je réexécute l'image PharoStef, qu'est-ce
qu'elle va me faire ?
Elle va me montrer le système avec ma nouvelle classe.
L'application Pharo 4, c'est ce qu'on appelle un Bundle
Mac qui contient la VM Pharo plus une image plus un change.
Si je double-clique dessus, je n'ai pas le choix, il va
toujours choisir Pharo image parce que c'est un script
qui a codé en dur: "Voilà, c'est cette image-là.
" En général, c'est pratique au début de l'utilisation de
Pharo, mais nous on n'utilise pas ça.
En général, soit on utilise une instruction du command
line qui va être quelque chose du genre
Pharo-ui avec MyPharoImage.image,
et qui va
envoyer le truc. Ou alors si on est en command line et qu'on
ne veut pas avoir le ui, on va faire ce genre de choses.
Ça veut dire que Pharo est installé quelque part dans
votre système comme sur une application Unix standard.
Maintenant, ce que vous voyez sur
cette page, c'est que vous pouvez télécharger un couple
Pharo, vous pouvez télécharger une machine virtuelle.
On va télécharger la machine virtuelle et on va
télécharger un couple image et aussi source.
Je vais vous expliquer ce que c'est comme ça on aura les
3 sous la main, on va pouvoir jouer ensemble.
Maintenant si je dézippe le fichier qui correspond à
Pharo Image et Changes, j'obtiens celui-là.
Quand je le dézippe qu'est-ce que j'obtiens dans Pharo dans ce fichier?
J'obtiens une image.
On va le faire plutôt en mode pour que
vous voyez ce qu'il y a dedans.
Ça veut dire que ce fichier, c'est encore un couple image
qui correspond à un certain état du snapshot ou de l'image
Pharo, du système virtualisé. Là, je vais pouvoir l'exécuter
sur l'image Pharo.
Il me donne un message et ce message qu'est-ce que c'est?
Le système peut fonctionner puisque je peux exécuter n'importe quoi.
Je peux le faire tourner.
Maintenant, je peux faire exactement ce que j'ai fait avant.
Je peux définir MyPackage, et dans MyPackage
je vais dire MyStrangeClass.
Donc on commence à avoir l'habitude.
Je vais définir une méthode :
fooo 42. Il me demande mon identifiant.
Je vais pouvoir faire comme d'habitude "MyStrangeClass
new fooo" et ça va me rendre 42.
Donc, très bien. Et là, je peux le sauver.
Je vais le sauver par exemple avec un autre nom, je vais
l'appeler Stef, là je vais l'appeler PharoStrange.
OK.
Qu'est-ce qu'il me dit ?
Il me dit "Je ne peux pas trouver le fichier source
Pharo 4. 0. " Pourquoi il me dit ça ?
Quand j'ouvre le browser si je veux voir par exemple le
code de AST, ce n'est pas votre code, donc on va aller tout en haut.
Le système, ce qu'il est en train de faire, c'est pour ça
qu'il ne trouve pas les commentaires,
en fait il est en train de décompiler.
Alors on ne le voit pas parce que les méthodes sont trop
simples mais il décompile le code.
On va aller sur quelque chose de plus concret.
Là, il a décompilé le code, le Bytecode représente un
argument et il sait très bien que c'est un argument.
Mais on a perdu le source.
Le source en général du système, quand Pharo est
déployé, est stocké dans un fichier qui s'appelle, et qu'on
trouve ici, qui est le fichier Pharo 4.
source. En général Pharo 4.
source, on va l'installer une fois sur le système parce
que ce fichier est en lecture seule, et que toutes vos
applications vont pouvoir s'en servir.
Là je l'ai ici, je vais le dézipper.
Là, j'ai Pharo 4. source.
Si je quitte ici sans sauver
et que je relance mon application, là de toute façon vous
voyez que ça a fait exactement comme précédemment, c'est-à-dire
que quand je sauve un snapshot en lui donnant un autre
nom, j'ai de nouveau un système avec 2 pendants:
l'image et ses changes.
Là si je reprends mon ancienne image, elle
ne fait plus d'erreurs parce qu'il a trouvé le code et il
sait très bien que ça correspond à l'état qu'on avait
quand on a lancé la première image.
Maintenant si j'utilise la deuxième,
là si je reprends le fichier AST-Core, déjà
mes classes ont des commentaires.
Là c'est vraiment les noms que les gens ont donné qui correspondent à ça.
Si on regarde cette architecture, qu'est-ce qu'on a?
On a le fichier source qui contient les sources du
système, en général le compilateur une fois que le
système est compilé il n'a pas besoin de ses sources, la
machine virtuelle et des paires image et change.
Image contient tous les objets que vous avez définis plus
les objets du système, avec le fichier changes qui
contient les deltas de ce que vous avez fait par rapport au fichier changes.
A chaque fois que vous allez sauver votre système, ça va
faire comme si vous sauviez une image virtualisée de votre OS.
C'est exactement le même principe.
Si on regarde à l'intérieur de l'application Pharo 4,
on va retrouver ces ressources.
J'ai le fichier Pharo 4 sources et j'ai le fichier image,
le fichier changes et quelque part ici la machine
virtuelle avec ses plugins.