Upload
fernando-benavides
View
222
Download
1
Embed Size (px)
Citation preview
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
λPage
Fernando Benavides
Departamento de Computacion, FCEyN,Universidad de Buenos Aires.
17 de julio de 2010
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
El Orador
I Fernando Benavides
El camino recorrido
I Alumno de Computacion desde 2001
I Programador desde hace mas de 10 anos
I Programador Funcional desde hace 2 anos
La idea
I Desarrollar una herramienta para los programadoresfuncionales como las que existen en el paradigma deorientacion a objetos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
El Orador
I Fernando Benavides
El camino recorrido
I Alumno de Computacion desde 2001
I Programador desde hace mas de 10 anos
I Programador Funcional desde hace 2 anos
La idea
I Desarrollar una herramienta para los programadoresfuncionales como las que existen en el paradigma deorientacion a objetos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
El Orador
I Fernando Benavides
El camino recorrido
I Alumno de Computacion desde 2001
I Programador desde hace mas de 10 anos
I Programador Funcional desde hace 2 anos
La idea
I Desarrollar una herramienta para los programadoresfuncionales como las que existen en el paradigma deorientacion a objetos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando en Haskell
¿Como trabaja un desarrolladorHaskell?
I Crea o modifica modulos consu editor de texto favorito
I Los compila utilizando GHC
I Genera paquetes con Cabal
I Para realizar pruebas,recurre a GHCi
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando en Haskell
¿Como trabaja un desarrolladorHaskell?
I Crea o modifica modulos consu editor de texto favorito
I Los compila utilizando GHC
I Genera paquetes con Cabal
I Para realizar pruebas,recurre a GHCi
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando en Haskell
¿Como trabaja un desarrolladorHaskell?
I Crea o modifica modulos consu editor de texto favorito
I Los compila utilizando GHC
I Genera paquetes con Cabal
I Para realizar pruebas,recurre a GHCi
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando en Haskell
¿Como trabaja un desarrolladorHaskell?
I Crea o modifica modulos consu editor de texto favorito
I Los compila utilizando GHC
I Genera paquetes con Cabal
I Para realizar pruebas,recurre a GHCi
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando en Haskell
¿Como trabaja un desarrolladorHaskell?
I Crea o modifica modulos consu editor de texto favorito
I Los compila utilizando GHC
I Genera paquetes con Cabal
I Para realizar pruebas,recurre a GHCi
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan enJava, .NET o Smalltalk cuentancon una IDE que provee
I Autocomplecion de codigo
I Compilacion automatica
I Herramientas de refactoring
I Debugger integrado
I Herramientas para“micro-testing”
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan enJava, .NET o Smalltalk cuentancon una IDE que provee
I Autocomplecion de codigo
I Compilacion automatica
I Herramientas de refactoring
I Debugger integrado
I Herramientas para“micro-testing”
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan enJava, .NET o Smalltalk cuentancon una IDE que provee
I Autocomplecion de codigo
I Compilacion automatica
I Herramientas de refactoring
I Debugger integrado
I Herramientas para“micro-testing”
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan enJava, .NET o Smalltalk cuentancon una IDE que provee
I Autocomplecion de codigo
I Compilacion automatica
I Herramientas de refactoring
I Debugger integrado
I Herramientas para“micro-testing”
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan enJava, .NET o Smalltalk cuentancon una IDE que provee
I Autocomplecion de codigo
I Compilacion automatica
I Herramientas de refactoring
I Debugger integrado
I Herramientas para“micro-testing”
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
Trabajando con Lenguajes Orientados a Objetos
En cambio quienes programan enJava, .NET o Smalltalk cuentancon una IDE que provee
I Autocomplecion de codigo
I Compilacion automatica
I Herramientas de refactoring
I Debugger integrado
I Herramientas para“micro-testing”
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
PresentacionMotivacion
“Micro-testing”
El Workspace de Smalltalkpermite:
I introducir codigo paraejecutarlo, inspeccionarlo yanalizar los resultadosobtenidos
I administrar varias paginasde texto
I crear objetos y utilizarlos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
Como el Workspace de Smalltalk . . .. . . pero para Haskell
Conociendo λPage
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
Como el Workspace de Smalltalk . . .. . . pero para Haskell
λPage es similar al Workspace de Smalltalk pues permite alusuario
I Evaluar expresiones
I Detectar excepciones
I Administrar paginas de texto libre
I Intercalar expresiones y definiciones
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
Como el Workspace de Smalltalk . . .. . . pero para Haskell
Pero, a su vez, por estar hecho para Haskell, toma en cuenta suscaracterısticas:
I Lazy evaluation
I Acciones con efectos colaterales
I Administracion de modulos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
Como el Workspace de Smalltalk . . .. . . pero para Haskell
Pero, a su vez, por estar hecho para Haskell, toma en cuenta suscaracterısticas:
I Lazy evaluation
I Acciones con efectos colaterales
I Administracion de modulos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
Como el Workspace de Smalltalk . . .. . . pero para Haskell
Pero, a su vez, por estar hecho para Haskell, toma en cuenta suscaracterısticas:
I Lazy evaluation
I Acciones con efectos colaterales
I Administracion de modulos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
λPage por Dentro
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
λPage esta desarrollado en Haskell
En gran parte esta desarrollado utilizando λPage
Se conecta con GHC a traves de su API
Su interfaz grafica fue creada usando wxHaskell
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
λPage esta desarrollado en Haskell
En gran parte esta desarrollado utilizando λPage
Se conecta con GHC a traves de su API
Su interfaz grafica fue creada usando wxHaskell
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
λPage esta desarrollado en Haskell
En gran parte esta desarrollado utilizando λPage
Se conecta con GHC a traves de su API
Su interfaz grafica fue creada usando wxHaskell
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
λPage esta desarrollado en Haskell
En gran parte esta desarrollado utilizando λPage
Se conecta con GHC a traves de su API
Su interfaz grafica fue creada usando wxHaskell
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
λPage esta desarrollado en Haskell
En gran parte esta desarrollado utilizando λPage
Se conecta con GHC a traves de su API
Su interfaz grafica fue creada usando wxHaskell
Su alto grado de paralelismo se logra utilizando eprocess
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Arquitectura
Principales Requerimientos:
I Conexion con GHC
I Paralelismo
I Errores Controlados
I Presentacion de Resultados
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Ejemplo de Interaccion
Veremos como interactuan estos componentes para evaluar lasiguiente expresion:
r eadF i l e ” hpage . c a b a l ” >>=return . length . head . l i n e s
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Ejemplo de Interaccion
Procesos Involucrados:
I UI Manager operando
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Ejemplo de Interaccion
Procesos Involucrados:
I UI Manager esperando
I HPage Server operando
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Ejemplo de Interaccion
Procesos Involucrados:
I UI Manager esperando
I HPage Server esperando
I GHC Server operando
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Ejemplo de Interaccion
Procesos Involucrados:
I UI Manager operando
I IO Server operando
I Value Filler esperando
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Ejemplo de Interaccion
Procesos Involucrados:
I UI Manager operando
I Value Filler esperando
I Element Filler operando
I Runaway Killer operando
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
DisenoArquitectura
Ejemplo de Interaccion
Procesos Involucrados:
I UI Manager operando
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
Proximos Pasos
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
¿Que falta?I Nuevas visualizaciones
I Mas que un cuadro de texto
I Mas tipos especialesI TuplasI EitherI Maybe
I ComposicionI Listas de listasI Acciones que generen listasI Listas de acciones
¿Que se puede hacer?
I Clase Presentable
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
¿Que falta?I Nuevas visualizaciones
I Mas que un cuadro de texto
I Mas tipos especialesI TuplasI EitherI Maybe
I ComposicionI Listas de listasI Acciones que generen listasI Listas de acciones
¿Que se puede hacer?
I Clase Presentable
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
¿Que falta?I Nuevas visualizaciones
I Mas que un cuadro de texto
I Mas tipos especialesI TuplasI EitherI Maybe
I ComposicionI Listas de listasI Acciones que generen listasI Listas de acciones
¿Que se puede hacer?
I Clase Presentable
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
¿Que falta?I Nuevas visualizaciones
I Mas que un cuadro de texto
I Mas tipos especialesI TuplasI EitherI Maybe
I ComposicionI Listas de listasI Acciones que generen listasI Listas de acciones
¿Que se puede hacer?
I Clase Presentable
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
Con λPage hemos acercado al desarrollador Haskell solo una demuchas herramientas:
I Soporte para TDD
I Refactoring
I Analisis de Terminacion
I Debugging
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
Con λPage hemos acercado aldesarrollador Haskell solo una demuchas herramientas:
I Soporte para TDD
I Refactoring
I Analisis de Terminacion
I Debugging
Fernando Benavides λPage
IntroduccionConociendo λPageλPage por Dentro
Proximos Pasos
LimitacionesTrabajo a FuturoAgradecimientos / Preguntas
¡Gracias a todos!
I Sitio Web de λPage:I http://hpage.haskell.com
I λPage en GithubI http://github.com/elbrujohalcon/hPage
I Fernando Benavides en la InternetI http://profiles.google.com/greenmellon
Fernando Benavides λPage