SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
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 WYSIWYG
InterPress (precursor de PostScript)
Red de Area Loca Ethernet
Tecnología de Objetos, Smalltalk, IDE
Orígenes de Smalltalk
Las personas:

Dan Ingalls
Alan Kay
Orígenes de Smalltalk
Las personas:

Adele Goldberg
Ted 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 Rosario
http://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 Smalltalk
http://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 !

Más contenido relacionado

Similar a Smalltalk intro I

Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXIrontec
 
Presentacion Instructoria Progra3 Utec
Presentacion Instructoria Progra3 UtecPresentacion Instructoria Progra3 Utec
Presentacion Instructoria Progra3 UtecBalbino Aylagas Badely
 
Karla garcia java 2
Karla garcia java 2Karla garcia java 2
Karla garcia java 2karlaga2017
 
Karla garcia java 2
Karla garcia java 2Karla garcia java 2
Karla garcia java 2karlaga2017
 
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09Ramiro Nahuel Pol
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosalexmoncada21
 
Karla garcia java 3
Karla garcia java 3Karla garcia java 3
Karla garcia java 3karlaga2017
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxjgs07
 
Curso node.js
Curso node.js Curso node.js
Curso node.js Redradix
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Lenguaje de programación java. Detalles
Lenguaje de programación java. DetallesLenguaje de programación java. Detalles
Lenguaje de programación java. DetallesCursando Desarrollo Web
 

Similar a Smalltalk intro I (20)

Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
 
Java12
Java12Java12
Java12
 
Planificación en inteligencia artificial aplicada a la robótica
Planificación en inteligencia artificial aplicada a la robóticaPlanificación en inteligencia artificial aplicada a la robótica
Planificación en inteligencia artificial aplicada a la robótica
 
Presentacion Instructoria Progra3 Utec
Presentacion Instructoria Progra3 UtecPresentacion Instructoria Progra3 Utec
Presentacion Instructoria Progra3 Utec
 
Karla garcia java 2
Karla garcia java 2Karla garcia java 2
Karla garcia java 2
 
Karla garcia java 2
Karla garcia java 2Karla garcia java 2
Karla garcia java 2
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
1poo
1poo1poo
1poo
 
S01.s1 - Lenguaje Java-1.pdf
S01.s1 - Lenguaje Java-1.pdfS01.s1 - Lenguaje Java-1.pdf
S01.s1 - Lenguaje Java-1.pdf
 
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09
UDESA 2010 - Educación y Tecnología - Ciencias de la Educación - Taller 09
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Java Basico
Java BasicoJava Basico
Java Basico
 
Los objetos de software
Los objetos de softwareLos objetos de software
Los objetos de software
 
Karla garcia java 3
Karla garcia java 3Karla garcia java 3
Karla garcia java 3
 
Lenguajes de programacion.
Lenguajes de programacion.Lenguajes de programacion.
Lenguajes de programacion.
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptx
 
Curso node.js
Curso node.js Curso node.js
Curso node.js
 
Tema2
Tema2Tema2
Tema2
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Lenguaje de programación java. Detalles
Lenguaje de programación java. DetallesLenguaje de programación java. Detalles
Lenguaje de programación java. Detalles
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (10)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Smalltalk intro I

  • 1. Introducción a Smalltalk y Ambientes de Objetos ICES – Sunchales - Noviembre 2013
  • 2. 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
  • 3. Orígenes de Smalltalk El Lugar: (Xerox Parc en Palo Alto, CA, USA) GUI (iconos, ventanas, mouse) Editor de Textos WYSIWYG InterPress (precursor de PostScript) Red de Area Loca Ethernet Tecnología de Objetos, Smalltalk, IDE
  • 4. Orígenes de Smalltalk Las personas: Dan Ingalls Alan Kay
  • 5. Orígenes de Smalltalk Las personas: Adele Goldberg Ted Kaehler
  • 6. ¿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)
  • 7. ¿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”
  • 8. Características de Smalltalk ● Un programa Smalltalk consiste únicamente de objetos.
  • 9. Características de Smalltalk ● Un programa Smalltalk consiste únicamente de objetos. ● Los objetos Smalltalk presentan características comunes:
  • 10. Características de Smalltalk ● ● Un programa Smalltalk consiste únicamente de objetos. Los objetos Smalltalk presentan características comunes: ➢ Tienen una memoria propia.
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 17. Paradigma Tradicional (“¿Orientado a Objetos? ”) Programas Datos
  • 18. Paradigma Tradicional (“¿Orientado a Objetos? ”) Programas Datos ¿Y el encapsulamiento ?
  • 19. 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
  • 20. Características de Smalltalk ● Un mismo objeto puede proveer muchas operaciones.
  • 21. 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).
  • 22. 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.
  • 23. 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.
  • 24. 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.
  • 25. 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).
  • 26. 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.
  • 28. Características de Smalltalk Ambiente de Objetos Puros. ● Tipado Dinámico. ●
  • 29. Características de Smalltalk Ambiente de Objetos Puros. ● Tipado Dinámico. ● Interacción entre objetos mediante envío de mensajes. ●
  • 30. Características de Smalltalk Ambiente de Objetos Puros. ● Tipado Dinámico. ● Interacción entre objetos mediante envío de mensajes. ● Herencia. ●
  • 31. Características de Smalltalk Ambiente de Objetos Puros. ● Tipado Dinámico. ● Interacción entre objetos mediante envío de mensajes. ● Herencia. ● Reflexión Computacional. ●
  • 32. 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. ●
  • 33. 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). ●
  • 34. 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. ●
  • 35. 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). ●
  • 36. 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). ●
  • 37. 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. ●
  • 38. Otra forma de trabajar ● Desarrollo Incremental ● Reparación en vivo
  • 39. Arquitectura de Smalltalk ● Máquina Virtual (específica para cada Sistema Operativo)
  • 40. Arquitectura de Smalltalk ● ● Máquina Virtual (específica para cada Sistema Operativo) Archivo .sources (contiene los fuentes del ambiente que no cambian muy frecuentemente)
  • 41. 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)
  • 42. 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)
  • 43. 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
  • 44. 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) ●
  • 45. 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) ●
  • 46. 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) ●
  • 47. 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)
  • 48. Asociaciones ● ESUG (http://www.esug.org) ● STIC (http://www.stic.st) ● FAST (http://www.fast.org.ar) Smalltalks2013 en UTN Rosario http://www.fast.org.ar/smalltalks2013
  • 49. 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)
  • 50. 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
  • 51. Lecturas Recomendadas ● ● ¿Por qué objetos ? http://www.smalltalking.net/Papers/why/PorqueObjetos.htm Principios de Diseño de Smalltalk http://www.smalltalking.net/Papers/stDesign/stDesign.htm
  • 52. Introducción a Smalltalk y Ambientes de Objetos ¿ Preguntas ?
  • 53. Introducción a Smalltalk y Ambientes de Objetos ¡ Muchas Gracias !