Comme promis, un an après Pharo 3.0 nous sommes heureux de vous annoncer la sortie de Pharo 4.0. Entre autres nouvelles fonctionnalités, les outils de l'environnement de développement ont été entièrement revus.
Pharo c'est quoi ?
Pharo consiste à la fois en un langage de programmation purement objet inspiré de Smalltalk (avec compilateur et machine virtuelle) et un environnement dynamique de programmation. Pharo est diffusé sous licence MIT. Le langage Pharo s'appuie sur les bases solides de Smalltalk tout en y ajoutant, entre autres, les concepts modernes de trait (héritage multiple) et de slots (pour attacher du comportement à la lecture/écriture de variables d'instances).
Qui l'utilise ?
Actuellement 23 universités, 13 groupes de recherches et une cinquantaine de sociétés déclarent utiliser Pharo pour leurs développements (et si vous développez avec Pharo, merci de nous le faire savoir :)).
Que font-ils avec ?
Le catalogue de projets référence plus de 300 projets libres. Quelques entreprises partagent leurs success stories. Deux livres gratuits et libres (licence CC-by-sa) permettent d'apprendre les bases et les concepts avancés du langage et de son environnement : Pharo by example (disponible en français) et Deep into Pharo.
Nouveautés
La grande communauté internationale de développeurs Pharo a travaillé d'arrache-pied pour vous offrir le meilleur en matière d'environnement de développement dynamique, tout en vous rappelant que Pharo vous appartient aussi. Vous pouvez retrouver toutes les nouveautés de la version 4.0 de Pharo dans le changelog détaillé et dans l'annonce officielle.
Parmi ces nouveautés, outre les 1697 bugs corrigés depuis Pharo 3.0, on trouve une réécriture de l'outil d'inspection d'objets, de l'outil de recherche et du workspace (les GT tools).
GTools:
Le workspace (ou playground) offre une zone de texte (avec coloration syntaxique et auto-complétion) dans lequel le développeur peut tester son code. Dans l'image ci-dessous, le développeur a tapé FileSystem workingDirectory
dans la zone de texte pour étudier à quoi ressemble l'objet résultant (une instance de la classe FileReference
). En tapant Alt+Shift+g
, un inspecteur s'ouvre à droite pour étudier cet objet en détail : dans le cas de la classe FileReference
, l'inspecteur montre le contenu du fichier ou du dossier.
L'inspecteur permet d'étudier et de manipuler les objets du programme. Chaque classe peut définir plusieurs façons d'être représentée dans l'inspecteur. Allez voir la vidéo, ça vaut le détour. Ci-dessus, on peut voir qu'inspecter un dossier affiche son contenu. Ci-dessous, à droite, on peut voir qu'inspecter un dictionnaire (i.e., une table de hachage) affiche toutes les paires clé/valeur.
Le spotter quant à lui aide les développeurs à rechercher rapidement n'importe quel objet du système. Allez voir la vidéo, elle vaut largement son pesant de cacahouètes. L'utilisation du spotter permet, entre autres, de naviguer au travers du code :
- Explorer une classe, poursuivre dans ses méthodes et variables ;
- Obtenir les classes implémentant une méthode, obtenir les endroits où cette méthode est appelée.
Et bien d'autres!
Vous pouvez consulter une présentation complète ici
Retrouvez toute l'actualité de l'équipe GT sur leur site.
OSWindow
OSWindow propose une nouvelle manière de gérer les fenêtres et les événements :
- création de fenêtres natives dans un système d'exploitation ;
- événements gérés par la bibliothèque SDL2 ;
- modélisation 3D avancée via Woden.
Dark Theme
Les amateurs d'environnements sombres sauteront de joie !
Et plus encore
D'autres briques majeures évoluent telles que Zinc (la bibliothèque réseau), Fuel (le sérialiseur d'objets ultra-rapide) et Versionner (l'outil de gestion de dépendances et de release).
Côté visuel, Pharo introduit de nouvelles polices par défaut. Morph (la bibliothèque de composants graphiques) prend un coup de jeune grâce à Athens (la bibliothèque de graphiques vectoriels). Cela permet de proposer tout un panel de nouveaux widgets.
Pour les amateurs de Raspberry et de systèmes embarqués, vous pouvez désormais compiler la machine virtuelle sur Raspbian. Pharo tourne maintenant aussi sur FreeBSD.
Aller plus loin
- Quelques captures d'écran (474 clics)
- Le site de Pharo (200 clics)
- Quelques success stories (149 clics)
- Les livres Pharo (80 clics)
- Livres gratuits sur Smalltalk (76 clics)
# Un peu embêté...
Posté par rrrr . Évalué à 6.
Bonjour, et merci beaucoup pour cette dépêche, qui m'a donné envie de découvrir Pharo. J'ai suivi le tutoriel intégré à l'image - c'est très simple et plutôt clair, et ça donne envie de continuer à jouer avec l'image (dommage que les livres "Pharo par l'exemple" soient un peu périmés, d'ailleurs).
C'est peut-être pas le meilleur endroit pour ça, mais personne ne parle alors je pose ma question. Je suis un peu embêté : ça fait longtemps qu'on me dit "en Smalltalk, tous les objets sont modifiables à l'exécution, y compris les classes tout en haut de la hiérarchie". Du coup, je me suis dit que j'allais essayer : j'ai modifié une méthode au hasard de la classe Morph, qui est la classe racine de tous les objets graphiques si j'ai bien compris.
Ça n'est pas très difficile : on clique sur le nom de la classe et on peut explorer la liste de toutes ses méthodes, par exemple on trouve la méthode
mouseDown:
qui est appelée à chaque fois que l'on enfonce le bouton de la souris. Bon, j'ai modifié cette méthode pour que, à chaque appel, elle écrive dans un terminal (Transcript). J'ai fait ça :Mon but c'était d'être sûr qu'on ouvrirait au plus un seul Transcript. Seulement voilà, quand je sauvegarde et que je clique sur les fenêtres de ma GUI, plusieurs Transcript s'ouvrent.
Pourquoi plusieurs ? Les différents Transcripts créés appartiennent-ils à différentes classes ? Qu'est-ce que j'ai mal compris ?
[^] # Re: Un peu embêté...
Posté par Damien Cassou . Évalué à 5.
Nous en sommes bien conscient et le livre Updated Pharo by Example va dans ce sens (en cours de mise à jour).
ça fait vivre le post, merci !
Transcript
est un singleton : unique instance de la classeThreadSafeTranscript
. De plus,Transcript
représente le modèle, i.e., l'objet qui reçoit le texte à afficher. Il faut le distinguer de la vue (instance de la classPluggableTextMorph
) qui offre une représentation graphique du modèle. Le codeTranscript open
augmente le nombre d'instances dePluggableTextMorph
mais pas le nombre d'instances deThreadSafeTranscript
qui reste à 1.Pour faire ce que tu veux, je te conseille de n'utiliser que la méthode
show:
dans ton code. Quand tu le souhaites, tu ouvres un transcript depuis le World menu (en cliquant sur le bureau).[^] # Re: Un peu embêté...
Posté par rrrr . Évalué à 1.
Ah, ça c'est une super nouvelle ! On peut aider ?
Merci pour les explications, sinon. Je vais continuer ma lecture.
[^] # Re: Un peu embêté...
Posté par Damien Cassou . Évalué à 2.
c'est plus que bienvenu ! Il suffit de récupérer le livre et de faire des pull requests avec les changements. Envoie moi un email pour plus de précisions.
[^] # Re: Un peu embêté...
Posté par Miguel Moquillon (site web personnel) . Évalué à 2.
Attention, dans l'instruction :
Tu demandes à la méta-classe de
Transcript
(obtenue via le messageclass
deTranscript
) le nombre d'instance de celle-ci, autrement dit le nombre de classes issues d'elle ; or il n'y en a qu'une, la classeTranscript
même.En fait, l'instruction :
ouvre une fenêtre qui se trouve être une instance de
SystemWindow
. Pour faire ce que tu veux, ce serait alors plutôt :Et encore je ne suis pas sûr que ce soit la bonne façon de faire pour maintenir une seule fenêtre Transcript.
[^] # Re: Un peu embêté...
Posté par rrrr . Évalué à 2.
Effectivement, en cherchant un peu (en naviguant dans le code de Transcript !) on trouve le code de
open
qui contient tout ce que Damien et toi décrivez. C'est plutôt intéressant de pouvoir constater tout ça tout seul, et le modifier après.Non, sans doute pas. J'aurais préféré changer le code pour que l'interface fasse un bruit de canard à chaque clic, mais je ne sais pas encore comment jouer du son ou communiquer avec l'extérieur de la VM.
Merci !
[^] # Re: Un peu embêté...
Posté par Damien Cassou . Évalué à 3.
c'est une des grandes forces de Pharo (ainsi que des autres Smalltalk et des Lisp) : tout son code est sous le nez, tout le temps et il est modifiable !
[^] # Re: Un peu embêté...
Posté par Damien Cassou . Évalué à 2.
bien tenté mais en fait non :-).
Transcript
n'est pas une classe, c'est une variable globale, unique instance deThreadSafeTranscript
.ça ne suffit pas car il pourrait y avoir d'autres instances de
SystemWindow
qui ne serait pas des transcripts. Une solution possible est de ne compter que les instances dont le label estTranscript
. Dans tous les cas, je recommande d'utiliser la méthode#detect:ifFound:ifNone:
qui évite à la fois les parenthèses, la comparaison entre la taille et le nombre 1 et le#ifTrue:ifFalse:
qui suit.# Mes remarques en vrac
Posté par dzecniv . Évalué à 2.
hey, la vidéo de présentation de Gt Inspector est trop rapide, je n'ai rien compris !
Je crois aussi que vous utilisez la même musique sur les deux vidéos, t t t quelle redondance ;)
Dommage que la majorité des apps dans le catalogue n'aient pas de description.
Dans la présentation, la phrase "Even in production environments, you will never be stuck in compiling and deploying steps again!" m'interpelle vraiment. Qu'on ne compile pas, je peux comprendre. Qu'on n'ait pas de pb de déploiement, là je sèche.
J'ai aussi un pb avec la doc. Je cherche quel genre d'app on peut développer. J'ai vu des success stories avec des applications web, donc je cherche des indications de développement web dans la doc mais ne vois aucun lien.
Voilà !
[^] # Re: Mes remarques en vrac
Posté par FranckWarlouzet . Évalué à 4.
Salut
Pour l'Inspector il est difficile de bien l'expliquer à distance, rien ne vaut un essai en pratique pour voir l'étendue de ses capacités.
Concernant le catalogue, il est tout récent, toutes les équipes des projets n'ont pas encore mis une description, mais ça viendra.
Seaside est un excellent framework pour le web. Voici un très bon tutoriel pour débuter, nul doute que tu trouveras ton bonheur là dessus.
Voilà ! ;-)
# Data mining
Posté par rrrr . Évalué à 3.
Je continue de découvrir le langage, les outils et l'univers Smalltalk/Pharo, et je suis maintenant à la recherche d'outils de fouille de données (ou data mining :) pour Pharo. Je suis tombé sur le framework Moose, mais je ne comprends pas bien ce que c'est : de la fouille de données pour le génie logiciel ? Qu'est-ce que ça fait par exemple ? J'ai aussi découvert BioSmalltalk, mais ça a l'air plutôt mort.
Est-ce que vous avez des explications ou des pointeurs ?
[^] # Re: Data mining
Posté par laurent laffont (site web personnel) . Évalué à 2.
Moose permet l'exploration et l'analyse de données. Quelques liens:
- analyse de données depuis une base PostGreSQL: https://www.youtube.com/watch?v=BtfgK7Wcx5o&list=PL4actYd6bfnyq0hwxV9XB_BVDAlzO-6Oq
- exploitation de données OpenStreetMap: https://dl.dropboxusercontent.com/u/31543901/AgileVisualization/OpenStreetMap/0306-OpenStreetMap.html
- analyse de code: http://www.themoosebook.org/book/externals/visualizations/system-complexity
[^] # Re: Data mining
Posté par rrrr . Évalué à 1.
Merci pour les liens. C'est pas très poussé mais c'est un début.
[^] # Re: Data mining
Posté par Damien Cassou . Évalué à 1.
Qu'est-ce que tu cherches exactement en terme de fouille de données ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.