14
HaskellScript y sus Aplicaciones Autores Santiago Ochoa Ceresuela Miguel García Puyol

HaskellScript y sus Aplicaciones

  • Upload
    kadeem

  • View
    50

  • Download
    0

Embed Size (px)

DESCRIPTION

HaskellScript y sus Aplicaciones. Autores Santiago Ochoa Ceresuela Miguel García Puyol. Diseño basado en Componentes. Evolución natural de la orientación a objetos. Idea similar a la empleada en los componentes Hardware Plataformas de componentes: CORBA, COM, J2EE, .NET Objetivos: - PowerPoint PPT Presentation

Citation preview

Page 1: HaskellScript y sus Aplicaciones

HaskellScript y sus Aplicaciones

AutoresSantiago Ochoa Ceresuela

Miguel García Puyol

Page 2: HaskellScript y sus Aplicaciones

Diseño basado en Componentes

Evolución natural de la orientación a objetos. Idea similar a la empleada en los componentes Hardware Plataformas de componentes: CORBA, COM, J2EE, .NET

Objetivos:– Desarrollo mediante composición, no implementación– Reutilización de componentes hechos por terceros– Mercado común de componentes (Commercial Off-The-Shelf)– Integrados en un determinado modelo/plataforma.

No tienen sentido de forma aislada.– Implementan una serie de interfaces que

Indican la funcionalidad que proporcionan y también la que precisan. Permiten la reemplazabilidad.

Page 3: HaskellScript y sus Aplicaciones

Nociones de ActiveX/COM

Un objeto ActiveX es aquel que cumple la definición del Modelo de Objetos Componentes (COM) de Microsoft.

Características objeto COM:– Puede estar escrito en cualquier lenguaje (código binario)– Encapsulado en un archivo ejecutable o biblioteca de vínculo

dinámico (DLL)– Proporciona una interfaz para que los otros objetos se

comuniquen con él.– Dos tipos de datos:

Datos de Presentación Datos Internos

– Tiene funciones para manipular esos datos

Page 4: HaskellScript y sus Aplicaciones

Introducción HaskellScript

Es el nombre de un conjunto de bibliotecas y software que permiten la integración de Haskell dentro del marco de trabajo COM/ActiveX

HaskellScript es compatible con Microsoft Internet Explorer 4, Word, Excel.

Presenta algunas incompatibilidades con las últimas versiones

Page 5: HaskellScript y sus Aplicaciones

HaskellScript = Haskell + COM

Se trata de poder construir sistemas híbridos aprovechando la naturaleza funcional de Haskell

Dos posibilidades: Utilizar componentes COM (y sus elementos) dentro de

Haskell Llamar a funciones Haskell desde otro componente

(otros lenguajes de programación que soporten COM) a través de su interfaz

Page 6: HaskellScript y sus Aplicaciones

Introducción a HaskellScript

Está formado por:– HaskellAgent: es una biblioteca escrita en Haskell

empleada para crear animaciones usando la tecnología de Microsoft Agent. Ej: el ayudante de Microsoft Office.

– HaskellObject: es una biblioteca para definir componentes automatizados (Automation components) en Haskell. Estos componentes se comportan exactamente igual que los componentes COM y pueden ser directamente utilizados desde Java o Visual Basic.

Page 7: HaskellScript y sus Aplicaciones

Introducción a HaskellScript

HaskellDirect: Es un compilador completo de IDL (Interface Definition Language) para Haskell. Los programadores pueden usarlo para generar automáticamente interfaces Haskell para los componentes COM.

HaskellDB: Biblioteca Haskell que permite realizar peticiones sobre bases de datos relacionales.

Page 8: HaskellScript y sus Aplicaciones

Importando/Exportanto Haskell

HaskellObject HaskellDirect Interfaces Script Server Conjunto mínimo

de interfaces que permiten usar Haskell como lenguaje de Script en aplicaciones como IExplorer, Windows 95/NT

Page 9: HaskellScript y sus Aplicaciones

Interfaces Script Server

Todo Script Server es un componente COM En general, un interfaz Script Server es un interfaz

independiente del lenguaje que permite a cualquier lenguaje de programación ser programado o invocado desde otra aplicación

En HaskellScript, hay un conjunto de interfaces implementados sobre Hugs para interactuar con el motor de ActiveX.

Representan la mínima funcionalidad necesaria para programar en otro lenguaje desde una aplicación externa (Ej: Utilizar funciones Haskell en lenguajes como Visual Basic o Java)

Page 10: HaskellScript y sus Aplicaciones

IDL: Interface Definition Language

interface IScriptServer : IDispatch { HRESULT LoadScript ([in] VARIANT* source,[out,retval] IScript** script) HRESULT AddHostItem ([in] BSTR itemName, [in] IDispatch* item ); HRESULT AddSearchDir ([in] BSTR dir ); HRESULT ProgID ([out,retval] BSTR* progID ); };

interface IScript : IDispatch {HRESULT Start (void );

HRESULT AddHostItem([in] BSTR itemName, [in] IDispatch* item ); HRESULT GetScriptItem([in] BSTR name,[out,retval] IScriptItem**

item)HRESULT Expr ([in] BSTR expr, [out,retval] IScriptItem** item ); };

interface IScriptItem : IDispatch { HRESULT Eval ([in] int cArgs, [in,size_is(cArgs)] VARIANT* args,

[out,retval] VARIANT* result );};

Page 11: HaskellScript y sus Aplicaciones

HaskellObject: ObjectScript

Consiste en crear un componente Haskell, que a su vez será automatizado. Para ello se necesitan 2 módulos:

– Un proxy, que una Haskell con el exterior (podría utilizarse HaskellDirect para generarlo a partir de la definición IDL)

– El módulo con la implementación del componente

Ya que Visual Basic y Java usan la automatización como su interfaz COM básico, es fácil integrar Haskell con estos lenguajes.

Page 12: HaskellScript y sus Aplicaciones

HaskellDirect

HaskellDirect, como hemos dicho, es un compilador de IDL para Haskell, que proporciona una ayuda al programador Haskell que quiere interactuar y reusar código externo.

Crear un interfaz para Haskell implica la conversión de los tipos básicos y el manejo de memoria entre el mundo Haskell y el exterior

HaskellDirect se encarga de llevar a cabo esta traducción

Sin embargo, actualmente, su uso es bastante limitado

Page 13: HaskellScript y sus Aplicaciones

Biblioteca HTMLScript

Esta biblioteca contiene un conjunto de funciones que permiten “trasladar” el control de elementos HTML a Haskell. Una vez allí, se podrán modificar de igual forma que se podría hacer con Javascript.

Veamos algunos ejemplos sencillos

Page 14: HaskellScript y sus Aplicaciones

Referencias

http://www.haskell.org/haskellscript

Client-side Web Scripting with HaskellScript Erik Meijer, Daan Leijen and James Hook.http://www.cs.uu.nl/people/daan/papers/padl.ps

Scripting COM components in Haskell Simon L. Peyton-Jones, Erik Meijer and Daan Leijenhttp://www.cs.uu.nl/people/daan/papers/com.ps

Diseño ArquitectónicoCarlos Canalhttp://www.lcc.uma.es/~canal/isd/ISD_2.pdf