한국   대만   중국   일본 
Smalltalk - Viquipedia, l'enciclopedia lliure Ves al contingut

Smalltalk

De la Viquipedia, l'enciclopedia lliure
Infotaula de llenguatge de programacióSmalltalk
Tipus llenguatge de programacio orientat a objectes , class-based programming language (en) Tradueix i llenguatge de programacio Modifica el valor a Wikidata
Data de creacio 1972 Modifica el valor a Wikidata
Disseny Alan Kay , Adele Goldberg i PARC Modifica el valor a Wikidata
Desenvolupador Alan Kay , Adele Goldberg , Dan Ingalls i Diana Merry Modifica el valor a Wikidata
Paradigma de programacio orientado a objetos
Darrera versio estable ANSI Smalltalk () Modifica el valor a Wikidata
Influenciat per Lisp , Simula 67 , Simula67 i Llenguatge de programacio Logo Modifica el valor a Wikidata
Extensio dels fitxers st Modifica el valor a Wikidata

Smalltalk es un llenguatge de programacio orientat a objectes , dinamicament tipat i reflexiu . Va ser creat amb l'objectiu de ser el llenguatge que sostingui el nou mon de la informatica exemplificat per la ≪simbiosi huma-maquina≫. [1] Va ser dissenyat en part amb proposits educatius, i mes 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 decada de 1970.

El llenguatge va ser difos inicialment com Smalltalk-80. Llenguatges com Smalltalk son actius, en desenvolupament continu i tenen al seu voltant comunitats fidels. ANSI Smalltalk es la versio estandard de Smalltalk, despres de ser ratificat el 1998. [2]

Descripcio [ modifica ]

Un sistema Smalltalk esta compost per:

Historia [ modifica ]

Els origens 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 creacio d'un sistema informatic orientat a l'educacio. L'objectiu era crear un sistema que permetes expandir la creativitat dels seus usuaris, proporcionant un entorn per a l'experimentacio, creacio i recerca.

Terminologia [ modifica ]

Un programa Smalltalk consisteix unicament d'objectes, un concepte que es fa servir universalment dins de tot sistema Smalltalk. Practicament tot, des d'un nombre natural com el 4 fins a un servidor web es un objecte. Els objectes Smalltalk presenten caracteristiques comunes:

  • Tenen una memoria propia.
  • Posseeixen capacitat per comunicar-se amb altres objectes.
  • Posseeixen la capacitat d'heretar caracteristiques d'objectes ancestres.
  • Tenen capacitat de processament.

Els objectes es comuniquen entre si mitjancant l'enviament de missatges.. Aixi mateix, un objecte pot proveir moltes operacions (actualment aixo esta determinat per cada implementacio)

Les definicions d'aquestes operacions en els objectes son cridades metodes. Un metode especifica la reaccio d'un objecte quan rep un missatge que es dirigit a aquest metode. La resolucio (en el sentit de lligat) d'un missatge a un metode es dinamica. La col·leccio sencera de metodes d'un objecte es cridada protocol de missatges o interficie de missatges de l'objecte. Els missatges poden ser parametritzats, aquests parametres seran objectes, i el resultat o resposta del mateix tambe sera un objecte.

Les caracteristiques comunes d'objectes esta capturat sota la nocio de classe, de tal forma que els objectes agrupats sota una classe son cridats instancies d'ella. Les instancies son creades durant l'execucio d'un programa amb algun proposit i son escombrats automaticament al moment que no son necessitats mes pel recol·lector d'escombraries. Exceptuant alguns objectes especials com els molt simples, anomenats literals (nombres, cadenes, etc), cada objecte te el seu propi estat local i representa una instancia diferent de la seva classe.

Caracteristiques [ modifica ]

Smalltalk es considerat el primer dels llenguatges orientats a objectes ( OOP ), encara que en realitat el primer a implementar programacio orientada a objectes va ser Simula. En Smalltalk tot es un objecte, inclosos els nombres reals o el propi entorn Smalltalk .

Com a llenguatge te les seguents caracteristiques:

  • Orientacio a Objectes
  • Tipatge dinamic
  • Interaccio entre objectes mitjancant enviament de missatges
  • Herencia simple i amb arrel comuna
  • Reflexio computacional completa
  • Recol·leccio d'escombraries
  • Compilacio en temps d'execucio o Interpretat (depenent de la distribucio o del proveidor)
  • Multiples Implementacions

Smalltalk ha tingut gran influencia sobre altres llenguatges com Java o Ruby , i del seu entorn han sorgit moltes de les practiques i eines de desenvolupament promulgades actualment per les metodologies agils (refactorizacion, 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'interaccio molt diferent a l'entorn de desenvolupament tipic d'altres tecnologies com Microsoft Visual Studio . Net o Eclipsi . L'entorn o ambient Smalltalk es primordialment grafic i funciona com un sistema en temps d'execucio que integra diverses eines de programacio (Smalltalk), utilitats multimedia , interficies per executar codi no natiu a Smalltalk i serveis del sistema operatiu . [3] Aquestes possibilitats, que han influit en la metodologia de treball i concepcio de la programacio, es tradueixen en la tendencia a considerar a Smalltalk mes que un simple llenguatge de programacio . La forma de desenvolupar programari en Smalltalk no consisteix en el cicle tipic de les tecnologies tradicionals: Arrencar un editor de text , compilar i executar i acabar l'aplicacio. En Smalltalk es manipula l'entorn mateix, comunament mitjancant el Navegador del Sistema.

Sintaxi [ modifica ]

Tradicionalment, Smalltalk no posseeix una notacio explicita per descriure un programa sencer. Si es fa servir una sintaxi explicita per definir certs elements d'un programa, tals com a metodes, pero la manera en que tals elements estan estructurats dins d'un programa sencer generalment es definida per les multiples implementacions. L'estandard mateix no promou una altra adreca, 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 que aquests elements estan logicament composts per altres elements, no obstant aixo, cada implementacio es lliure de definir i utilitzar les moltes sintaxis possibles que estan conformes a la sintaxi abstracta estandard. Un exemple d'una sintaxi concreta es el Format d'Intercanvi Smalltalk (o SIF, de Smalltalk Interchange Format) definida en el mateix estandard.

La sintaxi de Smalltalk-80 tendeix a ser minimalista. Aixo significa que existeixen un grup petit de paraules reservades i declaracions en comparacio de la majoria dels llenguatges populars. Smalltalk posseeix un grup de 5 paraules reservades: self , super , nil , true i false .

Recol·leccio d'escombraries [ modifica ]

En Smalltalk no es necessari desalocar objectes explicitament, per tant no proporciona mecanismes per a aixo. Les implementacions utilitzen tecniques de recol·leccio d'escombraries per detectar i reclamar espai en memoria associat amb objectes que ja no s'utilitzaran mes en el sistema. En Smalltalk la recol·leccio d'escombraries es integrada configurable. La forma d'execucio del recol·lector d'escombraries es en background , es a dir, com un proces de baixa prioritat no interactiu, encara que en algunes implementacions es possible executar-ho a demanda, sent possible definir configuracions de memoria especials per a cada sistema mitjancant politiques (per exemple en VisualWorks). La frequencia i caracteristiques de la recol·leccio depen de la tecnica utilitzada per la implementacio. Addicionalment algunes implementacions de Smalltalk proporcionen suport per a mecanismes de finalitzacio com l'us d'Ephemerons.

Reflexio computacional [ modifica ]

Smalltalk-80 proveeix reflexio computacional estructural i comportacional, ja que es un sistema implementat en si mateix. La reflexio estructural es manifesta en que les classes i metodes que defineix el sistema son en si mateixos objectes tambe i formen part del sistema mateix. La majoria de les implementacions de Smalltalk tendeixen a exposar el compilador Smalltalk a l'entorn de programacio, permetent que dins del sistema es compili codi font (textual), transformant-se en objectes metodes, que son comunament instancies de la classe CompiledMethod. El sistema generalment incorpora aquests metodes a les classes, emmagatzemant-los en el diccionari de metodes de la classe a la qual es vulgui agregar el comportament encarregat del metode. Aixo, aixi com la incorporacio 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 reflexio 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 acces als metodes que defineix. En cas de trobar-se el metode a la classe, es diu que es "activa" el metode. Aquesta activacio d'un metode actualment en execucio, es accessible mitjancant una paraula clau cridada thisContext. Enviant missatges a thisContext es pot consultar questions 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 maquina virtual . Un dels usos mes interessants d'aquesta facilitat, es dona en el framework de web Seaside d'Avi Bryant.

Exemples de Smalltalk [ modifica ]

En Smalltalk tot es 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, mon!'

En el tipic Hola mon , l'objecte es Transcript, que rep el missatge show amb el col·laborador extern 'Hola, mon!'.

Per crear una instancia d'un objecte, nomes cal enviar un missatge new a una classe:

ClasseDeLObjecte
 new

Per obtenir les vocals d'una cadena de text:

'Aixo es un text'
 select:
 [
:
aCharacter
 |
 aCharacter
 isVowel
]
.

Vegeu tambe [ modifica ]

Referencies [ 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 ]

Enllacos externs [ modifica ]