SmallTalk


SmallTalk

Smalltalk

Smalltalk-balloon.png

Apparu en Développement démarré en 1969, disponible publiquement en 1980
Auteur Alan Kay, Dan Ingals, Ted Kaehler, Adele Goldberg, Claude Roy
Développeurs Xerox PARC
Paradigmes Objet
Typage dynamique
Influencé par Lisp, Simula
A influencé Objective C, Self, Oak, Java, Dylan, AppleScript, NewtonScript, Python, Ruby, Scala, Perl 6, Scratch
Implémentations Squeak, GNU Smalltalk, VisualWorks
Système d'exploitation Multiplate-forme

Smalltalk est un langage de programmation orienté objet, réflexif et dynamiquement typé. Il fut l'un des premiers langages de programmation à disposer d'un environnement de développement intégré complètement graphique. 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é.

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 1990 viennent de la communauté des programmeurs Smalltalk, tels que les Design Patterns (appliquées au logiciel), l’Extreme Programming (XP) et le refactoring. Ward Cunningham, l'inventeur du concept du Wiki, est également un programmeur Smalltalk.

Sommaire

Historique

Il existe un grand nombre de variantes de Smalltalk, comme c'est souvent le cas avec les langages de programmation[1]. Sans autre qualificatif, le mot Smalltalk est souvent utilisé pour désigner Smalltalk-80, la première version à avoir été rendue publique en 1980.

Smalltalk est le produit d'un groupe de chercheurs conduit par Alan Kay au Palo Alto Research Center (PARC) de Xerox ; Alan Kay a conçu les premières versions de Smalltalk qui ont été implémentées par Dan Ingalls. La première version, nommé Smalltalk-71, a été créée en quelques matinées sur le pari qu'un langage de programmation basé sur l'idée d'envoi de messages inspirée de Simula pouvait être réalisé en « une page de code ».

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. Le langage permet par exemple de changer d'IDE en cours d'utilisation, sans recompiler ni redémarrer l'application. De même, il est possible de créer de nouvelles instructions de contrôle dans le langage. Certaines implémentations permettent de changer la syntaxe du langage, ou la façon dont le ramasse-miettes fonctionne.
  • Le typage est dynamique, donnant une certaine concision au langage.
  • 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 traduction dynamique : les machines virtuelles commerciales modernes compilent le bytecode vers le code machine natif de façon à obtenir de meilleures performances, une technique dont Smalltalk-80 a été le pionnier, développé par ParcPlace Systems au milieu des années 1980. Cette idée a été adoptée par le langage de programmation Java quelques dix ans après et renommée « compilation just-in-time », ou JIT.
  • Une classe peut hériter d'une seule autre classe (héritage simple).

Description

Smalltalk implémente, en plus des principes objets de base (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ôle 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 illustre le style de programmation Smalltalk. L'exécution de ce code permet de trouver les voyelles dans une chaîne. Le | déclare les variables, : déclare les paramètres :

| 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 := 1/>self species new.
1/>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].

Notes et références

Voir aussi

Articles connexes

Liens et documents externes

Implémentations

Tutoriels

Bibliographie

  • Portail de la programmation informatique Portail de la programmation informatique
Ce document provient de « Smalltalk ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article SmallTalk de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Smalltalk-80 — Smalltalk Logo von Smalltalk Basisdaten Entwickler: diverse Aktuelle Version: Smalltalk 80  (1980) …   Deutsch Wikipedia

  • Smalltalk — Información general Paradigma orientado a objetos Apareció en Desarrollo comenzado en 1969. Públicamente disponible en 1980 Diseñado por Alan Kay …   Wikipedia Español

  • Smalltalk — Семантика: объектно ориентированная Появился в: Разработка начата в 1969 г., стал доступен для широкого использования в 1980 Автор(ы): Алан Кэй, Дэн Ингаллс, Xerox PARC Типизация данных: динамическая …   Википедия

  • SmallTalk — Семантика: объектно ориентированная Появился в: 1980 г. Автор(ы): Алан Кэй, Дэн Ингаллс, Xerox PARC Типизация данных: динамическая Основные реализации: Испытал влияние: Simula, Sketchpad, Li …   Википедия

  • Smalltalk — Apparu en Développement démarré en 1969, disponible publiquement en 1980 Auteur Alan Kay, Dan Ingals …   Wikipédia en Français

  • Smalltalk MT — is an implementation of the Smalltalk programming language created in 1994 to deal with some of the shortcomings of Smalltalk 80 style of implementations. Smalltalk MT adopts a different approach in that the Smalltalk source is compiled to… …   Wikipedia

  • Smalltalk — bezeichnet: eine beiläufige Konversation ohne Tiefgang, siehe Alltagsgespräch eine Programmiersprache, siehe Smalltalk 80 (Programmiersprache) Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer mit demselben …   Deutsch Wikipedia

  • Smalltalk — разработанный корпорацией Xerox объектно ориентированный язык программирования, в котором операторы представлены пиктограммами. См. также: Объектно ориентированные языки программирования Финансовый словарь Финам …   Финансовый словарь

  • Smalltalk — es un lenguaje orientado a objetos diseñado por Alan Kay durante los años setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox Parc). Smalltalk era un elemento de la primera computadora personal con interfaz gráfica, el Alto… …   Enciclopedia Universal

  • Smalltalk — Smalltalk,der:⇨Gespräch(1) …   Das Wörterbuch der Synonyme


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.