Vés al contingut

Smalltalk

De la Viquipèdia, l'enciclopèdia lliure
Infotaula de llenguatge de programacióSmalltalk
Tipusllenguatge de programació orientat a objectes,class-based programming language(en)Tradueixillenguatge de programacióModifica el valor a Wikidata
Data de creació1972Modifica el valor a Wikidata
DissenyAlan Kay,Adele GoldbergiPARCModifica el valor a Wikidata
DesenvolupadorAlan Kay,Adele Goldberg,Dan IngallsiDiana MerryModifica el valor a Wikidata
Paradigma de programacióorientado a objetos
Darrera versió estableANSI Smalltalk ()Modifica el valor a Wikidata
Influenciat perLisp,Simula 67,Simula67iLlenguatge de programació LogoModifica el valor a Wikidata
Extensió dels fitxersstModifica el valor a Wikidata

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:

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]
  1. Kay,Alan. «The Early History of Smalltalk». [Consulta: 13 setembre 2007].
  2. «Smalltalk.org&#153 | versions | ANSIStandardSmalltalk.html». Smalltalk.org. Arxivat de l'originalel 2015-09-07. [Consulta: 25 juny 2013].
  3. Concepts of Programming Languages.

Bibliografia

[modifica]

Enllaços externs

[modifica]