Post on 29-Nov-2014
description
Introducción a Smalltalk y Ambientes
de Objetos
ICES – Sunchales - Noviembre 2013
Introducción a Smalltalk y Ambientes de Objetos
¿Quién Soy?
● Germán S. Arduino
● Desarrollador de Software e Investigador
● Fundador de Arduino Software (http://www.arduinosoftware.com)
● Creador de PasswordsPro (http://www.passwordspro.com)
● Jefe de Investigación y Desarrollo Grupo Sancor Seguros
● About.me/garduino
Orígenes de Smalltalk
El Lugar: (Xerox Parc en Palo Alto, CA, USA)
GUI (iconos, ventanas, mouse)Editor de Textos WYSIWYGInterPress (precursor de PostScript)Red de Area Loca EthernetTecnología de Objetos, Smalltalk, IDE
Orígenes de Smalltalk
Las personas:
Alan Kay
Dan Ingalls
Orígenes de Smalltalk
Las personas:
Adele GoldbergTed Kaehler
¿Qué es Smalltalk?
Es un ambiente de objetos computacionales que se comunican a interactúan mediante el envío de mensajes (Estos mensajes también son objetos)
¿Qué es Smalltalk?
Es un ambiente de objetos computacionales que se comunican a interactúan mediante el envío de mensajes (Estos mensajes también son objetos)
El ambiente Smalltalk tiene un lenguaje de programación que también se conoce como “Smalltalk”
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● Los objetos Smalltalk presentan características comunes:
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● Los objetos Smalltalk presentan características comunes:➢ Tienen una memoria propia.
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● Los objetos Smalltalk presentan características comunes:➢ Tienen una memoria propia.➢ Poseen capacidad para comunicarse con otros objetos.
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● 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.
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● 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.
Características de Smalltalk
● Un programa Smalltalk consiste únicamente de objetos.
● 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.➢ Se comunican entre si por envío de mensajes.
Paradigma Tradicional
Datos
Paradigma Tradicional
Programas Datos
Paradigma Tradicional(“¿Orientado a Objetos? ”)
Programas Datos
Paradigma Tradicional(“¿Orientado a Objetos? ”)
Programas Datos
¿Y el encapsulamiento ?
Tecnología de Objetos(No nos conformamos con que sólo sea “orientado” a objetos)
Foto tomada de: http://solorobotica.blogspot.com.ar/2012/04/s4a-scratch-para-arduino.html
Características de Smalltalk
● Un mismo objeto puede proveer muchas operaciones.
Características de Smalltalk
● Un mismo objeto puede proveer muchas operaciones.
● La definición de cada una de estas operaciones se llama método (Un método especifica la reacción de un objeto cuando recibe un mensaje que es dirigido a ese método).
Características de Smalltalk
● Un mismo objeto puede proveer muchas operaciones.
● La definición de cada una de estas operaciones se llama método (Un método especifica la reacción de un objeto cuando recibe un mensaje que es dirigido a ese método).
● La colección de métodos de un objeto se llama protocolo de mensajes o interfaz de mensajes.
Características de Smalltalk
● Un mismo objeto puede proveer muchas operaciones.
● La definición de cada una de estas operaciones se llama método (Un método especifica la reacción de un objeto cuando recibe un mensaje que es dirigido a ese método).
● La colección de métodos de un objeto se llama protocolo de mensajes o interfaz de mensajes.
● Los mensajes pueden ser parametrizados y los parámetros también son objetos, así como también la respuesta o resultado del método será un objeto.
Características de Smalltalk
● Las características comunes de un objeto se tipifican bajo una clase de tal forma que los objetos agrupados bajo una clase se conocen como instancias de ella.
Características de Smalltalk
● Las características comunes de un objeto se tipifican bajo una clase de tal forma que los objetos agrupados bajo una clase se conocen como instancias de ella.
● Las instancias de una clase se limpian automáticamente cuando ya no se necesitan, por el recolector de basura (garbage collector).
Características de Smalltalk
● Las características comunes de un objeto se tipifican bajo una clase de tal forma que los objetos agrupados bajo una clase se conocen como instancias de ella.
● Las instancias de una clase se limpian automáticamente cuando ya no se necesitan, por el recolector de basura (garbage collector).
● Cada objeto tiene su propio estado local y representa una instancia diferente de su clase.
Características de Smalltalk
● Ambiente de Objetos Puros.
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.● Recolección de Basura.
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.● Recolección de Basura.● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.● Recolección de Basura.● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).● Múltiples Implementaciones.
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.● Recolección de Basura.● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).● Múltiples Implementaciones.● Influencia en otros lenguajes (Java, Ruby, Dart).
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.● Recolección de Basura.● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).● Múltiples Implementaciones.● Influencia en otros lenguajes (Java, Ruby, Dart).● Influencia en las metodologías ágiles (refactorización,
desarrollo incremental, tdd, etc).
Características de Smalltalk
● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.● Recolección de Basura.● Compilación en Tiempo de Ejecución (o interpretado,
dependiendo de la distribución).● Múltiples Implementaciones.● Influencia en otros lenguajes (Java, Ruby, Dart).● Influencia en las metodologías ágiles (refactorización,
desarrollo incremental, tdd, etc).● Metaprogramación.
Otra forma de trabajar● Desarrollo Incremental● Reparación en vivo
Arquitectura de Smalltalk
● Máquina Virtual (específica para cada Sistema Operativo)
Arquitectura de Smalltalk
● Máquina Virtual (específica para cada Sistema Operativo)
● Archivo .sources (contiene los fuentes del ambiente que no cambian muy frecuentemente)
Arquitectura de Smalltalk
● Máquina Virtual (específica para cada Sistema Operativo)
● Archivo .sources (contiene los fuentes del ambiente que no cambian muy frecuentemente)
● Archivo .changes (contiene los cambios que vamos haciendo sobre los objetos a medida que trabajamos)
Arquitectura de Smalltalk
● Máquina Virtual (específica para cada Sistema Operativo)
● Archivo .sources (contiene los fuentes del ambiente que no cambian muy frecuentemente)
● Archivo .changes (contiene los cambios que vamos haciendo sobre los objetos, a nivel código fuente, a medida que trabajamos)
● Archivo .image (contiene el estado de todos los objetos en el sistema, incluidos clases y métodos)
Arquitectura de Smalltalk
● Máquina Virtual (específica para cada Sistema Operativo)
● Archivo .sources (contiene los fuentes del ambiente que no cambian muy frecuentemente)
● Archivo .changes (contiene los cambios que vamos haciendo sobre los objetos, a nivel código fuente, a medida que trabajamos)
● Archivo .image (contiene el estado de todos los objetos en el sistema, incluidos clases y métodos)
Image + changes = Una foto del sistema corriendo, congelado en el tiempo
Smalltalk's Actuales Comerciales
● Cincom Visual Works (http://www.cincomsmalltalk.com/main/products/visualworks/)
● Cincom ObjectStudio (http://www.cincomsmalltalk.com/main/products/objectstudio/)
● VA Smalltalk (http://www.instantiations.com/products/vasmalltalk/index.html)
● GemStone/S (http://gemtalksystems.com/index.php/products/gemstones/)
● Dolphin Smalltalk (http://www.object-arts.com)
● Smalltalk MT (http://www.objectconnect.com)● Visual Smalltalk● Smalltalk/V (Smalltalk Express)
Smalltalk's Actuales No Comerciales
● Squeak (http://www.squeak.org)
● Pharo (http://www.pharo-project.org)
● Cuis (http://www.cuis-smalltalk.org)
● GNU/ST (http://smalltalk.gnu.org)
● Smalltalk/X (http://www.exept.de/en/products/smalltalkx)
● Amber (http://www.amber-lang.net)
● S8 (http://u8.smalltalking.net)
● Redline Smalltalk (http://www.redline.st)
● Iron Smalltalk (http://ironsmalltalk.codeplex.com)
Smalltalk's Actuales Frameworks y Herramientas
● Seaside (http://www.seaside.st)
● Aida Web (http://www.aidaweb.si)
● Iliad (http://www.iliadproject.org)
● Magma (http://wiki.squeak.org/squeak/2665)
● Swazoo (http://www.swazoo.org)
● Moose (http://www.moosetechnology.org)
● Hapa'o (http://objectprofile.com/#/pages/products/hapao/overview.html)
● seaBreeze (http://seabreeze.heeg.de)
● Roassal (http://objectprofile.com/#/pages/products/roassal/overview.html)
● Zinc (http://zn.stfx.eu/zn/index.html)
● Pier (http://www.piercms.com)
● Magritte (http://code.google.com/p/magritte-metamodel/)
● DBXTalk (http://dbxtalk.smallworks.com.ar)
Repositorios de Código
● SqueakMap (http://map.squeak.org)
● SqueakSource (http://www.squeaksource.org)
● SqueakSource 3 (http://ss3.gemstone.com)
● SmalltalkHub (http://www.smalltalkhub.org)
● GitHub (http://www.github.com)
Asociaciones
● ESUG (http://www.esug.org)
● STIC (http://www.stic.st)
● FAST (http://www.fast.org.ar)
Smalltalks2013 en UTN Rosariohttp://www.fast.org.ar/smalltalks2013
Foros y Listas de Correo
● Cada Smalltalk o Framework mencionado (Ver http://forum.world.st)
● ClubSmalltalk (clubsmalltalk@googlegroups.com)
● Smalltalking (smalltalking@gruposyahoo.com.ar)
● SqueakRos (squeakRos@gruposyahoo.com.ar)
Bibliografía y Recursos
● Recopilación Libros Smalltalk (http://stephane.ducasse.free.fr/FreeBooks.html)
● Libros y Documentación por producto
● Tutoriales
● Listas de Correo
● Wiki Squeak (http://wiki.squeak.org/squeak)
● Presentaciones y Videos de las Conferencias
Lecturas Recomendadas
● ¿Por qué objetos ? http://www.smalltalking.net/Papers/why/PorqueObjetos.htm
● Principios de Diseño de Smalltalkhttp://www.smalltalking.net/Papers/stDesign/stDesign.htm
Introducción a Smalltalk y Ambientes de Objetos
¿ Preguntas ?
Introducción a Smalltalk y Ambientes de Objetos
¡ Muchas Gracias !