smalltalk intro i

53
Introducción a Smalltalk y Ambientes de Objetos ICES – Sunchales - Noviembre 2013

Upload: german-arduino

Post on 29-Nov-2014

893 views

Category:

Technology


3 download

DESCRIPTION

Introducción a Smalltalk y Tecnología de Objetos.

TRANSCRIPT

Page 1: Smalltalk intro I

Introducción a Smalltalk y Ambientes

de Objetos

ICES – Sunchales - Noviembre 2013

Page 2: Smalltalk intro I

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

Page 3: Smalltalk intro I

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

Page 4: Smalltalk intro I

Orígenes de Smalltalk

Las personas:

Alan Kay

Dan Ingalls

Page 5: Smalltalk intro I

Orígenes de Smalltalk

Las personas:

Adele GoldbergTed Kaehler

Page 6: Smalltalk intro I

¿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)

Page 7: Smalltalk intro I

¿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”

Page 8: Smalltalk intro I

Características de Smalltalk

● Un programa Smalltalk consiste únicamente de objetos.

Page 9: Smalltalk intro I

Características de Smalltalk

● Un programa Smalltalk consiste únicamente de objetos.

● Los objetos Smalltalk presentan características comunes:

Page 10: Smalltalk intro I

Características de Smalltalk

● Un programa Smalltalk consiste únicamente de objetos.

● Los objetos Smalltalk presentan características comunes:➢ Tienen una memoria propia.

Page 11: Smalltalk intro I

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.

Page 12: Smalltalk intro I

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.

Page 13: Smalltalk intro I

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.

Page 14: Smalltalk intro I

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.

Page 15: Smalltalk intro I

Paradigma Tradicional

Datos

Page 16: Smalltalk intro I

Paradigma Tradicional

Programas Datos

Page 17: Smalltalk intro I

Paradigma Tradicional(“¿Orientado a Objetos? ”)

Programas Datos

Page 18: Smalltalk intro I

Paradigma Tradicional(“¿Orientado a Objetos? ”)

Programas Datos

¿Y el encapsulamiento ?

Page 19: Smalltalk intro I

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

Page 20: Smalltalk intro I

Características de Smalltalk

● Un mismo objeto puede proveer muchas operaciones.

Page 21: Smalltalk intro I

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).

Page 22: Smalltalk intro I

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.

Page 23: Smalltalk intro I

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.

Page 24: Smalltalk intro I

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.

Page 25: Smalltalk intro I

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).

Page 26: Smalltalk intro I

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.

Page 27: Smalltalk intro I

Características de Smalltalk

● Ambiente de Objetos Puros.

Page 28: Smalltalk intro I

Características de Smalltalk

● Ambiente de Objetos Puros.● Tipado Dinámico.

Page 29: Smalltalk intro I

Características de Smalltalk

● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.

Page 30: Smalltalk intro I

Características de Smalltalk

● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.

Page 31: Smalltalk intro I

Características de Smalltalk

● Ambiente de Objetos Puros.● Tipado Dinámico.● Interacción entre objetos mediante envío de mensajes.● Herencia.● Reflexión Computacional.

Page 32: Smalltalk intro I

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.

Page 33: Smalltalk intro I

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).

Page 34: Smalltalk intro I

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.

Page 35: Smalltalk intro I

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).

Page 36: Smalltalk intro I

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).

Page 37: Smalltalk intro I

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.

Page 38: Smalltalk intro I

Otra forma de trabajar● Desarrollo Incremental● Reparación en vivo

Page 39: Smalltalk intro I

Arquitectura de Smalltalk

● Máquina Virtual (específica para cada Sistema Operativo)

Page 40: Smalltalk intro I

Arquitectura de Smalltalk

● Máquina Virtual (específica para cada Sistema Operativo)

● Archivo .sources (contiene los fuentes del ambiente que no cambian muy frecuentemente)

Page 41: Smalltalk intro I

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)

Page 42: Smalltalk intro I

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)

Page 43: Smalltalk intro I

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

Page 44: Smalltalk intro I

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)

Page 45: Smalltalk intro I

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)

Page 46: Smalltalk intro I

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)

Page 47: Smalltalk intro I

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)

Page 48: Smalltalk intro I

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

Page 49: Smalltalk intro I

Foros y Listas de Correo

● Cada Smalltalk o Framework mencionado (Ver http://forum.world.st)

● ClubSmalltalk ([email protected])

● Smalltalking ([email protected])

● SqueakRos ([email protected])

Page 50: Smalltalk intro I

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

Page 51: Smalltalk intro I

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

Page 52: Smalltalk intro I

Introducción a Smalltalk y Ambientes de Objetos

¿ Preguntas ?

Page 53: Smalltalk intro I

Introducción a Smalltalk y Ambientes de Objetos

¡ Muchas Gracias !