Hpage slides-0.2

43
Introducci´on Conociendo λPage λPage por Dentro Pr´oximosPasos λPage Fernando Benavides Departamento de Computaci´on, FCEyN,Universidad de Buenos Aires. 17 de julio de 2010 Fernando Benavides λPage

Transcript of Hpage slides-0.2

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