1 / 14

HaskellScript y sus Aplicaciones

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:

kadeem
Download Presentation

HaskellScript y sus Aplicaciones

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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.

  3. 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

  4. 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

  5. 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

  6. 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.

  7. 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.

  8. 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

  9. 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)

  10. 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 );};

  11. 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.

  12. 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

  13. Biblioteca HTMLScript • Esta biblioteca contiene un conjunto de funciones que permiten “trasladar” el control de elementosHTML a Haskell. Una vez allí, se podrán modificar de igual forma que se podría hacer con Javascript. • Veamos algunos ejemplos sencillos

  14. 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 Leijen http://www.cs.uu.nl/people/daan/papers/com.ps • Diseño Arquitectónico Carlos Canal http://www.lcc.uma.es/~canal/isd/ISD_2.pdf

More Related