Planet OFSET

To content | To menu | To search

Tag - squeak

Entries feed - Comments feed

Thursday, April 24 2008

Why Squeak? Part II

In this series of articles, I will highlight the advantages of using Squeak/Smalltalk to develop educational software. At some point and based on my experience, I will compare with other development languages. The focus of this article is for educators and developers interested in software programming education applications. In these articles, don't expect to learn about Smalltalk/Squeak programming, my goal is simply to give an overall picture, based on real experience. Feedback is of course very welcome. In this article I will discuss about the Smalltalk image concept and its consequences.

previous article - next article

The Smalltalk image

Smalltalk comes in two pieces. A binary program specific to the host architecture and the Smalltalk codes.

The Virtual machine

The virtual machine (VM) is a program specific to a physical machine and an operating system. It is in charge of transforming the code produced by the Smalltalk compiler into native machine language, so it can be executed. The great advantage of this system is to make the Smalltalk code completely portable to any machine the virtual machine was ported to. The Smalltalk compiler produces byte code, a specific machine language to the virtual machine.

The virtual machine itself is written with Squeak and recoded in C. For access to resources local to the machine (library, hardware access) or to accelerate some critical parts of Squeak, C language plug-ins are developed for the VM.

Smalltalk codes

There are three files: the squeak.sources, the squeak.changes the and squeak.image:

  • squeak.sources contains the standard source code of the Squeak classes. This source is available through the Squeak development tools.
  • squeak.changes contains the source modifications and additions done by the user in the development environment. All user modifications in the code are immediately recorded in this file, in the form of subsequent changes. All versions are kept, so it is possible to come back to earlier code versions.
  • squeak.image, this file is the strangest one for people used to file based programming. This file is a dump of the virtual machine memory. It contains all the used objects of the environments at a given moment. These objects are the windows, compiled classes, running processes, loaded classes, any kind of object in memory, and even debugging sessions. It is possible to save the image through the world menu (click on the background). Therefore it is possible to save the state of the working environment, and to restore it at any time, and even restore it on a different host with a different virtual machine.

Why an educator will care about that?

The educator willing to develop educational software will gain productivity, both for writing code and porting their applications to several platforms.

Portability

Thanks to the virtual machine and squeak.image pair, porting an application is easy and safe. To port your application, you just need to make your squeak.image file available to the target host.

If you developed your application on host A, you were using a virtual machine for host A and you were using your standard squeak.image (or maybe your renamed it MyGreatApplication.image. To port to host B, you just need to pack virtual machine B with your MyGreatApplication.image image file, and that's it.

Productivity

From the working environment, the developer can save at any moment the state of their work:

  • They can use a tool called the workspace to write down code snippets to remember specific code examples, or to instantiate quickly objects. I very often use this to write down specific sequences of code or notes. To execute this code, I select it then type Alt+d (or Alt+p to get a printed result). When I save my image, the workspace and its content is saved as well. In the right bottom of the picture below, you can see a workspace with some snipped code I used while developing DrGeoII.
  • When debugging an application, the working environment can be saved with the opened debugger. The picture below shows a working environment where I introduced a bug in DrGeoII, the debugger is opened, When I saved the environment (therefore, a memory dump in the image file), the debugging session is saved as well.

Squeak environment

When you are writing code, and especially while improving the quality of your software, your are working within a specific context of your software. The bug does not show up immediately after you start your application. You need it to be in a given state after you performed a series of interactions with it. It can be very time consuming to do so.

Now I guess you start to understand how Squeak can save you a lot of time when you are improving the quality of your application:

  • You can save in the image the specific context which lead to bugs in your application and you can decide to come back quickly to this context as often as you need it to fix the bugs. It is a big time saver.
  • While your application is running you can fix your code, you don't need to restart your application (and recover from the bug context). This an additional time saver.

Don't search for these features in other languages, you won't find them.

In the next article about the IDE, I will develop some of the concepts presented here, for example the debugger and the possibility to fix code in running applications.

Saturday, April 19 2008

Squeak Etoys goes with MIT license

It has been a long process but it looks like it is done now, at least regarding the Squeak version distributed for the OLPC XO laptop.

Squeak comes in two pieces: a virtual machine specific to each host, and the Smalltalk sources. The Smalltalk sources come in three files: the image, source, and the change set.

Squeak was initially licensed under the SqL which contains the problematic indemnification clause. These last years, the squeak community led efforts to re-license to a cleaner MIT license.

The Squeak virtual machine

The Squeak VM license has been clarified and it is now packaged for the Debian distribution, in the main branch.

There is now no issue with the Squeak VM.

The Squeak Smalltalk sources

The other relicensing effort concerns the Squeak Smalltalk source. Most of Squeak is written in itself, so this is a rather large part of Squeak. Since 2006, the VPRI and the Squeak community were collecting signed agreements of past contributors.

According to Bert Freudenberg working for VPRI, posting in the OLPC Debian mailing list, VPRI recently took responsibility to relicense the remaining parts:

No. But VPRI as the original authors take responsibility for the earlier contributions made under the Squeak License. VPRI made every justifiable effort to contact the contributors. Not a single contributor was against relicensing, so it is safe to assume that even those that could not be reached would be happy to see their code continue to be used. They submitted it for official inclusion in Squeak, after all. So who would argue that, if not the contributors themselves?

And Kimberly Rose, executive director of VPRI, stated:

VPRI is releasing the code in the etoys.image used on the XO (and on other platforms as can be used) under the MIT license now. This is a non-issue for the XO now. What 'Squeak.org' is doing with their release/download is on a separate track, but I do know they are hard at work to also finish the re-license effort.

If anyone has complaints, speak now, or just go for it!.

Friday, April 18 2008

Pourquoi vous pourriez considérer Smalltalk/Squeak comme votre plateforme préférée de développement de votre prochaine application éducative - Partie I

Dans cette série d'articles je mettrai en valeur les avantages à utiliser Squeak/Smalltalk pour développer des logiciels éducatifs. Selon le thème abordé et mon expérience, je comparerai parfois avec d'autres langages. Je destine ces articles aux éducateurs et développeurs intéressés par la programmation de logiciels éducatifs. Dans ces articles, n'espérez pas apprendre la programmation Smalltalk/Squeak, mon objectif est avant tout de donner une vue d'ensemble, basée sur une réelle expérience. Les commentaires sont bien sûr les bienvenus.

Avez-vous remarqué ? Dans mon titre j'ai écrit plateforme de développement et non pas langage de programmation. En effet Smalltalk, et Squeak particulièrement, n'est pas seulement un langage, c'est également un environnement pour écrire du code. Cet aspect est ancré à l'histoire de Smalltalk dans les années 70 au Xerox Parc où l'équipe d'Alan Kay créa plusieurs versions de Smalltalk dans un environnement graphique avec souris et fenêtres. Smalltalk comprenait déjà des aspects uniques comme une architecture à base de machine virtuelle et d'image, un langage réflexif et purement objet.

Pourquoi cela intéresse-t-il un éducateur ?

Certains aspects clés de Squeak/Smalltalk sont très intéressants lors du développement d'une application éducative:

  • Morph, le système d'interface graphique utilisateur (GUI) ;
  • l'image Smalltalk, un environnement unique pour tester vos idées et sauver l'état de votre travail ;
  • votre application est portable vers un nombre important d'architecture ;
  • un puissant environnement de développement (IDE) intégré ;
  • une façon unique de déboguer et mettre au point vos applications ;
  • un riche ensemble de classes pour le multimédia et l'interactivité ;
  • une communauté active.

Je développerai ces points avec des exemples concrets, un point par article. Je commencerai par discuter à propos du système Morph.

Interface Morph

Dans ce système, un Morph est une unité graphique, interactive ou non. Cela peut-être une image, un objet géométrique tel un segment, une ellipse, un polygone, une chaîne de caractères, un canevas vidéo, etc. Des Morph peuvent être insérés dans d'autre Morph, avec ou sans mise en forme. Les objets graphiques de Squeak sont tous des Morph assemblés. Un Morph est manipulable interactivement par l'utilisateur, pour cela il utilise le halo.

Le halo

La première fonctionnalité spéciale de Morph rencontrée par l'utilisateur est le halo. Dans le système Morph, un halo est une collection de poignées entourant un Morph. Le halo peut-être appelé à tout instant.

Morph halos

Il y a plusieurs fonctions proposées par ces poignées comme dupliquer, dimensionner, pivoter, dessiner, etc. Je n'en dit pas d'avantage ici, plusieurs articles couvrent déjà le sujet. Le point fort des poignées est de laisser l'utilisateur manipuler très librement un objet. Si vous concevez une application éducative avec Squeak, gardez à l'esprit la valeur ajoutée du halo pour l'utilisateur. Aussi essayez de prendre en compte l'effet halo lors de la conception de votre logiciel.

Comme je l'ai expliqué, les Morph sont manipulés, assemblés ou séparés interactivement par l'utilisateur. Mais ce n'est pas tout, les Morph sont manipulables logiquement par un système graphique de script.

Script Squeak

Dans le halo, la poignée turquoise en forme d'oeil à gauche ouvre le visualiseur d'un Morph. Un visualiseur présente un ensemble de commandes graphiques. Les commandes se rapportent à des caractéristiques physiques ou logiques d'un Morph. Elles fonctionnent en entrée ou sortie.

Dans Dr. Geo II, j'ai décidé d'utiliser Morph comme la couche graphique sous-jacente. En effet, je voulais bénéficier des fonctionnalités utilisateur de Morph pour : permettre l'inclusion de Morph extérieurs à Dr. Geo II dans celui-ci et vis-versa, et aussi pour donner la liberté à l'utilisateur d'utiliser les scripts Squeak dans Dr. Geo II. Cela offre une très grande liberté d'utilisation que l'on ne trouve pas dans d'autres applications de géométrie de ce type.

Dans la capture écran ci-dessous, un script Squeak est utilisé pour lier la position en y d'un point DrGeo à un ascenseur : lorsque l'utilisateur fait glisser l'ascenseur, le point est deplacé en fonction. Non seulement le point et l'ascenseur n'ont pas été conçus l'un en fonction de l'autre, mais cette relation logique est faite au niveau de l'utilisateur.

Squeak scripting

Programmer des Morph

Dans les deux sections précédents, nous avons exposé la grande liberté que le GUI Morph donne aux utilisateurs. D'un autre côté, le programmeur d'interface à base de Morph peut :

  • adapter à ses besoins des Morph existants. Adapter signifie : agréger plusieurs Morph dans un nouveau Morph, étendre ou modifier le comportement d'un Morph existant ;
  • écrire de zéro un nouveau Morph. Écrire un nouveau Morph est amusant car vous êtes complètement libre de décider de son comportement et de son aspect visuel (avec la méthode drawOn:).

Ci-dessous quelques exemples de Morph que j'ai écrits en adaptatant d'autres Morph ou en partant de zéro.

Pyramide de nombre PythagorasTable Rectange de point Dice.png

Il y a quelques années de cela, Python devenait mon langage de programmation favori pour l'écriture de logiciels éducatifs. J'ai écrit quelques articles sur le sujet (article 1, article 2, article 3). L'avantage le plus important était la relative facilité du langage de programmation. Utiliser GTK+ avec Python était plutôt facile une fois que l'on savait comment faire. Toutefois, la documentation de l'interface GTK+ pour Python était quasi inexistante, je devais lire la documentation C pour GTK+, le code source Python de l'interface Python-GTK+ et deviner comment l'utiliser dans Python. C'était parfaitement faisable, mais prenait beaucoup de temps. Il est amusant de constater que je fais quelque chose d'assez proche avec Smalltalk/Squeak à propos de Morph, car la documentation concernant ce dernier est assez légère. Mais grâce à la nature réflexive du langage Smalltalk, c'est beaucoup facile de trouver, tester et comprendre les fonctions dont j'ai besoin. C'est un autre avantage qui améliore la productivité du programmeur. Je reviendrai dessus lorsque je discuterai de l'IDE Smalltalk.

Pourquoi Squeak ? Partie I

Dans cette série d'articles je mettrai en valeur les avantages à utiliser Squeak/Smalltalk pour développer des logiciels éducatifs. Selon le thème abordé et mon expérience, je comparerai parfois avec d'autres langages. Je destine ces articles aux éducateurs et développeurs intéressés par la programmation de logiciels éducatifs. Dans ces articles, n'espérez pas apprendre la programmation Smalltalk/Squeak, mon objectif est avant tout de donner une vue d'ensemble, basée sur une réelle expérience. Les commentaires sont bien sûr les bienvenus.

article suivant

Avez-vous remarqué ? Dans mon titre j'ai écrit plateforme de développement et non pas langage de programmation. En effet Smalltalk, et Squeak particulièrement, n'est pas seulement un langage, c'est également un environnement pour écrire du code. Cet aspect est ancré à l'histoire de Smalltalk dans les années 70 au Xerox Parc où l'équipe d'Alan Kay créa plusieurs versions de Smalltalk dans un environnement graphique avec souris et fenêtres. Smalltalk comprenait déjà des aspects uniques comme une architecture à base de machine virtuelle et d'image, un langage réflexif et purement objet.

Pourquoi cela intéresse-t-il un éducateur ?

Certains aspects clés de Squeak/Smalltalk sont très intéressants lors du développement d'une application éducative:

  • Morph, le système d'interface graphique utilisateur (GUI) ;
  • l'image Smalltalk, un environnement unique pour tester vos idées et sauver l'état de votre travail ;
  • votre application est portable vers un nombre important d'architecture ;
  • un puissant environnement de développement (IDE) intégré ;
  • une façon unique de déboguer et mettre au point vos applications ;
  • un riche ensemble de classes pour le multimédia et l'interactivité ;
  • une communauté active.

Je développerai ces points avec des exemples concrets, un point par article. Je commencerai par discuter à propos du système Morph.

Interface Morph

Dans ce système, un Morph est une unité graphique, interactive ou non. Cela peut-être une image, un objet géométrique tel un segment, une ellipse, un polygone, une chaîne de caractères, un canevas vidéo, etc. Des Morph peuvent être insérés dans d'autre Morph, avec ou sans mise en forme. Les objets graphiques de Squeak sont tous des Morph assemblés. Un Morph est manipulable interactivement par l'utilisateur, pour cela il utilise le halo.

Le halo

La première fonctionnalité spéciale de Morph rencontrée par l'utilisateur est le halo. Dans le système Morph, un halo est une collection de poignées entourant un Morph. Le halo peut-être appelé à tout instant.

Morph halos

Il y a plusieurs fonctions proposées par ces poignées comme dupliquer, dimensionner, pivoter, dessiner, etc. Je n'en dit pas d'avantage ici, plusieurs articles couvrent déjà le sujet. Le point fort des poignées est de laisser l'utilisateur manipuler très librement un objet. Si vous concevez une application éducative avec Squeak, gardez à l'esprit la valeur ajoutée du halo pour l'utilisateur. Aussi essayez de prendre en compte l'effet halo lors de la conception de votre logiciel.

Comme je l'ai expliqué, les Morph sont manipulés, assemblés ou séparés interactivement par l'utilisateur. Mais ce n'est pas tout, les Morph sont manipulables logiquement par un système graphique de script.

Script Squeak

Dans le halo, la poignée turquoise en forme d'oeil à gauche ouvre le visualiseur d'un Morph. Un visualiseur présente un ensemble de commandes graphiques. Les commandes se rapportent à des caractéristiques physiques ou logiques d'un Morph. Elles fonctionnent en entrée ou sortie.

Dans Dr. Geo II, j'ai décidé d'utiliser Morph comme la couche graphique sous-jacente. En effet, je voulais bénéficier des fonctionnalités utilisateur de Morph pour : permettre l'inclusion de Morph extérieurs à Dr. Geo II dans celui-ci et vis-versa, et aussi pour donner la liberté à l'utilisateur d'utiliser les scripts Squeak dans Dr. Geo II. Cela offre une très grande liberté d'utilisation que l'on ne trouve pas dans d'autres applications de géométrie de ce type.

Dans la capture écran ci-dessous, un script Squeak est utilisé pour lier la position en y d'un point DrGeo à un ascenseur : lorsque l'utilisateur fait glisser l'ascenseur, le point est deplacé en fonction. Non seulement le point et l'ascenseur n'ont pas été conçus l'un en fonction de l'autre, mais cette relation logique est faite au niveau de l'utilisateur.

Squeak scripting

Programmer des Morph

Dans les deux sections précédents, nous avons exposé la grande liberté que le GUI Morph donne aux utilisateurs. D'un autre côté, le programmeur d'interface à base de Morph peut :

  • adapter à ses besoins des Morph existants. Adapter signifie : agréger plusieurs Morph dans un nouveau Morph, étendre ou modifier le comportement d'un Morph existant ;
  • écrire de zéro un nouveau Morph. Écrire un nouveau Morph est amusant car vous êtes complètement libre de décider de son comportement et de son aspect visuel (avec la méthode drawOn:).

Ci-dessous quelques exemples de Morph que j'ai écrits en adaptatant d'autres Morph ou en partant de zéro.

Pyramide de nombre PythagorasTable Rectange de point Dice.png

Il y a quelques années de cela, Python devenait mon langage de programmation favori pour l'écriture de logiciels éducatifs. J'ai écrit quelques articles sur le sujet (article 1, article 2, article 3). L'avantage le plus important était la relative facilité du langage de programmation. Utiliser GTK+ avec Python était plutôt facile une fois que l'on savait comment faire. Toutefois, la documentation de l'interface GTK+ pour Python était quasi inexistante, je devais lire la documentation C pour GTK+, le code source Python de l'interface Python-GTK+ et deviner comment l'utiliser dans Python. C'était parfaitement faisable, mais prenait beaucoup de temps. Il est amusant de constater que je fais quelque chose d'assez proche avec Smalltalk/Squeak à propos de Morph, car la documentation concernant ce dernier est assez légère. Mais grâce à la nature réflexive du langage Smalltalk, c'est beaucoup facile de trouver, tester et comprendre les fonctions dont j'ai besoin. C'est un autre avantage qui améliore la productivité du programmeur. Je reviendrai dessus lorsque je discuterai de l'IDE Smalltalk.

Thursday, April 17 2008

Why you could consider Smalltalk/Squeak as your preferred development platform for your next educational software - Part I

In this series of articles, I will highlight the advantages of using Squeak/Smalltalk to develop educational software. At some point and based on my experience, I will compare with other development languages. The focus of this article is for educators and developers interested in software programming education applications. In these articles, don't expect to learn about Smalltalk/Squeak programming, my goal is simply to give an overall picture, based on real experience. Feedback is of course very welcome.

Have you noticed in my title I wrote development platform and not programming language. Indeed Smalltalk, and Squeak particularly, is not only a language it is also an environment to write code. This aspect is rooted to the whole history of Smalltalk in the 70s at the Xerox Parc, where Alan Kay's team created several versions of Smalltalk in a specific graphical user interface environment with a mouse and windows. It came with unique features such as a virtual machine and an image architecture, a full object oriented and reflexive language.

Why an educator will care about that?

Some key aspects in Squeak/Smalltalk I find the most interesting when writing educational applications are:

  • the GUI, called Morph
  • the Smalltalk image, an unique environment to test your ideas and instantly save the state of your work
  • your application is portable to many OS architectures
  • a nice integrated development environment (IDE)
  • an unique way to debug your application
  • a rich set of interactive and multimedia classes
  • a skilled community

I will develop these points with concrete examples. One point per article. I will first discuss the Morph GUI system.

The Morph GUI

In this GUI framework, a Morph is a graphical unit. It can be a bitmap, a geometric object as a segment, an ellipse, a polygon, a character, a string, a video canvas, etc. A Morph can be inserted into another one, with or without layout. All the graphical objects in Squeak are assembled Morph. Morph can be manipulated interactively by the user. One helper for such manipulation is the halo system.

The halo

The first special feature a user meets with Morph is the halo system. Within the Morph GUI, Halo is a collection of object handles surrounding any kind of graphical objects such as windows, button, graphic, text strings, etc. The halo can be called on demand.

Morph halos

There are various functions like duplicating, resizing, rotating, repainting, etc. I won't be explaining further, several starter guides are doing it. The halo strong point, is being able to let the user manipulate the object freely. If you design an educational application with Squeak, keep in mind the user will be empowered by the halo system, so be sure to consider the halo effect when designing your software.

As I just explained, Morph can be physically manipulated, assembled or disbanded by the user. But this is not the end of the story, Morph can be logically manipulated and interlinked through a graphical scripting system.

Squeak scripting

In the halo, one handle is responsible for opening the viewer (the blue eye on the left). A viewer presents a set of graphical commands. Commands are about physical or logical characteristics regarding a Morph. Command work is input or output.

Not only can the user assemble various commands from one Morph, but he can also put together commands from several Morphs. So it it possible to link their behaviors.

In Dr. Geo II, I decided to use Morph as my graphical canvas underneath. Indeed, I wanted to take advantage of the Morph features for: inter-inclusion of Morph external to Dr. Geo II into it, and vis-versa, and also to give the freedom to the user to use Squeak Scripting with Dr. Geo II. It really empowers your application to do so.

In the screen shot bellow, Squeak scripting is used to attach the y-axis position of a Dr. Geo II Moprh point to a Morph slider: when the user moves the slider, the Dr. Geo's point moves accordingly. Not only do the point and the slider not know about each other, but this logical relation is performed at the user level.

Squeak scripting

Programming the Morph

What we described in the two previous sections was about how the Morph GUI empowers the end user. On the other hand, the Morph GUI programmer is able to:

  • reuse existing Morphs to fit his needs. Reuse, can be: aggregate several Morphs in a new type of Morph, extend the behavior of a Morph,
  • write from scratch a new Morph. Writing a new Morph is fun because you are completely free to decide how it will behave and look (with drawOn: method).

Bellow are a few examples of Morph I wrote through reuse and modification of previous ones, or from scratch.

Pyramide de nombre PythagorasTable Rectange de point Dice.png

A few years ago, Python was becoming my favorite programming language to write educational application. I wrote a few articles on this topic (article 1, article 2, article 3) . The biggest advantage was the ease of use of the programming language. Using GTK+ with Python was pretty easy once you knew about it. However as the documentation about the GTK+ Python binding was mostly inexistent, I had to read the GTK+ C documentation and the Python source code binding then guessed about how to use it in Python. It was pretty do-able but quite time consuming. Funnily enough, I happened to do the same thing with Squeak and the Morph GUI as the documentation was also very thin, but thanks to the Smalltalk reflective nature, it is so much easier to find, to test and to understand the necessary features. This is another advantage which empowers the programmer this time. I will explain it later when discussing the Smalltalk IDE.

Why Squeak? Part I

In this series of articles, I will highlight the advantages of using Squeak/Smalltalk to develop educational software. At some point and based on my experience, I will compare with other development languages. The focus of this article is for educators and developers interested in software programming education applications. In these articles, don't expect to learn about Smalltalk/Squeak programming, my goal is simply to give an overall picture, based on real experience. Feedback is of course very welcome.

next article

Have you noticed in my title I wrote development platform and not programming language. Indeed Smalltalk, and Squeak particularly, is not only a language it is also an environment to write code. This aspect is rooted to the whole history of Smalltalk in the 70s at the Xerox Parc, where Alan Kay's team created several versions of Smalltalk in a specific graphical user interface environment with a mouse and windows. It came with unique features such as a virtual machine and an image architecture, a full object oriented and reflexive language.

Why an educator will care about that?

Some key aspects in Squeak/Smalltalk I find the most interesting when writing educational applications are:

  • the GUI, called Morph
  • the Smalltalk image, an unique environment to test your ideas and instantly save the state of your work
  • your application is portable to many OS architectures
  • a nice integrated development environment (IDE)
  • an unique way to debug your application
  • a rich set of interactive and multimedia classes
  • a skilled community

I will develop these points with concrete examples. One point per article. I will first discuss the Morph GUI system.

The Morph GUI

In this GUI framework, a Morph is a graphical unit. It can be a bitmap, a geometric object as a segment, an ellipse, a polygon, a character, a string, a video canvas, etc. A Morph can be inserted into another one, with or without layout. All the graphical objects in Squeak are assembled Morph. Morph can be manipulated interactively by the user. One helper for such manipulation is the halo system.

The halo

The first special feature a user meets with Morph is the halo system. Within the Morph GUI, Halo is a collection of object handles surrounding any kind of graphical objects such as windows, button, graphic, text strings, etc. The halo can be called on demand.

Morph halos

There are various functions like duplicating, resizing, rotating, repainting, etc. I won't be explaining further, several starter guides are doing it. The halo strong point, is being able to let the user manipulate the object freely. If you design an educational application with Squeak, keep in mind the user will be empowered by the halo system, so be sure to consider the halo effect when designing your software.

As I just explained, Morph can be physically manipulated, assembled or disbanded by the user. But this is not the end of the story, Morph can be logically manipulated and interlinked through a graphical scripting system.

Squeak scripting

In the halo, one handle is responsible for opening the viewer (the blue eye on the left). A viewer presents a set of graphical commands. Commands are about physical or logical characteristics regarding a Morph. Command work is input or output.

Not only can the user assemble various commands from one Morph, but he can also put together commands from several Morphs. So it it possible to link their behaviors.

In Dr. Geo II, I decided to use Morph as my graphical canvas underneath. Indeed, I wanted to take advantage of the Morph features for: inter-inclusion of Morph external to Dr. Geo II into it, and vis-versa, and also to give the freedom to the user to use Squeak Scripting with Dr. Geo II. It really empowers your application to do so.

In the screen shot bellow, Squeak scripting is used to attach the y-axis position of a Dr. Geo II Moprh point to a Morph slider: when the user moves the slider, the Dr. Geo's point moves accordingly. Not only do the point and the slider not know about each other, but this logical relation is performed at the user level.

Squeak scripting

Programming the Morph

What we described in the two previous sections was about how the Morph GUI empowers the end user. On the other hand, the Morph GUI programmer is able to:

  • reuse existing Morphs to fit his needs. Reuse, can be: aggregate several Morphs in a new type of Morph, extend the behavior of a Morph,
  • write from scratch a new Morph. Writing a new Morph is fun because you are completely free to decide how it will behave and look (with drawOn: method).

Bellow are a few examples of Morph I wrote through reuse and modification of previous ones, or from scratch.

Pyramide de nombre PythagorasTable Rectange de point Dice.png

A few years ago, Python was becoming my favorite programming language to write educational application. I wrote a few articles on this topic (article 1, article 2, article 3) . The biggest advantage was the ease of use of the programming language. Using GTK+ with Python was pretty easy once you knew about it. However as the documentation about the GTK+ Python binding was mostly inexistent, I had to read the GTK+ C documentation and the Python source code binding then guessed about how to use it in Python. It was pretty do-able but quite time consuming. Funnily enough, I happened to do the same thing with Squeak and the Morph GUI as the documentation was also very thin, but thanks to the Smalltalk reflective nature, it is so much easier to find, to test and to understand the necessary features. This is another advantage which empowers the programmer this time. I will explain it later when discussing the Smalltalk IDE.

Wednesday, November 7 2007

Utiliser Dr. Geo dans l'OLPC

J'ai développé en 2005/2006 une version Squeak/Smalltlak de Dr. Geo. Il y a peu, José Luis Redrejo un smalltalker espagnol d'Extremadura m'a proposé quelques modifications pour internationaliser cette version de Dr. Geo et l'intégrer dans le Squeak espagnol distribué avec leur distribution GNULinex. J'en ai profité pour tester cette nouvelle version dans le portable à 100$ et produire quelques vidéos sur son utilisation.

Sur chacune des captures écran ci-dessous, une vidéo au format Ogg/Theora est proposée. En cas de doute, installez l'excellent lecteur multimédia libre Video Lan pour lire ces vidéos.

Installer Dr. Geo dans l'image Squeak de OLPC

Télécharger l'archive de Dr. Geo http://squeak.ofset.org/drgeo/DrGeo... puis la glisser dans l'image Squeak/EToys de l'OLPC. Pour en savoir plus sur l'environnement Squeak pour l'OLPC, consulter les pages http://wiki.laptop.org/go/Etoys.

La vidéo ci-dessous montre l'installation puis la création d'une figure géométrique interactive vide.

Installer Dr. Geo dans OLPC

Les menus Dr. Geo

Par défaut les menus Dr. Geo ne sont pas visibles. Ils sont intégrés dans le menu de la feuille de dessin. La vidéo montre comment ouvrir ces menus.

L'accès au menu de Dr. Geo

Par commodité, les menus Dr. Geo peuvent être détachés et insérés à côté ou même directement dans une figure géométrique.

Détacher un menu contextuel

Panneau de programmation graphique

Dr. Geo utilise le framework EToys de programmation graphique pour programmer le comportement d'objets géométriques d'une figure. La vidéo ci-dessous montre comment ouvrir le panneau de programmation graphique.

Ouvrir le panneau de programmation graphique

A partir de ce panneau, l'utilisateur crée graphiquement des scripts de commandes sur des points d'une figure.

Programmer graphiquement le déplacement d'un point

Insérer une figure dans un livre interactif

Les composants graphiques de Squeak sont emboîtables à volonté. Dr. Geo n'échappe pas à la règle. Ainsi une figure géométrique est intégrable dans un composant de type livre interactif.

Insérer une figure dans un livre interactive

Dans un livre, l'enseignant peut créer une séquence pédagogique avec une succession de figures interactives, chacune avec des fonctions et des boutons spécifiques. En outre, la duplication d'objet permet de créer très rapidement de telles progressions.

Créer des pages dans un livre

Mixer une figure avec d'autres composants Squeak

En plus d'être emboîtables, les composants Squeak sont inter-connectables. Soit directement graphiquement comme c'est le cas avec les objets de type connecteurs.

Insérer des composants Squeak dans une figure géométrique

Ou bien ces composants sont connectés logiquement par l'intermédiaire du framework EToys de programmation graphique. C'est montré ci-dessous avec l'utilisation d'une réglette pour commander le comportement d'un point d'une figure.

Utiliser une réglette pour commander le comportement d'une figure

Sunday, September 16 2007

Squeak by Example

Squeak by Example est un livre libre sur Squeak et la programmation Smalltalk. Il est le fruit d'une écriture collective d'enseignants chercheurs en génie logiciel. Voici donc un ouvrage qui permet de s'initier à la programmation Smalltlak/Squeak.

Squeak By Example Squeak est un environnent moderne libre de développement Smalltalk-80. Bien qu'étant le premier environnement et langage purement orienté objet, Smalltalk est par beaucoup d'aspects encore en avance sur ses successeurs en promouvant l'idée d'un environnement ou toute chose est un objet, et que tout peut être changé en cours d'exécution.

Le livre est bien présenté, avec beaucoup d'exemples et d'astuces. En outre il a un index assez complet, ce qui ne peut que faciliter l'accès aux néophytes. Le livre est disponible au format PDF et les sources au format LaTeX. Une version imprimée peut être achetée pour seulement 16€.

Le site du livre

http://www.squeakbyexample.org

Le contenu du livre

  1. A Quick Tour of Squeak
  2. A First Application
  3. Syntax in a Nutshell
  4. Understanding Message Syntax
  5. The Smalltalk Object Model
  6. The Squeak Programming Environment
  7. SUnit
  8. Basic Classes
  9. Collections
  10. Streams
  11. Morphic
  12. Classes and Metaclasses

La section sur Morphic est une traduction d'un article que j'ai écris il y a quelques temps.

Projet de traduction

Un projet de traduction en Français a été mis en place. Pour en savoir plus et participer consulter http://community.ofset.org/wiki/Squeak_par_l'exemple.

Thursday, June 28 2007

Le squeak pour l'OLPC

Squeak est intégré dans le projet OLPC. A vrai dire c'est sans aucun doute la seule application éducative qui est livrée avec la machine. Mais c'est une version spéciale de Squeak qui est proposée pour le portable, avec quelques nouveautés.

De nouvelles commandes EToys

Le très grand intérêt de Squeak est son framework graphique Morph. Celui-ci est écrit avec Squeak lui-même, en Smalltalk. A la différence d'autres langages où le framework graphique est généralement développé en C, Morph est un framework d'une très grande souplesse qu'il est facile d'étudier, d'étendre et d'utiliser pour développer des applications graphiques et interactives.

EToys est une application basée sur Morph. Etoys permet de créer et manipuler des objets interactifs (dessin, image, son, vidéo, texte,...) que l'enfant peut programmer avec un système de commandes graphiques enfichables.

La version de Squeak de l'OLPC a une interface modifiée, les icônes et les caractères sont plus grands, le système de programmation graphique de EToys y gagne beaucoup en visibilité.

Brique Etoys OLPC

En outre de nouvelles commandes comme une boucle répéter et des fonctions mathématiques sont maintenant présentes. Ces commandes étaient attendues depuis fort longtemps par les utilisateurs de EToys.

Utiliser des projets existants

Projets Squeakland

Squeak OLPC étant basé sur Squeakland, la version éducative de Squeak, il est possible de charger des projets produits avec celui-ci dans la version OLPC. A OFSET nous avons une importante galerie de projets Squeak issus de la communauté francophone de Squeak, voir la galerie.

Autres applications

De même on peut installer dans Squeak OLPC des applications écrites en Smalltalk/Squeak. J'y ai par exemple installé le service de géométrie interactive DrGeo que j'ai développé pour Squeak. La photographie ci-dessous montre un canevas de géométrie interactive : une pyramide, la section (marron) de son plan de base par un plan passant par trois points de ses arêtes (bleu).

Intersection de plan avec le service Dr. Geo

Quelques liens

Saturday, June 23 2007

Dr. Geo II, un composant Squeak

Dr. Geo II est un outil de géométrie interactive pour Squeak. Il a d'abord été conçu comme une application autonome dans Squeak. Mais ce n'était pas tirer profil au mieux de la philosophe constructiviste de Squeak et de son interface à base de Morph. J'ai donc adapté Dr. Geo II pour suivre cette philosophie.

Maintenant vous pouvez créer des canevas de géométrie interactive (des sortes de PasteUpMorph pour être exacte) depuis le distributeur d'objet (Alt+O). Depuis le menu du halo rouge ou le menu du canevas, vous avez ensuite accès à deux sous-menus, un pour choisir les outils de construction, l'autre pour obtenir des boutons que vous pouvez placer où vous voulez.

Service Squeak de Dr. Geo

Ces modifications signifient que pouvez prendre un canevas Dr. Geo II et le placer dans la page d'un livre (BookMorph), et ensuite placer dans cette même page des boutons de construction nécessaires aux enfants pour leur construction. Bref vous pouvez construire des activités comme on en a l'habitude avec Squeak.

Liens

Friday, June 22 2007

Squeak, un outil pour modéliser

Squeak est un environnement libre multimédia de développement Smalltalk. Son environnement graphique est lui-même largement écrit dans ce langage. Il comprend des outils spécifiques de développement mais aussi des objets multimédias très intéressants pour une utilisation dans un contexte éducatif. Un de ces composants s'appelle E-toys (jouets électroniques). Nous allons vous montrer dans la suite un exemple d'utilisation en collège avec des élèves de 4ème.

Une interface graphique révolutionnaire

Avec E-toys il s'agit littéralement de dessiner un objet, soit à la main soit à l'aide de formes prédéfinies, et de s'amuser avec en les programmant graphiquement. Les commandes sont assez nombreuses mais les plus importantes sont du type mouvements (coordonnées, translation, rotation), calculs et utilisation de variables. Les commandes sont disponibles sous la forme de briques qu'il suffit de tirer-déposer pour les assembler afin de définir des scripts. Les scripts peuvent s'exécuter à intervalle régulier, il est possible d'avoir plusieurs objets et scripts, exécutés à des intervalles différents ou non. Enfin une brique de type TEST permet d'introduire la notion de condition dans le déroulement des scripts.


Figure 1 – Glisser-déposer de la brique « tourne de » dans le panneau du script de la voiture. Noter que la brique « avance de » est déjà présente dans le panneau.

La conception et l'agencement des différents composants d'E-toys permettent – dans le cadre de la modélisation d'un phénomène, concept ou objet – une approche de la construction du savoir de l'élève par manipulations interactives. L'élève, plongé dans le micro-monde des E-toys, peut alors librement expérimenter. Dans sa démarche expérimentale, il ne manquera pas alors d'échanger avec ses camarades sur les meilleures stratégies à suivre, les échanges sont alors nourris et riches.

Dans le cadre des itinéraires de découvertes pour les classes de 4ème (IDD dans le jargon Éducation Nationale), une professeure de mathématiques et un professeur de technologie d'un collège des Landes ont mis en place une série d'ateliers au cours desquels les élèves avaient pour objectif la modélisation du fonctionnement d'une horloge à aiguilles.

La modélisation de l'objet invite les élèves à réfléchir sur le fonctionnement d'une horloge et sur les concepts mathématiques sous-jacents comme les angles, l'organisation des heures, minutes, secondes ou bien même l'exploration de nouvelles notions comme la rotation des aiguilles (la nécessité d'un centre et d'un angle de rotation pour la définir apparaît alors).

La modélisation de l'horloge

L'archétype de l'horloge se compose d'un cadran et de trois aiguilles. La conception du cadran dans Squeak est l'occasion d'une libre expression artistique mais plus sommairement elle est parfois construite avec un simple disque et des rectangles aux points cardinaux. Les aiguilles sont rapidement représentées par trois rectangles allongés de couleurs et dimensions différentes.

Vient ensuite le moment de la réflexion : « les aiguilles doivent tourner ». Comment ? Où ? Et aussi de combien ?


Figure 2 – L'importance du centre de rotation lors du pivotement de l'objet. E-toys permet de dresser un contour de la notion par manipulations successives de la fonction rotation (poignée bleue en bas à gauche) et déplacement du centre.

Le professeur explique à l'aide de Squeak, comment des objets peuvent être interactivement pivotés et comment déplacer le centre de rotation d'un objet. Il montre alors la brique permettant de tourner un objet par programmation et non plus par manipulation interactive. Le reste semble un jeu d'enfant pour modéliser l'horloge. C'est pourtant là une difficulté pour les élèves, ils doivent réinvestir ce qu'ils viennent juste de découvrir. Un transfert de connaissance en sorte, mais heureusement E-toys grâce à son feedback immédiat lors de la manipulation des objets facilite ce transfert et cette appropriation.

scriptEtoys.gif
Figure 3 – Une horloge conçue par deux élèves. Celle-ci à la particularité de proposer trois cadrans, un principal et deux secondaires pour deux autres fuseaux horaires. Bien sûr toutes les aiguilles tournent !

Le script simulant le fonctionnement des aiguilles est réglé pour s'exécuter toutes les secondes. Ainsi l'aiguille des secondes devra à chaque tic, pivoter de 360/60=6°, le centre de rotation de l'aiguille doit être bien placé. Enfin dans le panneau du script de l'horloge, l'aiguille aura pour instruction de tourner de 6° (cf. figure 4). L'aiguille des minutes doit pivoter de 360/60=6° à chaque minute, soit 6/60=0,1° à chaque seconde. L'aiguille des heures pivote de 360/12=30° à chaque heure (soit 3600 s), soit 30/3600=1/120° à chaque seconde. Dans le script, cela se traduit par trois instructions « tourne de » pour chaque aiguille.

horlogeEtoys.gif
Figure 4 – Le script simulant le fonctionnement de l'horloge. Le chronomètre bleu permet d'enclencher le script.

Conclusions

E-toys permet de réinvestir des connaissances ou bien d'explorer de nouvelles notions. Certains élèves peu enclins au travail de réflexion se sont investis sérieusement dans les ateliers. L'approche par manipulation en est la principale raison. Enfin, le travail de réflexion nécessaire pour parvenir au résultat n'est pas escamoté, il est en fait complètement intégré et apparaît naturellement lors de la nécessaire définition du script. Dans ce bref article nous avons voulu vous montrer la philosophie sous-jacente à E-toys qui, pour les auteurs du produit, prend ses racines dans l'approche pédagogique de Maria Montessori.

Les concepteurs et auteurs de Squeak ne sont pas des inconnus, il s'agit en partie de l'équipe du centre de recherche Xerox Parc en Californie qui dans les années 70 inventa la souris, les interfaces graphiques, le réseau ethernet, l'imprimante laser ainsi que le langage Smalltalk, conçu au départ pour être programmé par des enfants. Alan Kay un des scientifiques de cette équipe a reçu depuis de nombreux prix internationaux dont le Turing Award en 2004. Il participe également à l'initiative de l'ordinateur portable à 100$ pour l'éducation.

Quelques liens

Saturday, June 16 2007

Géométrie interactive et OLPC

En janvier dernier j'avais demandé à Yoshiki Ohshima, un Squeaker Japonnais de renom, d'évaluer pour moi la portabilité de Dr. Geo II (demo1, demo2) dans l'environnement de l'OLPC.

L'opération lui a pris 10 minutes et il m'a gentiment envoyé quelques photographies prises avec son téléphone portable, le tout accompagné de son habituelle mascotte, le petit canard jaune

Ce portage en 10 min. illustre avec brio l'extrême portabilité de toute application écrite avec Squeak/Smalltlak.

drgeo-olpc-sm.jpeg

page 2 of 2 -