Smalltalk
![]() | |
Tipus | llenguatge de programació orientat a objectes,class-based programming language(en)![]() ![]() |
---|---|
Data de creació | 1972![]() |
Disseny | Alan Kay,Adele GoldbergiPARC![]() |
Desenvolupador | Alan Kay,Adele Goldberg,Dan IngallsiDiana Merry![]() |
Paradigma de programació | orientado a objetos |
Darrera versió estable | ANSI Smalltalk ()![]() |
Influenciat per | Lisp,Simula 67,Simula67iLlenguatge de programació Logo![]() |
Extensió dels fitxers | st![]() |
Smalltalkés unllenguatge de programacióorientat a objectes,dinàmicament tipat ireflexiu.Va ser creat amb l'objectiu de ser el llenguatge que sostingui el nou món de la informàtica exemplificat per la «simbiosi humà-màquina».[1]Va ser dissenyat en part amb propòsits educatius, i més concretament per a unaprenentatge construccionista.Va ser creat perAlan Kay,Dan Ingalls,Adele Goldberg,Ted Kaehler, Scott Wallace, i d'altres col·laboradors, durant la dècada de 1970.
El llenguatge va ser difós inicialment com Smalltalk-80. Llenguatges com Smalltalk són actius, en desenvolupament continu i tenen al seu voltant comunitats fidels. ANSI Smalltalk és la versió estàndard de Smalltalk, després de ser ratificat el 1998.[2]
Descripció
[modifica]Un sistema Smalltalk està compost per:
- Unamàquina virtual(Virtual machine,enanglès)
- Unarxiuanomenat "Imatge", que conté a tots els objectes del sistema
- Unllenguatge de programació(també conegut com aSmalltalk)
- Una enorme biblioteca d' "objectes reusables"
- I generalment, unentorn de desenvolupamentque a més pot funcionar com un sistema en temps d'execució.
Història
[modifica]Els orígens deSmalltalkes troben en les recerques d'Alan Kay,Donen Ingalls, Ted Kaehler,Adele Goldbergi uns altres durant els anys setanta en el Palo Alt Research Institute de Xerox (conegut com aXeroxPARC), per a la creació d'un sistema informàtic orientat a l'educació. L'objectiu era crear un sistema que permetés expandir lacreativitatdels seus usuaris, proporcionant un entorn per a l'experimentació, creació i recerca.
Terminologia
[modifica]Un programa Smalltalk consisteix únicament d'objectes, un concepte que es fa servir universalment dins de tot sistema Smalltalk. Pràcticament tot, des d'un nombre natural com el 4 fins a unservidor webés un objecte. Els objectes Smalltalk presenten característiques comunes:
- Tenen unamemòriapròpia.
- Posseeixen capacitat per comunicar-se amb altres objectes.
- Posseeixen la capacitat d'heretar característiques d'objectes ancestres.
- Tenen capacitat de processament.
Els objectes es comuniquen entre si mitjançant l'enviament de missatges.. Així mateix, un objecte pot proveir moltes operacions (actualment això està determinat per cada implementació)
Les definicions d'aquestes operacions en els objectes són cridadesmètodes.Un mètode especifica la reacció d'un objecte quan rep un missatge que és dirigit a aquest mètode. La resolució (en el sentit de lligat) d'un missatge a un mètode és dinàmica. La col·lecció sencera de mètodes d'un objecte és cridadaprotocol de missatgesointerfície de missatgesde l'objecte. Els missatges poden ser parametritzats, aquests paràmetres seran objectes, i el resultat o resposta del mateix també serà un objecte.
Les característiques comunes d'objectes està capturat sota la noció de classe, de tal forma que els objectes agrupats sota unaclassesón cridatsinstànciesd'ella. Les instàncies són creades durant l'execució d'un programa amb algun propòsit i són escombrats automàticament al moment que no són necessitats més pel recol·lector d'escombraries. Exceptuant alguns objectes especials com els molt simples, anomenatsliterals(nombres, cadenes, etc), cada objecte té el seu propi estat local i representa una instància diferent de la seva classe.
Característiques
[modifica]Smalltalk és considerat el primer dels llenguatges orientats a objectes (OOP), encara que en realitat el primer a implementar programació orientada a objectes va serSimula.En Smalltalktotés un objecte, inclosos els nombres reals o el propi entornSmalltalk.
Com a llenguatge té les següents característiques:
- Orientació a Objectes
- Tipatge dinàmic
- Interacció entre objectes mitjançant enviament de missatges
- Herència simple i amb arrel comuna
- Reflexió computacional completa
- Recol·lecció d'escombraries
- Compilació en temps d'execució o Interpretat (depenent de la distribució o del proveïdor)
- Múltiples Implementacions
Smalltalkha tingut gran influencia sobre altres llenguatges comJavaoRuby,i del seu entorn han sorgit moltes de les pràctiques i eines de desenvolupament promulgades actualment per lesmetodologies àgils(refactorización, desenvolupament incremental, desenvolupament dirigit per tests, etc.).
L'entorn Smalltalk
[modifica]Les implementacions de Smalltalk de major pes (VisualWorks, Squeak, VisualSmalltalk, VisualAge, Dolphin, Pharo Smalltalk, Smalltalk X) posseeixen unentornd'interacció molt diferent a l'entorn de desenvolupament típic d'altres tecnologies comMicrosoft Visual Studio.NetoEclipsi.L'entorn o ambient Smalltalk és primordialment gràfic i funciona com un sistema en temps d'execució que integra diverses eines de programació (Smalltalk), utilitatsmultimèdia,interfícies per executar codi no natiu a Smalltalk i serveis delsistema operatiu.[3]Aquestes possibilitats, que han influït en la metodologia de treball i concepció de la programació, es tradueixen en la tendència a considerar a Smalltalk més que un simplellenguatge de programació. La forma de desenvolupar programari en Smalltalk no consisteix en el cicle típic de les tecnologies tradicionals: Arrencar uneditor de text,compilari executar i acabar l'aplicació. En Smalltalk es manipula l'entorn mateix, comunament mitjançant el Navegador del Sistema.
Sintaxi
[modifica]Tradicionalment, Smalltalk no posseeix una notació explícita per descriure un programa sencer. Sí es fa servir una sintaxi explícita per definir certs elements d'un programa, tals com a mètodes, però la manera en què tals elements estan estructurats dins d'un programa sencer generalment és definida per les múltiples implementacions. L'estàndard mateix no promou una altra adreça, per la qual cosa defineix una sintaxi abstracta de programes Smalltalk, que defineix tots els elements que constitueixen un programa Smalltalk i la manera en què aquests elements estan lògicament composts per altres elements, no obstant això, cada implementació és lliure de definir i utilitzar les moltes sintaxis possibles que estan conformes a la sintaxi abstracta estàndard. Un exemple d'una sintaxi concreta és el Format d'Intercanvi Smalltalk (o SIF, de Smalltalk Interchange Format) definida en el mateix estàndard.
La sintaxi de Smalltalk-80 tendeix a ser minimalista. Això significa que existeixen un grup petit de paraules reservades i declaracions en comparació de la majoria dels llenguatges populars. Smalltalk posseeix un grup de 5 paraules reservades:self,super,nil,trueifalse.
Recol·lecció d'escombraries
[modifica]En Smalltalk no és necessari desalocar objectes explícitament, per tant no proporciona mecanismes per a això. Les implementacions utilitzen tècniques derecol·lecció d'escombrariesper detectar i reclamar espai en memòria associat amb objectes que ja no s'utilitzaran més en el sistema. En Smalltalk la recol·lecció d'escombraries ésintegrada configurable.La forma d'execució del recol·lector d'escombraries és enbackground,és a dir, com un procés de baixa prioritat no interactiu, encara que en algunes implementacions és possible executar-ho a demanda, sent possible definir configuracions de memòria especials per a cada sistema mitjançant polítiques (per exemple en VisualWorks). La freqüència i característiques de la recol·lecció depèn de la tècnica utilitzada per la implementació. Addicionalment algunes implementacions de Smalltalk proporcionen suport per a mecanismes de finalització com l'ús d'Ephemerons.
Reflexió computacional
[modifica]Smalltalk-80 proveeix reflexió computacional estructural i comportacional, ja que és un sistema implementat en si mateix. La reflexió estructural es manifesta en què les classes i mètodes que defineix el sistema són en si mateixos objectes també i formen part del sistema mateix. La majoria de les implementacions de Smalltalk tendeixen a exposar el compilador Smalltalk a l'entorn de programació, permetent que dins del sistema es compilicodi font(textual), transformant-se en objectes mètodes, que són comunament instàncies de la classeCompiledMethod.El sistema generalment incorpora aquests mètodes a les classes, emmagatzemant-los en el diccionari de mètodes de la classe a la qual es vulgui agregar el comportament encarregat del mètode. Això, així com la incorporació de noves classes al sistema, es fa dins del sistema mateix; encara que la major part de les implementacions posseeixen eines visuals que oculten la complexitat d'interactuar amb la classe que usualment s'encarrega de tals tasques, elClassBuilder.
La reflexió computacional de Smalltalk-80 es manifesta en la possibilitat d'observar l'estat computacional del sistema. En els llenguatges derivats del Smalltalk-80 original, durant l'enviament de missatges entre objectes, cada objecte receptor d'un missatge consulta la seva classe per tenir accés als mètodes que defineix. En cas de trobar-se el mètode a la classe, es diu que es "activa" el mètode. Aquesta activació d'un mètode actualment en execució, és accessible mitjançant una paraula clau cridadathisContext.Enviant missatges a thisContext es pot consultar qüestions tals com "qui em va enviar aquest missatge?". Aquestes facilitats fan possible implementar co-rutines, continuacions o back-tracking a l'estilPrologsense necessitat de modificar lamàquina virtual.Un dels usos més interessants d'aquesta facilitat, es dona en elframeworkde web Seaside d'Avi Bryant.
Exemples de Smalltalk
[modifica]En Smalltalk tot és un objecte, i a un objecte se li envien missatges. Per exemple:
1+1
Significa que a l'objecte "1" li enviem el missatge "+" amb el col·laborador extern, un altre objecte, "1". Aquest exemple llavors resulta en l'objecte "2".
Transcriptshow:'¡Hola, món!'
En el típicHola món,l'objecte és Transcript, que rep el missatgeshowamb el col·laborador extern 'Hola, món!'.
Per crear una instància d'un objecte, només cal enviar un missatge new a una classe:
ClasseDeLObjectenew
Per obtenir les vocals d'una cadena de text:
'Això és un text'select:[:aCharacter|aCharacterisVowel].
Vegeu també
[modifica]Referències
[modifica]- ↑Kay,Alan. «The Early History of Smalltalk». [Consulta: 13 setembre 2007].
- ↑«Smalltalk.org™ | versions | ANSIStandardSmalltalk.html». Smalltalk.org. Arxivat de l'originalel 2015-09-07. [Consulta: 25 juny 2013].
- ↑Concepts of Programming Languages.
Bibliografia
[modifica]- "Smalltalk-80"Smalltalk-80.The Interactive Programming Environment, Adele Goldberg. Addison-Wesley Seriïs in Computer Science (1983)
- "A Little Smalltalk". A Little Smalltalk, Thimothy Budd. Addison Wesley (abril de 1987).
- "Discovering Smalltalk"Discovering Smalltalk,Wilf Lalonde. Addison-Wesley Object Technology Sèries (1994).
- "The Art and Science of Smalltalk"The Art and Science of Smalltalk,Simon Lewis. Textbook Binding (1995).
- "Smalltalk Best Practice Patterns"Smalltalk Best Practice Patterns,Kent Beck. Prentice Hall PTR (1996).
- "Kent Beck's Guide to Better Smalltalk"Kent Beck's Guide to Better Smalltalk:A Sorted Collection, Kent Beck.
- "Advanced Smalltalk". Advanced Smalltalk, Jonathan Pletzke. Wiley Computer Publishing. John Wiley & Sons, Inc. (1997).
- "The Design Patterns Smalltalk Companion"The Design Patterns Smalltalk Companion,Sherman R. Alpert, Kyle Brown, Bobby Woolf. Programari Patterns Sèries (1998).
- "ANSI NCITS 319-1998". American National Standard for Information Technology - Programming Languages - Smalltalk. American National Standards Institute, Inc (1998).
- "Smalltalk, Objects, and Design" Smalltalk, Objects, and Design, Chamond Liu. iUniverse (April 2000).
- "Smalltalk With Style"Smalltalk With Style,Suzanne Skublics, Edward J. Klimas, David A. Thomas, John Pugh. Prentice Hall (2002).
- "Llibre de Programació amb Smalltalk"de Diego Gómez Deck (en Español) (2006).
- "Mentoring Course Smalltalk.By Andres Valloud"(2008).
- "Hashing Smalltalk Practice.By Andres Valloud"(2008).
- "Fundamentals Smalltalk Programming Techniques.By Andres Valloud"(2009).
Enllaços externs
[modifica]- The World of SmalltalkArxivat2018-12-21 aWayback Machine., llibres i vídeos de Smalltalk, implementacions, frameworks i eines, blocs i llistes de correu
- Llibres descarregables de Smalltalk