Smalltalk
Smalltalk on oliopohjainen ohjelmointikieli ja -ympäristö, jonka ensimmäiset versiot julkaistiin 1970-luvulla. Ohjelmat on koottu itsenäisistä, ei-läpinäkyvistä olioista, jotka edustavat jotakin luokkaa. Oliot ovat yhteydessä toisiinsa Smalltalkin virtuaalikone-ympäristön välittämillä viesteillä. Vapaasti muokattavien ja muutettavien olioiden lisäksi on olemassa primitiivi-olioita, joita ei voi muokata enää ohjelman ajon aikana. Toisinaan primitiivit on määritelty Smalltalk ympäristöstä riippumattomina, erillisinä olioina. Alkuperäinen Smalltalk-80 ohjelmointiympäristö oli graafinen ja se käytti näppäimistön lisäksi 3-näppäimistä hiirtä.[1]
Smalltalk | |
---|---|
Paradigma | olio-ohjelmointi |
Merkittävimmät toteutukset | Dolphin Smalltalk; Cincom Smalltalk; VA Smalltalk; GNU Smalltalk; Squeak; Pharo |
Vaikutteet | Lisp, Simula |
Vaikuttanut | Common Lisp, Objective-C, Python, Java, Self, Io |
Murteet | Smalltalk-72, Smalltalk-76, Smalltalk-80 |
Smalltalk on ajan myötä kehittynyt vastaamaan tarpeisiin monissa käyttötarkoituksissa, kuten talouselämässä ja tietokannoissa. Näillä aloilla se on käytössä edelleen. Ensijulkaisussaan Smalltalk-80 toi orastavalle olio-ohjelmoinnin alalle uusia sekä uraauurtavia ajatuksia ja käytänteitä.
Smalltalkia lähellä olevilla kielillä tehdään edelleen aktiivista kehitystyötä ja sillä on monia aktiivisia puolestapuhujia. ANSI-standardi Smalltalkille julkasitiin vuonna 1998 ja se edustaa kielen perusversiota.
Historia
muokkaaSmalltalk on 1970-luvulla kehitetty ohjelmointikieli, joka on kehitetty Xerox-yhtiön tutkimuskeskus PARC:issa Yhdysvalloissa.[2]
Kielen konseptin kehitti Alan Kay, joka kehitti Dynabook-prototyyppiä ja graafista käyttöliittymää joka sopisi myös lapsille.[3] Dan Ingalls vaikutti Smalltalkin toteuttamiseen.[4]
Kehittäjiin kuuluivat lisäksi Dave Robson, Adele Goldberg, Peter Deutsch[5], Ted Kaehler ja Scott Wallace. Smalltalk sai runsaasti vaikutteita Norjassa kehitetystä Simula-kielestä, jota pidetään kaikkien olio-ohjelmointikielten kantamuotona.
Xerox julkaisi Smalltalk-kielen nimellä Smalltalk-80. Sen jälkeen Hewlett-Packard tuotti ensimmäisen kaupallisen version.[5] Vuonna 1986 Digitalk-yhtiö julkaisi Smalltalk/V:n, joka oli ensimmäinen laajasti saatavilla ollut versio henkilökohtaisille tietokoneille.[6] Digitalk päätyi myöhemmin ParcPlacen omistukseen[7].
Kielen kehittäminen siirtyi Xerox PARCin tutkimuskeskuksesta ohjelmoijien perustamalle ParcPlace-yhtiölle, joka kehitti siitä VisualWorks-nimisen tuotteen. VisualWorks on samalla sekä kieli että kehitysympäristö, samaan tapaan kuin Eclipse ja Java ovat yhdessä Javan kehitysympäristö. Tuotetta myydään edelleenmilloin? ja sen omistaa nykyään Cincom. 1990-luvulla VisualWorks-kehitysympäristöllä kehitettiin lukuisia pitkään yritysten käytössä olleita sovelluksia.
Vuonna 1996 muun muassa Apple-yhtiöllä Alan Kay kehitti Smalltalkin pohjalta Squeakin.
Smalltalkin ANSI-standardi valmistui vuonna 1998.
Olioperustaisuus
muokkaaSmalltalkilla kirjoitetut ohjelmat ovat olioperustaisia ja Smalltalkia pidetään puhtaana olio-ohjelmointikielenä.lähde? Muiden ohjelmointikielten tapaan Smalltalk on syntaktiselta ytimeltään hyvin pieni ja koko kielen voima perustuu varsin laajaan luokkakirjastoon.
Useimmat olio-ohjelmointikielet, esimerkiksi Java ja COBOLin olioversio, ovat ottaneet mallia Smalltalkista[5]. Java onkin rakenteeltaan hyvin lähellä Smalltalkia.lähde? Kummassakin kieltä ajetaan tulkkaavasti virtuaalikoneessa, mikä tekee niistä suhteellisen hitaita.
Dynaaminen tyypitys
muokkaaSmalltalkissa muuttujat on tyypitetty dynaamisesti, eli käännösajan sijaan ajoaikana. Smalltalk ei vaadi muuttujien ja argumenttien tietotyyppien määrittelyä. Joidenkin mukaanselvennä tyypitys tekisi ohjelmista luotettavampia, mutta Smalltalkin käyttäjien mukaan tyypin määrittely vain sotkee ohjelmia ja hidastaa työtä[5].
Smalltalkissa on graafinen ohjelmointiympäristö.
Nykyinen käyttö
muokkaaSmalltalkia käyttävät verkkotietokantaohjelma DabbleDB[8] sekä CMS-järjestelmät Cmsbox[9] ja Pier[10].
Nykyisin Smalltalkia voi opetella esimerkiksi Pharo MOOC -verkkokurssin avulla.[11]
Syntaksi
muokkaaSyntaksi on hyvin minimaalinen ja käytössä on vain kuusi keyword merkkijonoa: true
, false
, nil
, self
, super
ja thisContext
.
true
, false
ja nil
ovat singleton oliota, self
ja super
taas viittaavat niiden yhteydessä annettuun viestiin (message) eli tiettyyn olioon ja suorittavat tästä viestistä riippuvaisen aliohjelman. Super
sanan yhteydessä suoritettavaa aliohjelmaa etsitään ylemmän tason oliosta (huomaa yhetys Javaan). thisContext
viittaa käytössä olevaan suoritteeseen.
Esimerkkiohjelma
muokkaa" Kommentti "
" Aluksi ohjelma lähettää oliolle Transcript viestin show, joka saa yhden argumentin."
" Sitten samalle Transcript-oliolle lähetetään toinen viesti (cr). "
" Puolipiste erottaa samalle oliolle lähetetyt viestit. "
" Tämän jälkeen ohjelma avaa Transcript-ikkunan lähettämällä Transcript oliolle kolmannen viestin (open) "
Transcript show: 'Hei maailma!'; cr.
Transcript open.
Toteutukset
muokkaaSmalltalkin eri toteutuksia ovat: Smalltalk MT; Cincom Smalltalk; Instantiations VA Smalltalk (uudelleenbrändätty IBM VisualAgeSmalltalk[7]);[12] Dolphin Smalltalk[13], GNU Smalltalk[14] ja Squeak ovat Smalltalk-80-versioon perustuvia avoimen lähdekoodin toteutuksia eri käyttöjärjestelmille.[15] Vuonna 2008 Squeakista haarautui Pharo.[16] SmallScript toimii osana Microsoftin NET-alustaa.[5] Slang on alijoukko Smalltalkin kielestä ja olioista, joka voidaan kääntää suoraan C-kielelle.[17]
Lähteet
muokkaa- ↑ Smalltalk-80 demo (SIGGRAPH Video Review issue 8) youtube.com. 1983. Viitattu 15.10.2024. (englanniksi)
- ↑ Alan C. Kay: The Early History of Smalltalk gagne.homedns.org. Viitattu 30.7.2017.
- ↑ Cornelis Robat: Xerox Star The History of Computing Project. Viitattu 9.2.2020. (englanniksi)
- ↑ Dan Ingalls codersatwork.com. Viitattu 9.2.2020. (englanniksi)
- ↑ a b c d e http://www.outbacksoftware.com/smalltalk/smalltalk.html (Arkistoitu – Internet Archive)
- ↑ http://foldoc.org/smalltalk%2fv (Arkistoitu – Internet Archive)
- ↑ a b http://www.c2.com/cgi/wiki?AllenWirfsBrock
- ↑ http://www.infoq.com/interviews/bryant-smalltalk-dabbledb
- ↑ http://www.cmsbox.com/en/cms/technology (Arkistoitu – Internet Archive)
- ↑ http://www.piercms.com/dev (Arkistoitu – Internet Archive)
- ↑ Damien Cassou & Stéphane Ducasse & Luc Fabresse: Pharo MOOC mooc.pharo.org. 15.10.2024. Viitattu 15.10.2024. (englanniksi)
- ↑ https://people.eecs.berkeley.edu/~fateman/264/papers/smalltalk-tutorial.html
- ↑ Dolphin Smalltalkin kehittäjät: Dolphin Smalltalk Core Image - Github github.com. 18.9.2024. Viitattu 15.10.2024. (englanniksi)
- ↑ Free Software Foundation ja GNU Smalltalkin kehittäjät: GNU Smalltalk gnu.org. 15.10.2024. Viitattu 15.10.2024. (englanniksi)
- ↑ http://www.squeak.org/
- ↑ Stéphane Ducasse et al.: Pharo 9 by Example (pdf) books.pharo.org. 26.3.2022. Viitattu 15.10.2024. (englanniksi)
- ↑ Slang wiki.squeak.org. Viitattu 22.11.2024. (englanniksi)
Aiheesta muualla
muokkaa- ilmainen Pharo MOOC -verkkokurssi (englanniksi)
- Smalltalk Zoo - The Computer History Museum (englanniksi)