GNU Smalltalk 3.2.3 et VisualGST 0.8.0

Posté par  . Modéré par tuiu pol.
Étiquettes :
14
3
jan.
2011
GNU
GNU Smalltalk (http://smalltalk.gnu.org/) est une machine virtuelle qui permet d'exécuter des programmes écrit dans le langage Smalltalk.

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

  • # Pharo

    Posté par  . Évalué à 4.

    Quelle est la différence entre GNU Smalltalk et Pharo? Sont-ils compatibles entre-eux?

    « 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  . Évalué à 7.

      Ils ont des points communs et des differences, je vais commencer par les points communs:
      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  (site web personnel) . Évalué à 2.

    par curiosité principalement. J'avais commencé à regarder Squeak mais il faut dire que c'est vraiment vraiment différent de ce que l'on voit actuellement....

    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

  • # réflexif

    Posté par  (site web personnel) . Évalué à 2.

    Je cherche de la doc sur le coté reflexif de smalltalk.

    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  . Évalué à 2.

      Je vais te donner quelques exemples:

      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, ...
  • # visualgst disparait

    Posté par  . Évalué à 1.

    bonjour,

    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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.