Outils pour utilisateurs

Outils du site


cours:informatique:dev:programmation_objet_pharo:105_pharo_systeme_objet_immersif

Pharo : un système objet immersif

Tutoriel Programmation objet immersive en Pharo proposé par l'inria disponible à l'adresse https://mooc.pharo.org et sur la plateforme FUN-MOOC.

Transcription de la vidéo

Cours présenté par Stéphane Ducasse, directeur de recherche à l'Inria.

Dans cette séance, on va regarder un petit peu ce que c'est que Pharo.

Pharo, c'est premièrement un langage-objet pur, mais aussi, c'est un IDE (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.

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.

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.

Ci-dessus, 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 quelques notions:

  • 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;
  • 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 là, vous avez vu la syntaxe et le modèle Pharo.

Bien sûr on y reviendra sur ces notions, mais c'est pour vous donner une idée de la complexité du système. 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 comprenez cette syntaxe qui tient sur une page de ce modèle, vous avez accès à l'entièreté de Pharo lui-même, intellectuellement, c'est excitant parce que vous avez une toute petite porte d'entrée pour un monde qui est gigantesque.

Le titre de ce MOOC contient “immersif”. On a choisit immersif parce que Pharo, ce n'est pas une boîte noire en fait. L'entièreté du système est totalement 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.

Ici on peut voir un exemple de 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.

Bibliographie annexe

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.

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.

Introduction aux outils

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” (⇧ Shift+Mouse middle button), vous allez pouvoir avoir ce qu'on appelle des halos, ce sont de 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 modifier les éléments visuels que vous êtes en train de manipuler.

Pour cela on va vous montrer ce qu'est un inspecteur, c'est un objet qui vous permet d'aller manipuler les propriétés d'autres objets et de voir comment c'est implémenté.

De la même manière, on a un objet qui s'appelle le Finder, ici on lui demande 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.

Un autre outil qui s'appelle Spotter peut être exécuté rapidement à l'aide des touches ⇧ Shift+↵ Enter. Vous allez dire à Spotter ce que vous voulez trouver et Spotter va vous permettre de trouver les classes, des méthodes ou bien des ressources.

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.

Références

cours/informatique/dev/programmation_objet_pharo/105_pharo_systeme_objet_immersif.txt · Dernière modification : 2022/06/29 17:32 de yoann