Smalltalk
Un article de Wikipédia, l'encyclopédie libre.
Cet article fait partie de la série Langages de programmation |
Langages à objets |
4D - C++ - C# - D Delphi - Eiffel - Groovy Java - Python - Ruby Simula - Smalltalk Visual Basic - WinDev |
Langages impératifs |
APL - ASP - Assembleur BASIC - C - Cobol Forth - Fortran - Limbo Logo - Pascal - Perl - PHP |
Langages fonctionnels |
Haskell - ML/OCaml Lisp/Common Lisp Scheme XSLT |
Langages déclaratifs |
Clips - Prolog |
Langages concurrents |
Ada 95 - Erlang |
Langage de balisage |
HTML - SGML - XML S-expressions |
Voir aussi |
Conception - Codage Tests - Optimisations |
Smalltalk est un des premiers langages de programmation objet (ne pas confondre avec un langage orienté objet). Il a été créé en 1972. Il est inspiré par Lisp et Simula. Il a été conçu par Alan Kay, Dan Ingals, Ted Kaehler, Adele Goldberg au Palo Alto Research Center de Xerox. Le langage a été formalisé en tant que Smalltalk-80 et est depuis utilisé par un grand nombre de personnes. Smalltalk est toujours activement développé et dispose d'une base loyale d'utilisateurs.
Smalltalk a été d'une grande influence dans le développement de nombreux langages de programmation, dont : Objective-C, Actor, Java et Ruby.
Un grand nombre des innovations de l'ingénierie logicielle des années 90 viennent de la communauté des programmeurs Smalltalk, tels que les Design Patterns (appliqués au logiciel), l'Extreme Programming (XP) et le refactoring. Ward Cunningham, l'inventeur du concept du WikiWiki, est également un programmeur Smalltalk.
Sommaire |
[modifier] Concepts
Les principaux concepts de Smalltalk sont :
- « Tout est objet. » Les chaînes de caractères, les entiers, les booléens, les définitions de classes, les blocs de code, les piles et la mémoire sont représentés en tant qu'objets.
- Tout est modifiable. Si vous voulez changer l'IDE, vous pouvez le faire -- en cours d'utilisation, sans recompiler et redémarrer l'application. Si vous voulez une nouvelle instruction de contrôle dans le langage, vous pouvez l'ajouter. Avec certaines implémentations, vous pouvez même changer la syntaxe du langage, ou la façon dont le ramasse-miette fonctionne.
- Les types sont dynamiques -- pas besoin de définir des types dans votre code, ce qui permet au langage d'etre concis.
- Un ramasse-miettes mémoire est intégré et transparent pour le développeur.
- Un système de gestion d'exceptions avec reprise est fourni.
- Les programmes Smalltalk sont généralement compilés en bytecode, exécutés par une machine virtuelle.
- La Translation Dynamique : les machines virtuelles commerciales modernes compilent le bytecode vers le code machine natif de façon à obtenir de meilleurs performances, une technique dont Smalltalk-80 a été le pionnier, développé par ParcPlace Systems au milieu des années 80. Cette idée a été adoptée par le langage de programmation Java quelques dix ans après et renommé « compilation Just-in-time », ou JIT.
- Une classe peut hériter d'une seule autre classe (héritage simple).
[modifier] Description
Smalltalk implémente, en plus des principes objets de bases (classe, objet, héritage, polymorphisme), des concepts originaux (métaclasse) et introduit la notion d'objet persistant, de traitement des exceptions et le principe Modèle-Vue-Contrôleur.
Une caractéristique surprenante de Smalltalk est l'absence totale d'instructions de contrôles intégrées au langage : if-then-else, for, while, etc. Toutes ces instructions sont implémentées en utilisant des objets. Par exemple, les décisions sont prises en envoyant un message ifTrue à un objet Booléen, et en passant un fragment de code à exécuter si le Booléen est vrai. Le seul aspect intégré par défaut est la syntaxe pour envoyer un message à un objet.
L'exemple suivant (un code permettant de trouver les voyelles dans une chaîne) illustre le style de programmation Smalltalk. (le | déclare les variables, : déclare les paramètres, et dites-vous pour le moment que [ et ] sont des accolades { et }):
| aString vowels | aString := 'This is a string'. vowels := aString select: [:aCharacter | aCharacter isVowel].
À la dernière ligne, la chaîne aString reçoit un message select: avec un bloc de code en argument. Voici le code de la super-classe Collection qui fait le travail:
| newCollection | newCollection := self species new. self do: [:each | (aBlock value: each) ifTrue: [newCollection add: each]]. ^newCollection
Ce code répond au message en itérant au travers de ses membres (c'est la methode do:) en évaluant le code aBlock à chaque caractère; aBlock (aCharacter isVowel) une fois évalué crée un booléen, qui est alors envoyé à ifTrue:. Si le booléen est vrai, alors le caractère est ajouté à la chaîne qui sera retourné. Comme select est défini dans la classe abstraite Collection, on pourrait également l'utiliser de cette façon :
| rectangles aPoint| rectangles := OrderedCollection with: (Rectangle left: 0 right: 10 top: 100 bottom: 200) with: (Rectangle left: 10 right: 10 top: 110 bottom: 210). aPoint := Point x: 20 y: 20. collisions := rectangles select: [:aRect | aRect containsPoint: aPoint].
[modifier] Liens externes
- « Why Smalltalk? » une communauté de développeurs,
- GoodStart « Smalltalk » un site « advocacy »,
- Site officiel,
- Planet Smalltalk agrège un certains nombres de carnets webs sur Smalltalk.
- Communauté Smalltalk francophone
- ESUG (European Smalltalk Users Group) : association qui réunit industriels et universitaires utilisateurs de Smalltalk. Organise notamment une conférence annuelle depuis 1993.
[modifier] Implémentations
- VisualWorks, voir Cincom Smalltalk website, Wiki.
- IBM's VisualAge for Smalltalk, voir http://www-4.ibm.com/software/ad/smalltalk/
- Dolphin Smalltalk, voir http://www.object-arts.com/Home.htm
- Smalltalk/X, gratuit et opensource, voir http://www.exept.de/sites/exept/english/Smalltalk/frame_uebersicht.html
- Squeak, voir http://www.squeak.org/
- Pocket Smalltalk, qui tourne sur un Palm Pilot, voir http://www.pocketsmalltalk.com/
- Gnu Smalltalk, voir http://www.gnu.org/software/smalltalk/smalltalk.html
- Smalltalk MT, voir http://www.objectconnect.com/
- VisualWorks et Squeak descendent du Smalltalk-80 original.Un exemple de Smalltalk-80 tournant à l'intérieur de VisualWorks (c'est-à-dire, la machine virtuelle Smalltalk-80 est elle-même un programme Smalltalk tournant sous VisualWorks).
- Smallscript S#, voir http://www.smallscript.net/
- Ambrai Smalltalk, voir http://www.ambrai.com/
[modifier] Tutoriels
- Livres gratuits sur Smalltalk
- Il existe des WikiWiki implémentés en Squeak Smalltalk (swiki) et VisualWorks (WikiWorks). Vous pouvez télécharger Swiki à partir de http://minnow.cc.gatech.edu/swiki WikiWorks est inclus dans la distribution VisualWorks (disponible gratuitement pour un usage non commercial, voir le lien ci-dessus).
[modifier] Bibliographie
- "Programmer objets avec Smalltalk" de Gilles Clavel
- "Smalltalk : Programmation orientée objet et développement d'applications" de Xavier Briffault et Gérard Sabah
- "Squeak" de Xavier Briffault et Stéphane Ducasse
Portail de l'informatique – Accédez aux articles de Wikipédia concernant l’informatique. |