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:
- Squeak (http://www.squeak.org)
- VisualWorks och ObjectStudio (http://smalltalk.cincom.com/prodinformation/index.ssp)
- Smalltalk/X (http://www.exept.de)
- Dolphin Smalltalk (http://www.object-arts.com/)
- Smalltalk MT (http://www.objectconnect.com/)
- Pocket Smalltalk (http://www.pocketsmalltalk.com/)
- GNU Smalltalk (http://www.gnu.org/software/smalltalk/smalltalk.html) (annorlunda från de flesta i att det är mera inriktad på scriptning än grafiska utvecklingsmiljöer)
- StrongTalk (http://www.cs.ucsb.edu/projects/strongtalk/pages/index.html)
- SmallScript (http://www.smallscript.org/)
- IBM VisualAge Smalltalk (http://www-306.ibm.com/software/awdtools/smalltalk/)
Annat: