Smalltalk

Från Unix.se, den fria unixresursen.

Smalltalk är ett rent objektorienterat programspråk. Namnet Smalltalk är ett samlingsnamn på en uppsättning olika varianter som oftast är baserade på Smalltalk-80. Smalltalk har en tradition av väldigt integrerade och grafiska utvecklingsmiljöer där utveckling sker i ett levande system. Man har helt eliminerat den klassiska skriva/kompilera/debugga-cykeln man finner i många miljöer. Det är standard att inspektera systemet och modifiera definitionen av metoder och klasser medan programmet körs. Utvecklingen sker parallellt med att programmet körs i en virtuella maskin.

Smalltalks objektsystem är meddelandebaserat - metodanrop specialiserar bara på ett objekt (self).

Det flexibla objektsystemet i kombination med closures (i form av kodblock) används flitigt för att skapa ett väldigt praktiskt standard-API utan att behöva introducera speciell syntax eller speciella funktioner i språket. Grundläggande syntax och semantik är mycket enkel jämfört med många andra språk, varför Smalltalk anses vara väldigt lätt att lära sig.

Kodexempel

Hello world:

 Transcript show: 'Hello world!' ; cr.

Metod-definition:

 name: aString
   "Sets the name of this person."
   name := aString.
   ^self.
 name
   "Answers the name of this person."
   ^name.

Skapa en bunt personer:

 persons := Bag new.
 persons add: (Person name: 'John Doe' age: 47).
 persons add: (Person name: 'Jane Doe' age: 45).

Skriv ut alla personernas namn:

 persons do: [:person |
   Transcript show: ('Name: ', person name, ' Age: ', person age printString) ; cr.
 ].

Skapa en lista på presoner äldre än 45:

 geezers := persons collect: [:person | (person age) > 45 ].

Inspectera en extremt gammal person (alla objekt i Smalltalk kan inspekteras genom att skicka #inspect till objektet):

 (Person name: 'Old Guy' age: (2 raisedTo: 1024)) inspect.  

Externa länkar

Smalltalk-varianter:

Annat:

Personliga verktyg