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) Tradueix i llenguatge de programaci� Modifica el valor a Wikidata
Data de creaci�1972 Modifica el valor a Wikidata
DissenyAlan Kay, Adele Goldberg i PARC Modifica el valor a Wikidata
DesenvolupadorAlan Kay, Adele Goldberg, Dan Ingalls i Diana Merry Modifica el valor a Wikidata
Paradigma de programaci�orientado a objetos
Darrera versi� estableANSI Smalltalk () Modifica el valor a Wikidata
Influenciat perLisp, Simula 67, Simula67 i Llenguatge de programaci� Logo Modifica el valor a Wikidata
Extensi� dels fitxersst Modifica el valor a Wikidata

Smalltalk �s un llenguatge de programaci� orientat a objectes, din�micament tipat i reflexiu. 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 un aprenentatge construccionista. Va ser creat per Alan 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 de Smalltalk es troben en les recerques d'Alan Kay, Donen Ingalls, Ted Kaehler, Adele Goldberg i uns altres durant els anys setanta en el Palo Alt Research Institute de Xerox (conegut com a Xerox PARC), per a la creaci� d'un sistema inform�tic orientat a l'educaci�. L'objectiu era crear un sistema que permet�s expandir la creativitat dels 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 un servidor web �s un objecte. Els objectes Smalltalk presenten caracter�stiques comunes:

  • Tenen una mem�ria pr�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 cridades m�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 cridada protocol de missatges o interf�cie de missatges de 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 una classe s�n cridats inst�ncies d'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, anomenats literals (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 ser Simula. En Smalltalk tot �s un objecte, inclosos els nombres reals o el propi entorn Smalltalk.

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

Smalltalk ha tingut gran influencia sobre altres llenguatges com Java o Ruby, i del seu entorn han sorgit moltes de les pr�ctiques i eines de desenvolupament promulgades actualment per les metodologies �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 un entorn d'interacci� molt diferent a l'entorn de desenvolupament t�pic d'altres tecnologies com Microsoft Visual Studio.Net o Eclipsi. 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), utilitats multim�dia, interf�cies per executar codi no natiu a Smalltalk i serveis del sistema 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 simple llenguatge de programaci�. La forma de desenvolupar programari en Smalltalk no consisteix en el cicle t�pic de les tecnologies tradicionals: Arrencar un editor de text, compilar i 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, true i false.

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 de recol�lecci� d'escombraries per 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 �s integrada configurable. La forma d'execuci� del recol�lector d'escombraries �s en background, �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 compili codi font (textual), transformant-se en objectes m�todes, que s�n comunament inst�ncies de la classe CompiledMethod. 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, el ClassBuilder.

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 cridada thisContext. 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'estil Prolog sense necessitat de modificar la m�quina virtual. Un dels usos m�s interessants d'aquesta facilitat, es dona en el framework de 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".

Transcript show: '�Hola, m�n!'

En el t�pic Hola món, l'objecte és Transcript, que rep el missatge show amb 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:

ClasseDeLObjecte new

Per obtenir les vocals d'una cadena de text:

'Això és un text' select: [:aCharacter | aCharacter isVowel].

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'original el 2015-09-07. [Consulta: 25 juny 2013].
  3. Concepts of Programming Languages.

Bibliografia

[modifica]

Enllaços externs

[modifica]