Convorbire scurtă

Convorbire scurtă
Data primei versiuni Dezvoltarea a început în 1969 , disponibilă public în 1980
Paradigme Obiect
Autor Alan Kay , Dan Ingals , Ted Kaehler, Adele Goldberg
Dezvoltatori Xerox PARC
Ultima versiune ANSI Smalltalk
Tastare dinamic
Influențată de Lisp , Simula
Influențat Objective-C , Self , Oak , Java , Dylan , AppleScript , NewtonScript , Python , Ruby , Scala , Perl 6 , Scratch
Implementări Squeak , GNU Smalltalk , VisualWorks , Pharo
Sistem de operare Cross-platform

Smalltalk este un limbaj de programare orientat obiect , reflectiv și tastat dinamic . A fost unul dintre primele limbaje de programare care a avut un mediu de dezvoltare integrat complet grafic. A fost înființată în 1972 . Este inspirat din limbajele Lisp și Simula . A fost proiectat de Alan Kay , Dan Ingals , Ted Kaehler , Adele Goldberg la Centrul de Cercetare Palo Alto din Xerox . Limbajul a fost oficializat ca Smalltalk-80 și de atunci a fost folosit de un număr mare de oameni. Smalltalk este încă dezvoltat activ.

Smalltalk a avut o mare influență în dezvoltarea multor limbaje de programare, inclusiv: Objective-C , Actor  (în) , Java și Ruby .

Multe dintre inovațiile în ingineria software din anii 1990 au venit de la comunitatea de programare Smalltalk, cum ar fi modelele de proiectare (aplicate software-ului), programarea extremă (XP) și refactorizarea . Ward Cunningham , inventatorul conceptului wiki , este, de asemenea, un programator Smalltalk.

Istoric

Există un număr mare de variante ale Smalltalk, așa cum se întâmplă adesea cu limbajele de programare. Fără adjectiv suplimentar, cuvântul Smalltalk este adesea folosit pentru a se referi la Smalltalk-80, prima versiune care a fost lansată publicului în 1980.

Smalltalk este produsul unui grup de cercetători condus de Alan Kay la Centrul de Cercetare Palo Alto (PARC) de la Xerox  ; Alan Kay a proiectat primele versiuni ale Smalltalk care au fost implementate de Dan Ingalls . Prima versiune, numită Smalltalk-71, a fost creată în câteva dimineți pe pariul că un limbaj de programare bazat pe ideea de a trimite mesaje inspirate de Simula ar putea fi realizat într-o „pagină de cod”.

Concepte

Principalele concepte ale Smalltalk sunt:

Descriere

Smalltalk implementează, pe lângă principalele obiecte de bază ( clasă , obiect , moștenire , polimorfism ), concepte originale ( metaclasă ) și introduce noțiunea de obiect persistent, tratarea excepțiilor și principiul model-vizualizare-controler .

O trăsătură surprinzătoare Smalltalk este absența totală a instrucțiunilor de control integrat în limba: if​- then​- else​, for​, while​etc. Toate aceste instrucțiuni sunt implementate folosind obiecte. De exemplu, deciziile se iau prin trimiterea unui mesaj ifTrue​către un obiect boolean și trecerea unei bucăți de cod pentru a fi executată dacă booleanul este adevărat. Singurul aspect încorporat implicit este sintaxa pentru trimiterea unui mesaj către un obiect.

Următorul exemplu ilustrează stilul de programare Smalltalk. Rularea acestui cod va găsi vocalele într-un șir. Variabilele sunt declarate între două bare verticale | ... |, :​declară parametrii:

| aString vowels | aString := 'This is a string'. vowels := aString select: [:aCharacter | aCharacter isVowel].

În ultima linie, șirul aString​primește select:​ca argument un mesaj cu un bloc de cod. Iată codul pentru superclasa Collection​care face treaba:

Collection>>select: aBlock | newCollection | newCollection := self species new. self do: [:each | (aBlock value: each) ifTrue: [newCollection add: each]]. ^newCollection

Acest cod răspunde la mesaj prin iterarea prin membrii săi (aceasta este metoda do:​) prin evaluarea codului aBlock​pentru fiecare caracter; aBlock​( aCharacter isVowel​) atunci când este evaluat creează un boolean, care este apoi trimis către ifTrue:​. Dacă booleanul este adevărat, atunci caracterul este atașat la șirul care va fi returnat. După cum select​este definit în clasa abstractă Collection​, am putea să-l folosim și în acest fel:

| 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].

Anexe

Articole similare

linkuri externe

Tutoriale

Bibliografie

  • Clavel Gilles, Programarea obiectelor cu Smalltalk ( ISBN  978-2-225-85157-5 )
  • Briffaut X. și Sabah G. , Smalltalk: programare orientată pe obiecte și dezvoltare de aplicații ,
  • Erard PJ și Déguénon P., Simulare prin evenimente discrete, Concept și realizări în Simula, Ada și Smalltalk, PPUR, col. IT, Lausanne, 1996
  • Goldberg, Adele (decembrie 1983). Smalltalk-80: Mediul de programare interactiv . Addison-Wesley. ( ISBN  0-201-11372-4 ) .
  • Goldberg, Adele; Robson, David (mai 1983). Smalltalk-80: Limbajul și implementarea acestuia . Addison-Wesley. ( ISBN  0-201-11371-6 ) .

Note și referințe

  1. (în) „  implementations of Smalltalk  ” , The World of Smalltalk (accesat la 24 aprilie 2013 ) .