Smalltalk est un langage objet, dynamique typé et hautement réflexif. La dernière version de GNU Smalltalk a un meilleur support du générateur du binding pour GTK+, le support des Announcements (un système d'événements). GNU Smalltalk peut aussi être utilisé en tant que langage de script sans interface graphique.
VisualGST est l'interface de GNU Smalltalk. Cette version améliore encore l'interface avec une meilleure intégration des outils comme les implémenteurs/émetteurs dans la fenêtre principale, mais aussi l'utilisation des onglets pour les différents navigateurs. GNU Smalltalk dispose aussi de bindings pour openGL, SDL, gtk, cairo, webkit. et postgresql.
Cette nouvelle version apporte quelques optimisations pour les architectures 64 bits, corrections de dead-locks avec certaines opérations pour les pipes, ainsi qu'une amélioration du mode emacs. Les paquets peuvent être téléchargés avec HTTPS.
VisualGST incorpore les différents outils que l'on peut retrouver dans un environnement Smalltalk :
- Navigateur (browser) : il permet de naviguer dans le système et sera le principal outil de développement (créer des classes et des méthodes) ;
- Console (workspace) : il permet d'évaluer du code smalltalk et permet d'afficher les résultats de l'évaluation ;
- Console de sortie (transcript) ;
- Inspecteur : on peut ainsi voir le contenu d'un objet et aussi lui envoyer des messages ;
- Debogueur ;
- Implémenteur/Émetteur : affiche la liste des implémenteurs d'un message ou d'utilisateurs d'une classe. L'outil émetteur affiche la liste des méthodes qui envoient le message ;
- Tests unitaires.
Pour installer la dernière version de VisualGST, vous devrez procéder comme ceci :
git clone git://github.com/MrGwen/gst-visualgst.git
cd gst-visualgst
./make-package.sh
./install-desktop.sh (pour avoir l'icône et une entrée dans le menu du bureau)
gst-browser and enjoy ;-)
Iliad (http://www.iliadproject.org) est un framework web qui fonctionne entre autre sous GNU Smalltalk et qui permet de construire des applications web dynamique très facilement. Grâce à une couche javascript, il utilise des requêtes AJAX pour mettre à jour l'état du client, toutefois Il dégradera les fonctionnalités (afin de préserver les performances). Si javascript n'est pas activé, nous n'avons pas à nous inquiéter de cela...
Aller plus loin
- GNU Smalltalk (50 clics)
- VisualGST (111 clics)
- Iliad (14 clics)
- Captures d'écran (46 clics)
# Pharo
Posté par claudex . Évalué à 4.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Pharo
Posté par Gwenaël Casaccio . Évalué à 7.
Ils implementent tous les deux Smalltalk meme si ce sont deux dialects differents.
Un programme n'utilisant pas les Morph ou GTK devrait etre portable.
Pour ameliorer la compatbilite il existe le projet Grease qui a pour but de rendre les differentes implementations de Smalltalk compatible entre elles. par exemple Iliad et Seaside utilisent Grease ce qui facilite le portage. La syntaxe des fichiers Smalltalk entre Squeak/Pharo et GST est differente (enfin GST supporte les deux):
Object subclass: #Foo
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: ''!
!Foo class methodsFor: ''!
unMessage
"InterpretedMethod test"
| b |
....l!
Foo new
unMessage;
blabla;
smalltalkEstCool!
sous GST:
Object subclass: Foo [
unMessage [
^ self blabla
]
]
Foo new
unMessage;
blabla;
smalltalkEstCool
Il existe un outil pour GST (gst-convert) qui peut importer des fichiers dans le chunk format (le premier exemple) et le convertir dans la syntaxe de GST. Ensuite l'interface graphique sous GST on privilegie l'integration avec GTK (il y a des gens qui bossent sur un binding de Qt). Un autre aventage avec l'approche de GST est que l'on peut utiliser les outils comme git, on n'est pas non plus enferme dans Smalltalk. Par exemple VisualGST est sous github ou meme iliad. Une autre difference en Squeak/Pharo et GST est qu'il est possible avec GST de generer une image a partir du code source. Squeak/Pharo ont une plus grosse communaute d'utilisateurs que GST.
Il y a aussi le bon livre de Canol Gokel pour apprendre GNU Smalltalk : http://www.canol.info/books/computer_programming_using_gnu_s(...)
(desole pour les accents clavier qwerty)
# Toujours eu envie de m'y mettre...
Posté par Alexandre COLLIGNON (site web personnel) . Évalué à 2.
Qui a réussit à s'y mettre ? là maintenant ? Je veux dire quelqu'un qui n'a pas vu les années 80 avec un regard de (jeune) adulte... enfin vous voyez ce que je veux dire
Alexandre COLLIGNON
[^] # Re: Toujours eu envie de m'y mettre...
Posté par Serge Stinckwich (site web personnel) . Évalué à 3.
Phro est un fork de Squeak plus orienté développeurs : http://ww.pharo-project.org/
[^] # Re: Toujours eu envie de m'y mettre...
Posté par Alexandre COLLIGNON (site web personnel) . Évalué à 1.
Quand tu parles de
Phro est un fork de Squeak plus orienté développeurs
, que veux tu dire par plus orienté développeurs ?Qui est donc la cible de Squeak alors ?
Alexandre COLLIGNON
[^] # Re: Toujours eu envie de m'y mettre...
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Toujours eu envie de m'y mettre...
Posté par Alexandre COLLIGNON (site web personnel) . Évalué à 1.
Alexandre COLLIGNON
# réflexif
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
http://www.gnu.org/software/smalltalk/manual/gst.html est très long et sans le mot clef en question.
Est-ce qu'il y a des noms de classe "magique" à connaitre ?
"La première sécurité est la liberté"
[^] # Re: réflexif
Posté par Gwenaël Casaccio . Évalué à 2.
Avoir la classe d'un objet:
anObject class
appeler une methode
anObject perform: #blabla with: 123
Changer le contenu d'une variable d'instance:
anObject instVarAt: 1 put: 123
On peut aussi faire des choses amusantes:
anObject changeClassTo: anObject (on a un prototype ;-) attention il faut faire d'autres changements pour que l'objet aie le format d'une classe qui lui est connu par la VM)
Migration d'instances
anOldObject become: aNewObject
tous les objets ayant une reference anOldObject, cette reference sera remplacée par aNewObject.
CompiledMethod allInstances retourne toutes les instances de la classes CompiledMethod.
Ah et comme tu peux le voir les méthodes sont des objets comme les autres on peut donc les modifier, et faire d'autre choses comme de la couverture de code (pour les tests unitaires par exemple). On remplace des méthodes par des method wrapper ils vont être appelés a la place de la méthode et ils font ensuite leur boulot et vont appeler la bonne méthode ;-)
Et encore plein d'autre choses on peut faire des variables d'instance first-class:
MaClass>>maMethod: [
des truc avants
uneIVar := '123'.
des truc apres
]
uneIVar va envoyer les messages beforeChange et afterChange (il suffit de faire un peut de reecriture)
J'oublie une chose importante le context d'exécution peut etre manipule: thisContext
On peut facilement créer un debuggeur ou implémenter les exceptions en Smalltalk.
Il y a encore plein d'autres choses comme les classe anonymes, ...
[^] # Re: réflexif
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
http://www.gnu.org/software/smalltalk/manual-base/gst-base.h(...)
"La première sécurité est la liberté"
[^] # Re: réflexif
Posté par Gwenaël Casaccio . Évalué à 2.
- Object (instVarAt:, become:, changeClassTo:, ...)
- Behavior
- MetaClass
- Class
- CompiledCode (CompiledMethod, et CompiledBlock)
- ContextPart (MethodContext, BlockContext)
- ...
Sinon dans squeak by example tu devrais trouver ton bonheur ;-)
# visualgst disparait
Posté par franssois . Évalué à 1.
voila j'ai installé visualgst comme indiqué dans le tutoriel au dessus, mais quand je lance le programme, il apparait dans la barre de tache et disparait .
Savez-vous d' ou vient ce problème et comment le résoudre ?
je suis sur ubuntu 10.10 et j'ai déja installé GNU-smalltalk.
[^] # Re: visualgst disparait
Posté par Gwenaël Casaccio . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.