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
HaskellScript y sus Aplicaciones
AutoresSantiago 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:– 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.
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
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
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
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.
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.
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
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)
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 );};
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.
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
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
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