Pharo Smalltalk

Un Entorno de Programación Subversiva

Rafael Luque / @osoco

Demo 1

Programación como un "diálogo" con objetos vivos

Ideas para el debate

  • ¿Por qué seguir un ciclo editar-compilar-ejecutar-probar cuando podemos obtener feedback inmediato con un entorno de programación vivo?
  • ¿Alguna experiencia con un entorno de live programming?

Interludio

La verdadera revolución del ordenador no ha ocurrido todavía

Why Software is Eating the World
Marc Andreessen (2011)

“More and more major business and industries are being run in software (...) Over the next 10 years, I expect many more industries to be disrupted by software.”

Ley de Moore (1965)

The Real Computer Revolution Hasn't Happened Yet
Alan Kay (2007)

“(...) it looks as though the actual revolution will take longer, largely because the commercial and educational interests in the old media and modes of thought have frozen personal computing pretty much at the imitation of paper, recordings, film and TV level.”

¿Quiénes son?

Ivan Sutherland
Sketchpad (1962)

Doug Engelbart
NLS (1968)

Alan Kay
Dynabook (1972)

SKETCHPAD

Ivan Sutherland (1962)

NLS

Doug Engelbart (1968)

Augmenting Human Intellect

Doug Engelbart (1962)

Un framework conceptual sobre los principios para diseñar sistemas hombre-máquina que "aumenten" el intelecto humano.

A Personal Computer for Children of All Ages

Alan Kay (1972)

“This note speculates about the emergence of personal, portable information manipulators and their effects when used by both children and adults. Although it should be read as science fiction, current trends in miniaturization and price reduction almost guarantee that many of the notions discussed will actually happen in the near future.”

Interim Dynabooks

Xerox PARC (70s)

“We designed and built a number of Interim Dynabooks in order to have a solid test-bed for our ideas. These machines are the environment for our experimental communications medium, Smalltalk.”

Xerox Alto

Xerox PARC (1977)

Steve Jobs visits Xerox

(1979)

We Really Don't Know How to Compute!

Gerald Sussman (2011)

“I think we haven't the foggiest idea how to compute well.”
“We've been sitting here worrying about our type system, when we should be worrying about how to get flexible machines and flexible programming. We have to throw away our current ways of thinking.”

Ideas para el debate

  • La visión de estos pioneros sólo se ha adoptado parcialmente. Sólo lo más evidente, pero no las ideas más poderosas de fondo.
  • La ciencia se basa en subir a hombres de gigantes. No podemos aspirar a una verdadera ciencia en el campo del software mientras no conozcamos todas estas ideas.
  • Las nuevas generaciones de programadores crecen pensando que está todo inventado y que sólo existe una forma de entender la programación (dogma global).
  • Estamos condenados a reinventar la rueda.

Demo 2

Todo es inspeccionable, comprensible y modificable

Design Principles behind Smalltalk

Dan Ingalls (1981)

“The purpose of the Smalltalk project is to provide computer support for the creative spirit in everyone.”

Personal Mastery

“If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.”
“Any part of the system that cannot be changed or that is not sufficiently general is a likely source of impediment.”

Uniform Metaphor

“A language should be designed around a powerful metaphor that can be uniformly applied in all areas.”

En Smalltalk menos es más

Todo es un objeto.

Todo ocurre enviando mensajes a objetos.

Sintaxis en una postal

Illustration: Richard Kenneth Eng using a Creative Commons sheetsdsgn.com template.

Ideas para el debate

  • Si no puedes comprender, inspeccionar o cambiar cualquier parte de tu sistema de programación, ¿cómo va a fomentar tu espíritu creativo?.
  • Algunos lenguajes de programación son la cristalización de una visión, mientras que otros son una mera aglutinación de funcionalidades.
  • ¿Tu lenguaje de programación de qué tipo es?.

Demo 3

Herramientas moldeables

Desarrollo basado en imagen

Ideas para el debate

Demo 4

TDD con esteroides

Ideas para el debate

  • ¿Cómo afectaría a tu proceso de desarrollo TDD crear el código en un entorno vivo como el de la demo?.
  • ¿TDD + programación en vivo es el Zen del TDD?.

Demo 5

Sobre cómo leemos código

Ideas para el debate

  • Pasamos más de la mitad de nuestro tiempo leyendo código, entonces ¿por qué no es un tema del que se suela hablar en el sector?.
  • En realidad, leer código no es nuestro objetivo, sino un medio para comprender lo suficiente del software como para poder tomar decisiones. ¿Usas otros medios diferentes?.
  • El código crece exponencialmente (tasa de 1.15 anual), pero con nuestras herramientas tradicionales sólo nos permiten leer a un ritmo constante.

Comunidad

Libros

Cursos

Conclusiones

  • Pharo es la programación como debería ser.
    • Experiencia inmersiva.
    • Feedback instantáneo.
    • Todo abierto a inspección y extensión.
    • TDD como debería ser.
    • DDD como debería ser.

Recursos

¿Preguntas?

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional.