Está en la página 1de 6

Smalltalk

Smalltalk
Smalltalk Informacin general Paradigma Apareci en Diseado por Tipo de dato orientado a objetos Desarrollo comenzado en 1969. Pblicamente disponible en 1980 Alan Kay dinmico

Implementaciones mltiples Influido por Ha influido a Simula, Sketchpad, LISP Objective-C, Java, Self, Python, Ruby, AppleScript

Smalltalk es mucho ms que un lenguaje de programacin. Permite realizar tareas de computacin mediante la interaccin con un entorno de objetos virtuales. Metafricamente, se puede considerar que un Smalltalk es un mundo virtual donde viven objetos que se comunican entre s, mediante el envo de mensajes. Un sistema Smalltalk est compuesto por: Una Mquina virtual (Virtual machine) Un archivo llamado "Imagen", que contiene a todos los objetos del sistema Un lenguaje de programacin (tambin conocido como Smalltalk) Una enorme biblioteca de "objetos reusables" Y generalmente, un entorno de desarrollo que adems puede funcionar como un sistema en tiempo de ejecucin.

Historia
Los orgenes de Smalltalk se encuentran en las investigaciones realizadas por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los aos setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox PARC), para la creacin de un sistema informtico orientado a la educacin. El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios, proporcionando un entorno para la experimentacin, creacin e investigacin.

Terminologa
Un programa Smalltalk consiste nicamente de objetos, un concepto que se utiliza universalmente dentro de todo sistema Smalltalk. Prcticamente todo, desde un nmero natural como el 4 hasta un servidor web es un objeto. Los objetos Smalltalk presentan caractersticas comunes: Tienen una memoria propia. Poseen capacidad para comunicarse con otros objetos. Poseen la capacidad de heredar caractersticas de objetos ancestros. Tienen capacidad de procesamiento.

Los objetos se comunican entre s mediante el envo de mensajes.. Asimismo, un objeto puede proveer muchas operaciones (actualmente esto est determinado por cada implementacin) Las definiciones de estas operaciones en los objetos son llamadas mtodos. Un mtodo especifica la reaccin de un objeto cuando recibe un mensaje que es dirigido a ese mtodo. La resolucin (en el sentido de ligado) de un mensaje a un mtodo es dinmica. La coleccin entera de mtodos de un objeto es llamada protocolo de mensajes o interfaz de mensajes del objeto. Los mensajes pueden ser parametrizados, estos parmetros sern objetos, y el resultado o

Smalltalk respuesta del mismo tambin ser un objeto. Las caractersticas comunes de objetos est capturado bajo la nocin de clase, de tal forma que los objetos agrupados bajo una clase son llamados instancias de ella. Las instancias son creadas durante la ejecucin de un programa con algn propsito y son barridos automticamente en el momento que no son necesitados ms por el recolector de basura. Exceptuando algunos objetos especiales como los muy simples, llamados literales (nmeros, cadenas, etc), cada objeto tiene su propio estado local y representa una instancia diferente de su clase.

Caractersticas
Smalltalk es considerado el primero de los lenguajes orientados a objetos (OOP), aunque en realidad el primero en implementar programacin orientada a objetos fue Simula. En Smalltalk todo es un objeto, incluidos los nmeros reales o el propio entorno Smalltalk. Como lenguaje tiene las siguientes caractersticas: Orientacin a Objetos Tipado dinmico Interaccin entre objetos mediante envo de mensajes Herencia simple y con raz comn Reflexin computacional completa Recoleccin de basura Compilacin en tiempo de ejecucin o Interpretado (dependiendo de la distribucin o del proveedor) Mltiples Implementaciones

Smalltalk ha tenido gran influencia sobre otros lenguajes como Java o Ruby, y de su entorno han surgido muchas de las prcticas y herramientas de desarrollo promulgadas actualmente por las metodologas giles (refactorizacin, desarrollo incremental, desarrollo dirigido por tests, etc.).

El entorno Smalltalk
Las implementaciones de Smalltalk de mayor peso (VisualWorks, Squeak, VisualSmalltalk, VisualAge, Dolphin, Pharo Smalltalk, Smalltalk X) poseen un entorno de interaccin muy diferente al entorno de desarrollo tpico de otras tecnologas como Microsoft Visual Studio .Net o Eclipse. El entorno o ambiente Smalltalk es primordialmente grfico y funciona como un sistema en tiempo de ejecucin que integra varias herramientas de programacin (Smalltalk), utilidades multimedia, interfaces para ejecutar cdigo no nativo a Smalltalk y servicios del sistema operativo.[1]Estas posibilidades, que han influido en la metodologa de trabajo y concepcin de la programacin, se traducen en la tendencia a considerar a Smalltalk ms que un simple lenguaje de programacin. La forma de desarrollar software en Smalltalk no consiste en el ciclo tpico de las tecnologas tradicionales: Arrancar un editor de texto, compilar y ejecutar y terminar la aplicacin. En Smalltalk se manipula el entorno mismo, comnmente mediante el Navegador del Sistema.

Sintaxis
Tradicionalmente, Smalltalk no posee una notacin explcita para describir un programa entero. S se utiliza una sintaxis explcita para definir ciertos elementos de un programa, tales como mtodos, pero la manera en que tales elementos estn estructurados dentro de un programa entero generalmente es definida por las mltiples implementaciones. El estndar mismo no promueve otra direccin, por lo que define una sintaxis abstracta de programas Smalltalk, que define todos los elementos que constituyen un programa Smalltalk y la manera en que esos elementos estn lgicamente compuestos por otros elementos, sin embargo, cada implementacin es libre de definir y utilizar las muchas sintaxis posibles que estn conformes a la sintaxis abstracta estndar. Un ejemplo de una sintaxis concreta es el Formato de Intercambio Smalltalk (o SIF, de Smalltalk Interchange Format) definida en el

Smalltalk mismo estndar. La sintaxis de Smalltalk-80 tiende a ser minimalista. Esto significa que existen un grupo pequeo de palabras reservadas y declaraciones en comparacin con la mayora de los lenguajes populares. Smalltalk posee un grupo de 5 palabras reservadas: self, super, nil, true y false.

Recoleccin de basura
En Smalltalk no es necesario desalocar objetos explcitamente, por lo tanto no proporciona mecanismos para ello. Las implementaciones utilizan tcnicas de recoleccin de basura para detectar y reclamar espacio en memoria asociado con objetos que ya no se utilizarn ms en el sistema. En Smalltalk la recoleccin de basura es integrada configurable. La forma de ejecucin del recolector de basura es en background, es decir, como un proceso de baja prioridad no interactivo, aunque en algunas implementaciones es posible ejecutarlo a demanda, siendo posible definir configuraciones de memoria especiales para cada sistema mediante polticas (por ejemplo en VisualWorks). La frecuencia y caractersticas de la recoleccin depende de la tcnica utilizada por la implementacin. Adicionalmente algunas implementaciones de Smalltalk proporcionan soporte para mecanismos de finalizacin como el uso de Ephemerons.

Reflexin computacional
Smalltalk-80 provee reflexin computacional estructural y comportacional, ya que es un sistema implementado en s mismo. La reflexin estructural se manifiesta en que las clases y mtodos que define el sistema son en s mismos objetos tambin y forman parte del sistema mismo. La mayora de las implementaciones de Smalltalk tienden a exponer el compilador Smalltalk al entorno de programacin, permitiendo que dentro del sistema se compile cdigo fuente (textual), transformndose en objetos mtodos, que son comnmente instancias de la clase CompiledMethod. El sistema generalmente incorpora estos mtodos en las clases, almacenndolos en el diccionario de mtodos de la clase a la cual se quiera agregar el comportamiento que realiza el mtodo. Esto, as como la incorporacin de nuevas clases al sistema, es realizado dentro del sistema mismo; aunque la mayor parte de las implementaciones poseen herramientas visuales que ocultan la complejidad de interactuar con la clase que usualmente se encarga de tales tareas, el ClassBuilder. La reflexin computacional de Smalltalk-80 se manifiesta en la posibilidad de observar el estado computacional del sistema. En los lenguajes derivados del Smalltalk-80 original, durante el envo de mensajes entre objetos, cada objeto receptor de un mensaje consulta su clase para tener acceso a los mtodos que define. En caso de encontrarse el mtodo en la clase, se dice que se "activa" el mtodo. Esta activacin de un mtodo actualmente en ejecucin, es accesible mediante una palabra clave llamada thisContext. Enviando mensajes a thisContext se puede consultar cuestiones tales como "quin me envi este mensaje?". Estas facilidades hacen posible implementar co-rutinas, continuaciones o back-tracking al estilo Prolog sin necesidad de modificar la mquina virtual. Uno de los usos ms interesantes de esta facilidad, se da en el framework de web Seaside de Avi Bryant.

Smalltalk

Ejemplos de Smalltalk
En Smalltalk todo es un objeto, y a un objeto se le envan mensajes. Por ejemplo: 1 + 1 Significa que al objeto "1" le enviamos el mensaje "+" con el colaborador externo, otro objeto, "1". Este ejemplo entonces resulta en el objeto "2". Transcript show: 'Hola, mundo!' En el tpico Hola mundo, el objeto es Transcript, que recibe el mensaje show con el colaborador externo 'Hola, Mundo!'. Para crear una instancia de un objeto, slo hay que mandar un mensaje new a una clase: ClaseDelObjeto new Para obtener las vocales de una cadena de texto: 'Esto es un texto' select: [:aCharacter | aCharacter isVowel].

Bibliografa
"Smalltalk-80" [2] Smalltalk-80. The Interactive Programming Environment, Adele Goldberg. Addison-Wesley Series in Computer Science (1983) "A Little Smalltalk" [3]. A Little Smalltalk, Thimothy Budd. Addison Wesley (Abril de 1987). "Discovering Smalltalk" [4] Discovering Smalltalk, Wilf Lalonde. Addison-Wesley Object Technology Series (1994). "The Art and Science of Smalltalk" [5] The Art and Science of Smalltalk, Simon Lewis. Textbook Binding (1995). "Smalltalk Best Practice Patterns" [6] Smalltalk Best Practice Patterns, Kent Beck. Prentice Hall PTR (1996). "Kent Beck's Guide to Better Smalltalk" [7] Kent Beck's Guide to Better Smalltalk: A Sorted Collection, Kent Beck. "Advanced Smalltalk" [8]. Advanced Smalltalk, Jonathan Pletzke. Wiley Computer Publishing. John Wiley & Sons, Inc. (1997). "The Design Patterns Smalltalk Companion" [9] The Design Patterns Smalltalk Companion, Sherman R. Alpert, Kyle Brown, Bobby Woolf. Software Patterns Series (1998). "ANSI NCITS 319-1998" [10]. American National Standard for Information Technology - Programming Languages - Smalltalk. American National Standards Institute, Inc (1998). "Smalltalk, Objects, and Design" [11] Smalltalk, Objects, and Design, Chamond Liu. iUniverse (April 2000). "Smalltalk With Style" [12] Smalltalk With Style, Suzanne Skublics, Edward J. Klimas, David A. Thomas, John Pugh. Prentice Hall (2002). "Libro de Programacin con Smalltalk" [13] de Diego Gmez Deck (en Espaol) (2006). " Mentoring Course Smalltalk. By Andres Valloud" [14] (2008). " Hashing Smalltalk Practice. By Andres Valloud" [15] (2008). " Fundamentals Smalltalk Programming Techniques. By Andres Valloud" [16] (2009).

Smalltalk

Enlaces externos
"Smalltalk.org" [17] Sitio de difusin (en Ingls). "ClubSmalltalk" [18] Sitio de difusin de la tecnologa (en Espaol). "Squeak" [19] Entorno Smalltalk de cdigo abierto (en Ingls). "Squeak en OLPC" [20] Entorno Smalltalk de cdigo abierto dentro de las Netbooks de $100 (en ingls). GoodStart "Smalltalk" [21] Sitio de difusin(en Ingls). The Early History of Smalltalk [22] by Alan C. Kay Free Smalltalk Books online [23] Smalltalking: Un espacio para el estudio y desarrollo usando Ambientes de Objetos virtuales [24] Wiki con documentacin de Squeak (derivado de SmallTalk-80) (en Espaol) [25] Manual de introduccin para principiantes de Squeak (en Espaol) [26] Traduccin al Castellano del libro Powerful Ideas in the Classroom [27], con experiencias educativas usando Squeak en el aula. (en Espaol). Implementacin en Smalltalk del Pac-Man [28]
[1] Concepts of Programming Languages. Sebesta, Robert (Addison-Wesley, 1996 3ra. ed.) [2] http:/ / www. amazon. com/ Smalltalk-80-Interactive-Programming-Environment-Addison-Wesley/ dp/ 0201113724/ sr=1-1/ qid=1171935190/ ref=sr_1_1/ 102-9311003-9618564?ie=UTF8& s=books [3] http:/ / www. amazon. com/ Little-Smalltalk-Timothy-Budd/ dp/ 0201106981 [4] http:/ / www. amazon. com/ Discovering-Smalltalk-Addison-Wesley-Object-Technology/ dp/ 0805327207/ sr=1-11/ qid=1171932693/ ref=sr_1_11/ 102-9311003-9618564?ie=UTF8& s=books [5] http:/ / www. amazon. com/ Art-Science-Smalltalk-Simon-Lewis/ dp/ 0133713458/ sr=8-9/ qid=1171936387/ ref=pd_bbs_sr_9/ 105-6450406-1021243?ie=UTF8& s=books [6] http:/ / www. amazon. com/ Smalltalk-Best-Practice-Patterns-Kent/ dp/ 013476904X/ sr=8-4/ qid=1171936387/ ref=pd_bbs_sr_4/ 105-6450406-1021243?ie=UTF8& s=books [7] http:/ / www. amazon. com/ Kent-Becks-Guide-Better-Smalltalk/ dp/ 0521644372/ sr=1-7/ qid=1171932693/ ref=sr_1_7/ 102-9311003-9618564?ie=UTF8& s=books [8] http:/ / www. amazon. com/ Advanced-Smalltalk-Jonathan-Pletzke/ dp/ product-description/ 0471163503 [9] http:/ / www. amazon. com/ Design-Patterns-Smalltalk-Companion-Software/ dp/ 0201184621/ sr=8-8/ qid=1171936387/ ref=pd_bbs_sr_8/ 105-6450406-1021243?ie=UTF8& s=books [10] http:/ / www. ncits. org/ Archive/ 1998/ it980527/ it980527. htm [11] http:/ / www. amazon. com/ Smalltalk-Objects-Design-Chamond-Liu/ dp/ 1583484906/ sr=8-5/ qid=1171936387/ ref=pd_bbs_sr_5/ 105-6450406-1021243?ie=UTF8& s=books [12] http:/ / www. amazon. com/ Smalltalk-Style-Suzanne-Skublics/ dp/ 0131655493/ sr=8-1/ qid=1171936387/ ref=pd_bbs_sr_1/ 105-6450406-1021243?ie=UTF8& s=books [13] http:/ / wiki. gnulinex. org/ LibroProgramacionSmalltalk/ 10 [14] http:/ / www. amazon. com/ Mentoring-Course-Smalltalk-Andres-Valloud/ dp/ B00262QEKK [15] http:/ / www. amazon. com/ Hashing-Smalltalk-Practice-Andres-Valloud/ dp/ B0016L4S8M/ ref=sr_1_2?s=books& ie=UTF8& qid=1322370224& sr=1-2 [16] http:/ / www. amazon. com/ Fundamentals-Smalltalk-Programming-Techniques-1/ dp/ B002PSKAKU/ ref=sr_1_3?s=books& ie=UTF8& qid=1322370224& sr=1-3 [17] http:/ / www. smalltalk. org [18] http:/ / www. clubsmalltalk. org [19] http:/ / www. squeak. org [20] http:/ / wiki. laptop. org/ go/ Squeak [21] http:/ / www. goodstart. com [22] http:/ / gagne. homedns. org/ %7etgagne/ contrib/ EarlyHistoryST. html [23] http:/ / www. iam. unibe. ch/ ~ducasse/ FreeBooks. html [24] http:/ / www. smalltalking. net [25] http:/ / swiki. agro. uba. ar/ small_land/ [26] http:/ / swiki. agro. uba. ar/ small_land/ 27 [27] http:/ / swiki. agro. uba. ar/ small_land/ uploads/ 193/ Libro_Completo. pdf [28] http:/ / www. midnightsoret. com. ar/ personales/ alejandrovaldez/ pacman/ index. html

Fuentes y contribuyentes del artculo

Fuentes y contribuyentes del artculo


Smalltalk Fuente: http://es.wikipedia.org/w/index.php?oldid=67507557 Contribuyentes: 200.81.64.xxx, Aloon, Ascnder, Brion VIBBER, Cann, ColdWind, Damifb, Davidsevilla, Diegovallejo, Diegusjaimes, Djiraan, Dodo, Dorieo, Dusan, Edgar, Eferro, Elabra sanchez, Fernd, GermanX, Interwiki, Jkbw, JoaquinFerrero, Joseaperez, Juanma 312008, Kavanagh, Lividiniski, Macar, ManuelGR, Miuler, Moriel, Obelix83, Offray, Pauloslomp, Plux, Roberto Ttt, Shooke, Stickel, Toni Oriol, Unf, Willtron, conversion script, 78 ediciones annimas

Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/

También podría gustarte