fbpx
Wikipedia

Smalltalk

Smalltalk es un lenguaje reflexivo de programación, orientado a objetos y con tipado dinámico. Por sus características, Smalltalk puede ser considerado también como un entorno de objetos, donde incluso el propio sistema es un objeto. Metafóricamente, se puede considerar que un Smalltalk es un mundo virtual donde viven objetos que se comunican entre sí, mediante el envío de mensajes.

Smalltalk
Alan Kay, Adele Goldberg, Daniel Henry Holmes Ingalls, Jr. y Diana Merry
Información general
Paradigma orientado a objetos
Apareció en Desarrollo comenzado en 1969. Públicamente disponible en 1980
Diseñado por Alan Kay
Sistema de tipos dinámico
Implementaciones múltiples
Influido por Simula, Sketchpad, LISP
Ha influido a Objective-C, Java, Self, Python, Ruby, AppleScript

Un sistema Smalltalk está compuesto por:

Smalltalk obtuvo el segundo lugar para "lenguaje de programación más querido" en las encuestas para desarrolladores de Stack Overflow en 2017.[1]

Historia

Los orígenes de Smalltalk se encuentran en las investigaciones realizadas por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años setenta en el Palo Alto Research Center de Xerox (conocido como Xerox PARC), para la creación de un sistema informático orientado a la educación. El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios, proporcionando un entorno para la experimentación, creación e investigación.

Terminología

Un programa Smalltalk consiste únicamente de objetos, un concepto que se utiliza universalmente dentro de todo sistema Smalltalk. Prácticamente todo, desde un número natural como el 4 hasta un servidor web es un objeto. Los objetos Smalltalk presentan características comunes:

  • Tienen una memoria propia.
  • Poseen capacidad para comunicarse con otros objetos.
  • Poseen la capacidad de heredar características de objetos ancestros.
  • Tienen capacidad de procesamiento.

Los objetos se comunican entre sí mediante el envío de mensajes. Asimismo, un objeto puede proveer muchas operaciones (actualmente esto está determinado por cada implementación).

Las definiciones de estas operaciones en los objetos son llamadas métodos. Un método especifica la reacción de un objeto cuando recibe un mensaje que es dirigido a ese método. La resolución, en el sentido de ligado, de un mensaje a un método es dinámica. La colección entera de métodos de un objeto es llamada protocolo de mensajes o interfaz de mensajes del objeto. Los mensajes pueden ser parametrizados, estos parámetros serán objetos, y el resultado o respuesta del mismo también será un objeto.

Las características comunes de objetos está capturado bajo la noción de clase, de tal forma que los objetos agrupados bajo una clase son llamados instancias de ella. Las instancias son creadas durante la ejecución de un programa con algún propósito y son barridos automáticamente en el momento que no son necesitados más por el recolector de basura. Exceptuando algunos objetos especiales como los muy simples, llamados literales (números, cadenas, etc), cada objeto tiene su propio estado local y representa una instancia diferente de su clase.

Características

Smalltalk es considerado el primero de los lenguajes orientados a objetos, aunque en realidad el primero en implementar programación orientada a objetos fue Simula. En Smalltalk todo es un objeto, incluidos los números reales o el propio entorno Smalltalk.

Como lenguaje tiene las siguientes características:

Smalltalk ha tenido gran influencia sobre otros lenguajes como Java o Ruby, y de su entorno han surgido muchas de las prácticas y herramientas de desarrollo promulgadas actualmente por las metodologías ágiles (refactorización, 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 interacción muy diferente al entorno de desarrollo típico de otras tecnologías como Microsoft Visual Studio .Net o Eclipse. El entorno o ambiente Smalltalk es primordialmente gráfico y funciona como un sistema en tiempo de ejecución que integra varias herramientas de programación (Smalltalk), utilidades multimedia, interfaces para ejecutar código no nativo a Smalltalk y servicios del sistema operativo.[2]​Estas posibilidades, que han influido en la metodología de trabajo y concepción de la programación, se traducen en la tendencia a considerar a Smalltalk más que un simple lenguaje de programación. La forma de desarrollar software en Smalltalk no consiste en el ciclo típico de las tecnologías tradicionales: Arrancar un editor de texto, compilar y ejecutar y terminar la aplicación. En Smalltalk se manipula el entorno mismo, comúnmente mediante el Navegador del Sistema.

Sintaxis

Tradicionalmente, Smalltalk no posee una notación explícita para describir un programa entero. Sí se utiliza una sintaxis explícita para definir ciertos elementos de un programa, tales como métodos, pero la manera en que tales elementos están estructurados dentro de un programa entero generalmente es definida por las múltiples implementaciones. El estándar mismo no promueve otra dirección, 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 están lógicamente compuestos por otros elementos, sin embargo, cada implementación es libre de definir y utilizar las muchas sintaxis posibles que están conformes a la sintaxis abstracta estándar. Un ejemplo de una sintaxis concreta es el Formato de Intercambio Smalltalk (o SIF, de Smalltalk Interchange Format) definida en el mismo estándar.

La sintaxis de Smalltalk-80 tiende a ser minimalista. Esto significa que existen un grupo pequeño de palabras reservadas y declaraciones en comparación con la mayoría de los lenguajes populares. Smalltalk posee un grupo de 6 palabras reservadas: self, super, nil, true , false y thisContext.

Recolección de basura

En Smalltalk no es necesario desalocar objetos explícitamente, por lo tanto no proporciona mecanismos para ello. Las implementaciones utilizan técnicas de recolección de basura para detectar y reclamar espacio en memoria asociado con objetos que ya no se utilizarán más en el sistema. En Smalltalk la recolección de basura es integrada configurable. La forma de ejecución 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 políticas (por ejemplo en VisualWorks). La frecuencia y características de la recolección depende de la técnica utilizada por la implementación. Adicionalmente algunas implementaciones de Smalltalk proporcionan soporte para mecanismos de finalización como el uso de Ephemerons.

Reflexión computacional

Smalltalk-80 provee reflexión computacional y estructural, ya que es un sistema implementado en sí mismo. La reflexión estructural se manifiesta en que las clases y métodos que define el sistema son en sí mismos objetos también y forman parte del sistema mismo. La mayoría de las implementaciones de Smalltalk tienden a exponer el compilador Smalltalk al entorno de programación, permitiendo que dentro del sistema se compile código fuente (textual), transformándose en objetos métodos, que son comúnmente instancias de la clase CompiledMethod. El sistema generalmente incorpora estos métodos en las clases, almacenándolos en el diccionario de métodos de la clase a la cual se quiera agregar el comportamiento que realiza el método. Esto, así como la incorporación 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 reflexión 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 envío de mensajes entre objetos, cada objeto receptor de un mensaje consulta su clase para tener acceso a los métodos que define. En caso de encontrarse el método en la clase, se dice que se "activa" el método. Esta activación de un método actualmente en ejecución, es accesible mediante una palabra clave llamada thisContext. Enviando mensajes a thisContext se puede consultar cuestiones tales como "¿quién me envió este mensaje?". Estas facilidades hacen posible implementar corrutinas, continuaciones o back-tracking al estilo Prolog sin necesidad de modificar la máquina virtual. Uno de los usos más interesantes de esta facilidad, se da en el framework de web Seaside de Avi Bryant.

Ejemplos de Smalltalk

En Smalltalk todo es un objeto, y a un objeto se le envían 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 típico Hola mundo, el objeto es Transcript, que recibe el mensaje show con el colaborador externo '¡Hola, Mundo!'.

Para crear una instancia de un objeto, solo 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]. 

Bibliografía

  • "Smalltalk-80" Smalltalk-80. The Interactive Programming Environment, Adele Goldberg. Addison-Wesley Series 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 Series (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. Software Patterns Series (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).
  • 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).

Referencias

  1. Stack Overflow Developer Survey 2017
  2. Concepts of Programming Languages. Sebesta, Robert (Addison-Wesley, 1996 3.ª ed.)

Enlaces externos

  • "Smalltalk.org" Sitio de difusión (en inglés).
  • "Squeak" Entorno Smalltalk de código abierto (en inglés).
  • "Pharo" Entorno Smalltalk de código abierto (en inglés).
  • "Cuis Smalltalk" Entorno Smalltalk de código abierto (en inglés).
  • "Squeak en OLPC" Entorno Smalltalk de código abierto dentro de las Netbooks de $100 (en inglés).
  • GoodStart "Smalltalk" Sitio de difusión(en inglés).
  • by Alan C. Kay
  • Free Smalltalk Books online
  • Smalltalking: Un espacio para el estudio y desarrollo usando Ambientes de Objetos virtuales
  • , con experiencias educativas usando Squeak en el aula. (en Español).
  • Implementación en Smalltalk del Pac-Man
  • Milkyway.cs.rpi.edu Smalltalk
  •   Datos: Q235086

smalltalk, lenguaje, reflexivo, programación, orientado, objetos, tipado, dinámico, características, puede, considerado, también, como, entorno, objetos, donde, incluso, propio, sistema, objeto, metafóricamente, puede, considerar, mundo, virtual, donde, viven,. Smalltalk es un lenguaje reflexivo de programacion orientado a objetos y con tipado dinamico Por sus caracteristicas Smalltalk puede ser considerado tambien como un entorno de objetos donde incluso el propio sistema es un objeto Metaforicamente se puede considerar que un Smalltalk es un mundo virtual donde viven objetos que se comunican entre si mediante el envio de mensajes SmalltalkAlan Kay Adele Goldberg Daniel Henry Holmes Ingalls Jr y Diana MerryInformacion generalParadigmaorientado a objetosAparecio enDesarrollo comenzado en 1969 Publicamente disponible en 1980Disenado porAlan KaySistema de tiposdinamicoImplementacionesmultiplesInfluido porSimula Sketchpad LISPHa influido aObjective C Java Self Python Ruby AppleScript editar datos en Wikidata Un sistema Smalltalk esta compuesto por Una Maquina virtual Un archivo llamado Imagen que contiene a todos los objetos del sistema Un lenguaje de programacion tambien conocido como Smalltalk Una enorme biblioteca de objetos reusables Y generalmente un entorno de desarrollo que ademas puede funcionar como un sistema en tiempo de ejecucion Smalltalk obtuvo el segundo lugar para lenguaje de programacion mas querido en las encuestas para desarrolladores de Stack Overflow en 2017 1 Indice 1 Historia 2 Terminologia 3 Caracteristicas 4 El entorno Smalltalk 5 Sintaxis 6 Recoleccion de basura 7 Reflexion computacional 8 Ejemplos de Smalltalk 9 Bibliografia 10 Referencias 11 Enlaces externosHistoria EditarLos origenes de Smalltalk se encuentran en las investigaciones realizadas por Alan Kay Dan Ingalls Ted Kaehler Adele Goldberg y otros durante los anos setenta en el Palo Alto Research Center de Xerox conocido como Xerox PARC para la creacion de un sistema informatico orientado a la educacion El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios proporcionando un entorno para la experimentacion creacion e investigacion Terminologia EditarUn programa Smalltalk consiste unicamente de objetos un concepto que se utiliza universalmente dentro de todo sistema Smalltalk Practicamente todo desde un numero natural como el 4 hasta un servidor web es un objeto Los objetos Smalltalk presentan caracteristicas comunes Tienen una memoria propia Poseen capacidad para comunicarse con otros objetos Poseen la capacidad de heredar caracteristicas de objetos ancestros Tienen capacidad de procesamiento Los objetos se comunican entre si mediante el envio de mensajes Asimismo un objeto puede proveer muchas operaciones actualmente esto esta determinado por cada implementacion Las definiciones de estas operaciones en los objetos son llamadas metodos Un metodo especifica la reaccion de un objeto cuando recibe un mensaje que es dirigido a ese metodo La resolucion en el sentido de ligado de un mensaje a un metodo es dinamica La coleccion entera de metodos de un objeto es llamada protocolo de mensajes o interfaz de mensajes del objeto Los mensajes pueden ser parametrizados estos parametros seran objetos y el resultado o respuesta del mismo tambien sera un objeto Las caracteristicas comunes de objetos esta capturado bajo la nocion de clase de tal forma que los objetos agrupados bajo una clase son llamados instancias de ella Las instancias son creadas durante la ejecucion de un programa con algun proposito y son barridos automaticamente en el momento que no son necesitados mas por el recolector de basura Exceptuando algunos objetos especiales como los muy simples llamados literales numeros cadenas etc cada objeto tiene su propio estado local y representa una instancia diferente de su clase Caracteristicas EditarSmalltalk es considerado el primero de los lenguajes orientados a objetos aunque en realidad el primero en implementar programacion orientada a objetos fue Simula En Smalltalk todo es un objeto incluidos los numeros reales o el propio entorno Smalltalk Como lenguaje tiene las siguientes caracteristicas Orientacion a Objetos Tipado dinamico Interaccion entre objetos mediante envio de mensajes Herencia simple y con raiz comun Reflexion computacional completa Recoleccion de basura Compilacion en tiempo de ejecucion o Interpretado dependiendo de la distribucion o del proveedor Multiples ImplementacionesSmalltalk ha tenido gran influencia sobre otros lenguajes como Java o Ruby y de su entorno han surgido muchas de las practicas y herramientas de desarrollo promulgadas actualmente por las metodologias agiles refactorizacion desarrollo incremental desarrollo dirigido por tests etc El entorno Smalltalk EditarLas implementaciones de Smalltalk de mayor peso VisualWorks Squeak VisualSmalltalk VisualAge Dolphin Pharo Smalltalk Smalltalk X poseen un entorno de interaccion muy diferente al entorno de desarrollo tipico de otras tecnologias como Microsoft Visual Studio Net o Eclipse El entorno o ambiente Smalltalk es primordialmente grafico y funciona como un sistema en tiempo de ejecucion que integra varias herramientas de programacion Smalltalk utilidades multimedia interfaces para ejecutar codigo no nativo a Smalltalk y servicios del sistema operativo 2 Estas posibilidades que han influido en la metodologia de trabajo y concepcion de la programacion se traducen en la tendencia a considerar a Smalltalk mas que un simple lenguaje de programacion La forma de desarrollar software en Smalltalk no consiste en el ciclo tipico de las tecnologias tradicionales Arrancar un editor de texto compilar y ejecutar y terminar la aplicacion En Smalltalk se manipula el entorno mismo comunmente mediante el Navegador del Sistema Sintaxis EditarTradicionalmente Smalltalk no posee una notacion explicita para describir un programa entero Si se utiliza una sintaxis explicita para definir ciertos elementos de un programa tales como metodos pero la manera en que tales elementos estan estructurados dentro de un programa entero generalmente es definida por las multiples implementaciones El estandar mismo no promueve otra direccion 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 estan logicamente compuestos por otros elementos sin embargo cada implementacion es libre de definir y utilizar las muchas sintaxis posibles que estan conformes a la sintaxis abstracta estandar Un ejemplo de una sintaxis concreta es el Formato de Intercambio Smalltalk o SIF de Smalltalk Interchange Format definida en el mismo estandar La sintaxis de Smalltalk 80 tiende a ser minimalista Esto significa que existen un grupo pequeno de palabras reservadas y declaraciones en comparacion con la mayoria de los lenguajes populares Smalltalk posee un grupo de 6 palabras reservadas self super nil true false y thisContext Recoleccion de basura EditarEn Smalltalk no es necesario desalocar objetos explicitamente por lo tanto no proporciona mecanismos para ello Las implementaciones utilizan tecnicas de recoleccion de basura para detectar y reclamar espacio en memoria asociado con objetos que ya no se utilizaran mas en el sistema En Smalltalk la recoleccion de basura es integrada configurable La forma de ejecucion 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 politicas por ejemplo en VisualWorks La frecuencia y caracteristicas de la recoleccion depende de la tecnica utilizada por la implementacion Adicionalmente algunas implementaciones de Smalltalk proporcionan soporte para mecanismos de finalizacion como el uso de Ephemerons Reflexion computacional EditarSmalltalk 80 provee reflexion computacional y estructural ya que es un sistema implementado en si mismo La reflexion estructural se manifiesta en que las clases y metodos que define el sistema son en si mismos objetos tambien y forman parte del sistema mismo La mayoria de las implementaciones de Smalltalk tienden a exponer el compilador Smalltalk al entorno de programacion permitiendo que dentro del sistema se compile codigo fuente textual transformandose en objetos metodos que son comunmente instancias de la clase CompiledMethod El sistema generalmente incorpora estos metodos en las clases almacenandolos en el diccionario de metodos de la clase a la cual se quiera agregar el comportamiento que realiza el metodo Esto asi como la incorporacion 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 reflexion 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 envio de mensajes entre objetos cada objeto receptor de un mensaje consulta su clase para tener acceso a los metodos que define En caso de encontrarse el metodo en la clase se dice que se activa el metodo Esta activacion de un metodo actualmente en ejecucion es accesible mediante una palabra clave llamada thisContext Enviando mensajes a thisContext se puede consultar cuestiones tales como quien me envio este mensaje Estas facilidades hacen posible implementar corrutinas continuaciones o back tracking al estilo Prolog sin necesidad de modificar la maquina virtual Uno de los usos mas interesantes de esta facilidad se da en el framework de web Seaside de Avi Bryant Ejemplos de Smalltalk EditarEn Smalltalk todo es un objeto y a un objeto se le envian 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 tipico Hola mundo el objeto es Transcript que recibe el mensaje show con el colaborador externo Hola Mundo Para crear una instancia de un objeto solo 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 Bibliografia Editar Smalltalk 80 Smalltalk 80 The Interactive Programming Environment Adele Goldberg Addison Wesley Series 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 Series 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 amp Sons Inc 1997 The Design Patterns Smalltalk Companion The Design Patterns Smalltalk Companion Sherman R Alpert Kyle Brown Bobby Woolf Software Patterns Series 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 Libro de Programacion con Smalltalk de Diego Gomez Deck en Espanol 2006 Mentoring Course Smalltalk By Andres Valloud 2008 Hashing Smalltalk Practice By Andres Valloud 2008 Fundamentals Smalltalk Programming Techniques By Andres Valloud 2009 Referencias Editar Stack Overflow Developer Survey 2017 Concepts of Programming Languages Sebesta Robert Addison Wesley 1996 3 ª ed Enlaces externos Editar Smalltalk org Sitio de difusion en ingles Squeak Entorno Smalltalk de codigo abierto en ingles Pharo Entorno Smalltalk de codigo abierto en ingles Cuis Smalltalk Entorno Smalltalk de codigo abierto en ingles Squeak en OLPC Entorno Smalltalk de codigo abierto dentro de las Netbooks de 100 en ingles GoodStart Smalltalk Sitio de difusion en ingles The Early History of Smalltalk by Alan C Kay Free Smalltalk Books online Smalltalking Un espacio para el estudio y desarrollo usando Ambientes de Objetos virtuales Wiki con documentacion de Squeak derivado de SmallTalk 80 en Espanol Manual de introduccion para principiantes de Squeak en Espanol Traduccion al Castellano del libro Powerful Ideas in the Classroom con experiencias educativas usando Squeak en el aula en Espanol Implementacion en Smalltalk del Pac Man Milkyway cs rpi edu Smalltalk Datos Q235086Obtenido de https es wikipedia org w index php title Smalltalk amp oldid 136165342, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos