• Save
EclipseFP
Upcoming SlideShare
Loading in...5
×
 

EclipseFP

on

  • 524 views

Presentación sobre EclipseFP dada en el Taller de Programación Funcional celebrado en A Coruña (España) en septiembre de 2011

Presentación sobre EclipseFP dada en el Taller de Programación Funcional celebrado en A Coruña (España) en septiembre de 2011

Statistics

Views

Total Views
524
Views on SlideShare
518
Embed Views
6

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 6

http://www.linkedin.com 4
https://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

EclipseFP EclipseFP Presentation Transcript

  • Introducci´n o Demo Arquitectura UsoMejorar el Plug-in de Haskell para Eclipse Alejandro Serrano TPF 2011, A Coru˜a n Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Arquitectura UsoContenido 1 Introducci´n o 2 Demo 3 Arquitectura Visi´n general o Scion y Scion Browser Otros builders Futuro 4 Uso Para programar Para extender Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Arquitectura Uso¿Qu´ es EclipseFP? e EclipseFP es un conjunto de plug-ins para el entorno de desarrollo Eclipse centrados en el lenguaje de programaci´n o Haskell y su ecosistema. Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Arquitectura Uso¿Qu´ es Eclipse? e Eclipse es un entorno de desarrollo integrado creado por IBM (y posteriormente liberado) que soporta su extensi´n a trav´s de o e plug-ins. Actualmente existen plug-ins para decenas de lenguajes. Los de Java y C/C++ se encuentran entre los mejores de su categor´ ıa. La plataforma de Eclipse puede usarse independientemente para otras aplicaciones. Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Arquitectura Uso¿Por qu´ Eclipse? e Multiplataforma Integraci´n en un mismo entorno de diversos lenguajes o Permite no reinventar la rueda Soporte para control de versiones: EGit, Subclipse Sistemas de control de tareas: Mylyn Hace sencillas las tareas t´ ıpicas de un entorno de desarrollo Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Arquitectura UsoHistoria del proyecto 2005: Leif Frenzel comienza el proyecto EclipseFP Con unas miras m´s altas que las actuales a 2008: Thomas Schilling empieza a trabajar en la librer´ Scion ıa Wrapper sobre la API de GHC orientada a IDEs 2009: Thomas ten Cate integra Scion en EclipseFP durante el Google Summer of Code 2010: JP Moresmau se convierte en mantenedor A˜ade cosas como la integraci´n del depurador n o 2011: Trabajo en EclipseFP durante mi Summer of Code Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Arquitectura Uso DemoAlejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoVisi´n general o Puede verse como un ejemplo de integraci´n entre Haskell y Java o Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoScion Encargada de compilar y parsear el c´digo fuente Haskell o No exclusiva de EclipseFP, tambi´n usada en Emacs e Trabaja directamente con la API de GHC Esa API es bastante variable, por lo que requiere ajustes con cada nueva versi´n de GHC o Hay montones de #ifdef en el c´digo o Esta API tiene algunos problemas serios Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoScion Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoScion Muchas veces su trabajo se solapa con el de Cabal Preprocesamiento de archivos Definici´n y ejecuci´n de tests o o Otra opci´n ser´ llamar a Cabal y parsear la salida o ıa Es la forma de trabajar de Leksah Dificulta encontrar errores en c´digo no guardado o Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoScion Browser Provee la informaci´n para el navegador de paquetes o Guarda una base de datos con la informaci´n de los m´dulos o o ¿C´mo se obtiene esa informaci´n? o o Usa el mismo formato de importaci´n que Hoogle o El servidor de Hackage genera estos archivos autom´ticamente para cada paquete que se sube a Si no, se pueden generar con cabal haddock --hoogle Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoScion Browser En cada inicio de EclipseFP 1 Se carga la base de datos del Browser 2 Se genera una lista de los paquetes instalados en el sistema 3 Por cada paquete que no estuviese en la base de datos Se intenta obtener la documentaci´n de Hackage o Si no funciona, se pide de la documentaci´n de GHC o Si no funciona, se pide el c´digo fuente del paquete y se o ejecuta cabal haddock --hoogle sobre ´l e Se parsea el archivo de documentaci´no 4 Se comprueba que la base de datos de Hoogle est´ al d´ a ıa Si no, se corre hoogle data Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoScion Browser: la base de datos Para guardar la base de datos, se usa cereal Versi´n estricta de binary o Al principio hubo problemas por el excesivo gasto de memoria Usamos haskell-src-exts para guardar la informaci´n o Muchas veces la informaci´n estaba repetida o Soluci´n: serializaci´n hecha a mano o o No guardamos los campos innecesarios Al deserializar, se mantiene una cach´ (¡impura!) para no e repetir elementos Se fuerza la evaluaci´n completa con deepseq o Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoComunicaci´n: JSON por consola o La comunicaci´n Haskell-Java se hace con JSON o JavaScript Object Notation Ejemplo JSON { "commmand": "query-hoogle", "query": "fmap"} Est´ndar de facto en aplicaciones web a Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoComunicaci´n: JSON por consola o Usamos la librer´ Aeson ıa R´pida (estad´ a ısticas en Hackage) Usa un estilo con Applicative Conversi´n de/hacia JSON mediante las clases FromJSON y o ToJSON Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoAeson: Volcado Suponiendo que tenemos activada la extensi´n o OverloadedStrings instance ToJSON PackageIdentifier where toJSON (PackageIdentifier (PackageName n) v) = object [ "name" .= n, "version" .= v ] A cadena aCadena :: PackageIdentifier -> ByteString aCadena pid = encode $ toJSON pid Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoAeson: Parseo instance FromJSON PackageIdentifier where parseJSON (Object v) = PackageIdentifier <$> (PackageName <$> v .: "name") <*> v .: "version" parseJSON _ = mzero De cadena deCadena :: ByteString -> Either String PackageIdentifier deCadena s = case AttoParsec.parse json s of AttoParsec.Fail _ _ e -> Left "Cadena JSON no valida" AttoParsec.Done _ value -> case Data.Aeson.Types.parse parseJSON value of Error e -> Left "Estructura JSON no valida" Success pid -> Right pid Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoBuild integrado El plug-in de Eclipse trae consigo una copia del c´digo de Scion y o Scion Browser Este c´digo se compila autom´ticamente cuando se inicia o a EclipseFP por primera vez No se instala en los directorios del usuario, sino que se guarda en un directorio privado de Eclipse Muestra una forma de integrar Haskell sin que el usuario lo note M´s all´ de lo que tarda en cargar la primera vez a a Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoBuilders por consola Simplemente se inicia el proceso correspondiente y se va procesando la salida La mayor parte de las herramientas usan un formato de salida archivo:linea:columna:mensaje Procesamiento posterior para saber el tipo de error C´digo muy similar en todos los casos o Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoProblemas con la API de GHC GHC tiene opciones est´ticas a Por ejemplo, si se genera informaci´n para profiling o no o Estas opciones s´lo pueden habilitarse antes de la primera o comunicaci´n con la API o Hace que se tenga que reiniciar Scion si cambian ciertas configuraciones Impide compartir Scion entre diversos proyectos Dificulta generar versiones divergentes de un mismo proyecto para que se use con ciertas herramientas Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoEl nuevo Scion Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Visi´n general o Demo Scion y Scion Browser Arquitectura Otros builders Uso FuturoEl nuevo Scion Integraci´n de m´s herramientas en la librer´ o a ıa Browser y depuraci´n con GHCi se convierten en o funcionalidad del propio Scion Acceso unificado a la funcionalidad Nuevas librer´ para comunicaci´n y paralelismo ıas o Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Para programar Arquitectura Para extender UsoC´mo obtenerlo o Sitio web del proyecto http://eclipsefp.github.com Gu´ de instalaci´n ıa o Preguntas y errores frecuentes Gu´ del usuario empaquetada con el plug-in ıa Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Para programar Arquitectura Para extender UsoVentajas de Eclipse Creaci´n sencilla de asistentes gr´ficos o a Como el editor de Cabal o las opciones de UUAGC Integraci´n de herramientas de consola como builders o Permite crear editores que contengan Haskell como sublenguaje Usado en los editores de Alex y Happy Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse
  • Introducci´n o Demo Para programar Arquitectura Para extender UsoEl futuro (ideal) Los tests de Cabal se estabilizan Mucho m´s refactoring a Integraci´n de m´s herramientas del mundo Haskell o a Plataforma para nuevos proyectos Uso acad´mico y profesional e Alejandro Serrano Mejorar el Plug-in de Haskell para Eclipse