Dans cette séance, on va regarder un petit peu ce que c'est que Pharo.
Pharo, c'est un langage-objet premièrement, pur, mais
aussi, c'est un IDE, donc un environnement de développement intégré.
Pharo est inspiré par Smalltalk, c'est son père
spirituel, c'est un langage qui est très puissant et
élégant et qui est fun à programmer et il y a aussi une
grande communauté de gens qui font des tas de choses très variées.
Et ce qu'on va essayer de vous faire comprendre pendant
ce cours à l'aide de vidéos, c'est que Pharo, c'est un
système vivant que vous allez pouvoir scripter au vol.
Pharo est sous licence MIT, vous allez pouvoir partir
avec et faire ce que vous voulez dans le futur.
Donc, quand je dis que Pharo est élégant, en fait j'ai
des arguments pour le dire. Je ne le dis pas juste en l'air
: d'une part la syntaxe tient sur une carte postale et le
modèle objet est très simple et uniforme, il tient en
quatre lignes, donc on va regarder ça.
Donc, sur ce transparent, vous avez toute la syntaxe Pharo.
Et quand je dis toute, il n'y a rien d'autre.
Maintenant, ça ne veut pas dire que vous allez pouvoir
comprendre la syntaxe juste en lisant ce transparent, on
va avoir plusieurs séances où on va décrypter et vous
permettre de vraiment comprendre comment cette syntaxe est structurée.
Mais par contre, ça vous donne l'idée de la somme de
travail à faire, mais il n'y a rien d'autre que cette syntaxe.
De la même manière, le modèle objet tient sur ce slide,
ça veut dire que tout est dynamiquement typé dans Pharo,
tous les objets sont instance de classe, toutes les
méthodes sont publiques et virtuelles, tous les attributs
sont protégés, et il n'y a que des héritages simples.
Il n'y a pas de boxing, il n'y a pas de type primitif et
de type pas primitif, il n'y a pas de type générique, etc.
Vous avez tout, donc sur les deux transparents, là, vous
avez vu la syntaxe et le modèle Pharo.
Bien sûr on y reviendra encore une fois, mais c'est pour
vous donner une idée de la complexité du système.
Donc, maintenant, ce qu'il faut voir, c'est que Pharo est
entièrement écrit dans lui-même.
Donc, quand je dis Pharo, qu'est-ce que ça veut dire, ça
veut dire les chaînes, les caractères, les booléens, l'IDE,
le compilateur, les sockets.
Tout est écrit dans Pharo lui-même.
Et donc, ça veut dire que si vous contrôlez et que vous
comprenez cette syntaxe qui tient sur une page de ce
modèle, vous avez accès à l'entièreté de Pharo lui-même,
donc, moi, je trouve que, intellectuellement, c'est
excitant parce que vous avez une toute petite porte d'entrée
pour un monde qui est gigantesque.
Donc j'ai aussi, si vous regardez le titre de ce MOOC, il
y a immersif dedans. Pourquoi on a mis immersif?
On a mis immersif parce que Pharo, ce n'est pas une boîte noire en fait.
L'entièreté du système est entièrement inspectable, ça
veut dire que vous pouvez aller voir comment c'est
implémenté et Pharo a des capacités réflexives, ça veut
dire qu'il a une représentation de lui-même que vous
allez pouvoir utiliser pour comprendre Pharo.
Et en fait, de ce fait, vous allez être complètement
immergé dans un monde d'objets et donc j'aime bien cette
métaphore de l'aquarium, c'est de dire, en général un
langage c'est une boîte noire, Pharo c'est plus qu'une
boîte, ce n'est pas une boîte noire, c'est un aquarium
dans lequel vous allez pouvoir voir les objets et les
constituants du système lui-même, mais en plus, vous
allez pouvoir plonger dans cet aquarium et interagir avec
les objets, et donc c'est vraiment dans cette idée-là qu'on
vous invite à jouer avec Pharo.
Donc là, je vous montre un exemple d'un système immersif.
Qu'est-ce qu'on appelle immersif ou interactif?
À gauche, vous avez le code et à droite vous avez le rendu de ce code.
Et ce que le programmeur est en train de faire, c'est qu'à
chaque fois qu'il appuie sur la touche de compilation, l'écran
devient bleu et vous avez le rendu qui s'affiche à droite.
Ce que vous voyez, c'est qu'il est en permanence en train
de modifier son code et de voir ce qu'il est en train de
faire dans la fenêtre de droite.
Mais ça, vous allez pouvoir le faire avec n'importe quel
élément du système, que ça soit une socket, un fichier,
de la 3D par exemple dans ce cas-là, mais un serveur Web
ça sera exactement pareil, votre serveur Web va
fonctionner et vous allez pouvoir le modifier au vol.
Donc maintenant, ce que je voudrais vous montrer, c'est
un petit peu quels sont les supports qu'on a, si vous
voulez travailler Pharo en dehors du MOOC.
Donc il y a plusieurs livres qui sont tous open source,
donc vous avez "Pharo by Example" qui est pour les
débutants qui a été traduit en plusieurs langages, qui
est en train d'être mis à jour par rapport à Pharo 5 qui
est la prochaine release de Pharo.
Vous avez "Deep into Pharo" qui lui va un peu plus en
profondeur sur des librairies, des bibliothèques du
système, les aspects du langage qui sont un petit peu
moins connus et de l'outillage.
Vous avez aussi "Entreprise Pharo a Web Perspective" qui
met l'emphase sur des bibliothèques Web comme les
websocket, des http, les serveurs http-https et du templatage.
Donc, tous ces livres sont open source, vous pouvez les lire.
Ce qu'on va utiliser en particulier pendant ce cours, c'est
un framework Web qui s'appelle Seaside, dans Seaside,
vous avez 300 pages qui sont disponibles sur le Web à l'adresse
indiquée, vous pouvez éventuellement lire le livre si ça
vous intéresse pour en savoir plus, normalement, on vous
donnera toutes les billes pour pouvoir faire le MOOC sans
que vous ayez besoin de lire le livre en addition.
Pour ceux qui sont aussi intéressés par d'autres aspects,
vous avez aussi un livre qui fait 300 pages sur des
méthodes numériques en Pharo avec des tas de choses qui
vont des séries statistiques à des algorithmes itératifs et du clustering.
Donc, maintenant, je vous ai dit que Pharo, c'était un
système à partir duquel vous pouvez apprendre et en fait,
je vais vous donner quelques illustrations, on les reverra lors de vidéos.
Chaque élément graphique, par exemple, de Pharo sur
lequel vous cliquez et que vous, avec la combinaison de
touches "command-shift-option", vous allez pouvoir avoir
ce qu'on appelle des halos, donc des petits menus qui se
positionnent autour de l'élément graphique.
Et en utilisant ces menus, vous allez pouvoir aller à l'intérieur
directement et manipuler les éléments visuels que vous
êtes en train de manipuler et donc on va vous montrer ce
que c'est qu'un inspecteur, c'est un objet qui vous
permet d'aller manipuler les propriétés d'autres objets
et pour voir comment c'est implémenté.
De la même manière, on a un objet qui s'appelle le
Finder, donc là, le Finder, je lui ai demandé, je lui ai
dit voilà, moi j'aimerais que tu me donnes toutes les
méthodes du système qui contiennent le mot match et puis
il me fait une liste, il ne montre que je peux accéder
directement au code de ses méthodes.
De la même manière, il y a un autre outil qui s'appelle
Spotter quand vous faites "shift enter", Spotter arrive
et vous allez dire à Spotter ce que vous voulez trouver
donc Spotter va vous permettre de trouver les classes,
des méthodes ou bien des ressources.
Donc vous aurez une des vidéos qui vous explique ce genre
de choses, mais encore une fois, Spotter est écrit dans Pharo lui-même.
Maintenant, le Finder a une fonctionnalité qui est assez
sympathique quand vous allez commencer à apprendre Pharo,
il y aura une vidéo aussi juste sur cet aspect-là, c'est
que vous allez pouvoir donner des exemples et demander au
système, moi je veux faire ça, ça, c'est mes exemples et
je sais ce que je veux faire, mais je ne sais pas comment l'écrire en Pharo.
Et le finder va essayer de trouver les méthodes qui vous
permettent de faire ça. Donc là, j'ai écrit un exemple, j'ai
dit voilà, j'ai deux chaînes, AB et C, et j'aimerais
concaténer ces chaînes et je sais que si j'ai deux
chaînes AB et C, le résultat doit être la chaîne ABC, ça
paraît simple, et donc je dis au système, voilà, moi,
donne-moi le message, est-ce qu'il y a un message qui
existe et donne-moi le message s'il existe qui me
permette de faire cette concaténation de chaînes.
Et c'est ce que vous voyez à l'écran, là il me dit,
virgule, c'est une méthode qui est implémentée sur
SequenceableCollection, qui quand elle va être envoyée à
ma première chaîne avec comme argument, ma deuxième
chaîne va me redonner ma troisième chaîne et donc vous
allez pouvoir utiliser ce finder sur les exemples pour
vous aider à être un petit peu plus rapides dans Pharo.
Dans ce MOOC, on va parler de conception objet et ce qui
est important de voir, c'est que ça fait partie de l'ADN de Pharo.
Parce que les gens qui programmant en Pharo pensent objet
et de manière élégante, et je vais vous montrer les
exercices qu'on va vous présenter. La question souvent
qu'on pose, c'est comment est-ce que "not" est
implémenté, donc souvent, les gens se posent la question,
mais est-ce que c'est intéressant de se poser ce genre de questions?
Et on va vous montrer que c'est très intéressant parce qu'il
y a des règles fondamentales qui en découlent et ça fera
partie de l'exercice. Et ce que vous pouvez voir, c'est
que dès que vous avez Pharo et que vous allez voir
comment "not" est implémenté, vous devez commencer à
penser d'une manière différente et c'est quelque chose
qui fait vraiment partie de la culture des gens qui font
du Pharo, c'est de penser une conception qui est vraiment élégante.
Donc vous pouvez installer Pharo comme décrit sur le site
de Pharo lui-même, bien sûr, lors du MOOC et sur le site
de Fun, vous aurez des instructions pour installer
Pharo sur tous les systèmes.
Maintenant, je tiens à vous rassurer, Pharo s'installe
très simplement, souvent comme un "drag and drop" sur
chacun des OS disponibles.