software.wikisort.org - Langage_de_programmation

Search / Calendar

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 les langages 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
Date de première version Développement démarré en 1969, disponible publiquement en 1980
Paradigmes Objet
Auteur Alan Kay, Dan Ingals, Ted Kaehler, Adele Goldberg
Développeurs Xerox PARC
Dernière version ANSI Smalltalk
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, Pharo
Système d'exploitation Multiplate-forme

Smalltalk a été d'une grande influence dans le développement de nombreux langages de programmation, dont : Objective-C, Actor (en), 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és au logiciel), l’extreme programming (XP) et le refactoring. Ward Cunningham, l'inventeur du concept du wiki, est également un programmeur Smalltalk.


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ée 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 :


Description


Smalltalk implémente, en plus des principaux 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. Les variables sont déclarées entre deux barres verticales |...|, :​ 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 :

Collection>>select: aBlock
| 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 méthode 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].

Annexes


Sur les autres projets Wikimedia :


Articles connexes



Liens externes



Didacticiels


Bibliographie



Notes et références


  1. (en) « Implémentations de Smalltalk », The World of Smalltalk (consulté le ).



На других языках


- [fr] Smalltalk

[ru] Smalltalk

Smalltalk ([ˈsmɔːltɔːk]) — объектно-ориентированный язык программирования с динамической типизацией, основанный на идее посылки сообщений, разработанный в Xerox PARC Аланом Кэем, Дэном Ингаллсом, Тедом Кэглером, Адель Голдберг, и другими в 1970-х годах. Представляет собой интегрированную среду разработки и исполнения, объекты которой доступны для модификации через неё саму, и программирование в которой в итоге сводится к модификации её собственного поведения. Язык был представлен как Smalltalk-80.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии