Mmm…Quélenguagehablan en Oslo?Diego FerreyraCore Technologies ManagerHuddle Group S.A.
AgendaModelos y OsloMSchemaMGrammar¿Para qué nos sirve Oslo? Conclusiones
Modelos de aplicacionesEjemplo de un modelo:HTMLYa trabajamos orientados a modelos:Configuración de un archivoXMLFrameworksdinámicosAbstracciónLenguaje común
OsloOSLO == Plataforma de modeladoSimple, 3 conceptos:Repositorio de modelosLenguaje de modeladoQuadrant, herramienta gráfica para modelado
Arquitectura de Oslo
¿Qué es M?Lenguaje funcional para definir modelos de dominiosDefinen esquemas y consultasMeta-Meta-DataLenguaje para definición de DSLsMGrammarQué NO ES:Lenguaje orientado a ObjetosTecnología de acceso a datosReemplazo de T-SQLNo representa comportamiento, representa MODELONo actualiza datos, pero asume que pueden cambiar externamente
DemoMSchema
Domain SpecificLanguages(DSL)Focalizado en un área o dominioOptimizado para ese dominioHasta ahora:Dificultad para crear la gramática del lenguajeParser para ese lenguajeMGrammarapunta resolver esto,  además de brindarherramietnasparatrabajarlo.MGrammarpermite crear DSLsM esun DSL, de hechosugramáticaestádefinida en MGrammar
DemoMGrammar
¿Para qué nos sirve Oslo?Generar lenguajes fácilmenteEn este momento, no mucho más, pero..MentityMserviceMweb
ConclusionesOslo es una plataforma de MODELADOM no es un lenguaje más de construcción de aplicacionesEsta en CTP y le falta un toque de horno.Empezar a pensar en modelos
¿Preguntas?
ReferenciasOslo Development Center: http://msdn.microsoft.com/en-us/oslo/default.aspxMicrosoft "Oslo" - May 2009 CTP: http://tinyurl.com/OsloMayCTPNHModeller: http://nhmodeller.selfip.com/

Code Camp 2009 - M Modelling Language

  • 1.
    Mmm…Quélenguagehablan en Oslo?DiegoFerreyraCore Technologies ManagerHuddle Group S.A.
  • 2.
    AgendaModelos y OsloMSchemaMGrammar¿Paraqué nos sirve Oslo? Conclusiones
  • 3.
    Modelos de aplicacionesEjemplode un modelo:HTMLYa trabajamos orientados a modelos:Configuración de un archivoXMLFrameworksdinámicosAbstracciónLenguaje común
  • 4.
    OsloOSLO == Plataformade modeladoSimple, 3 conceptos:Repositorio de modelosLenguaje de modeladoQuadrant, herramienta gráfica para modelado
  • 5.
  • 6.
    ¿Qué es M?Lenguajefuncional para definir modelos de dominiosDefinen esquemas y consultasMeta-Meta-DataLenguaje para definición de DSLsMGrammarQué NO ES:Lenguaje orientado a ObjetosTecnología de acceso a datosReemplazo de T-SQLNo representa comportamiento, representa MODELONo actualiza datos, pero asume que pueden cambiar externamente
  • 7.
  • 8.
    Domain SpecificLanguages(DSL)Focalizado enun área o dominioOptimizado para ese dominioHasta ahora:Dificultad para crear la gramática del lenguajeParser para ese lenguajeMGrammarapunta resolver esto, además de brindarherramietnasparatrabajarlo.MGrammarpermite crear DSLsM esun DSL, de hechosugramáticaestádefinida en MGrammar
  • 9.
  • 10.
    ¿Para qué nossirve Oslo?Generar lenguajes fácilmenteEn este momento, no mucho más, pero..MentityMserviceMweb
  • 11.
    ConclusionesOslo es unaplataforma de MODELADOM no es un lenguaje más de construcción de aplicacionesEsta en CTP y le falta un toque de horno.Empezar a pensar en modelos
  • 12.
  • 13.
    ReferenciasOslo Development Center:http://msdn.microsoft.com/en-us/oslo/default.aspxMicrosoft "Oslo" - May 2009 CTP: http://tinyurl.com/OsloMayCTPNHModeller: http://nhmodeller.selfip.com/

Notas del editor

  • #3 135 = 1 minutoLa agenda no apunta a que sean programadores expertos de M cuando salgan de acá. Con que hayan comprendido mas o menos qué es Oslo, a donde apunta y qué componentes tiene, me doy por satisfecho. Esto lo digo porque hay mucha gente que sigue con muchísimas dudas de qué es lo que se busca y cómo planean lograrlo, incluso yo Por lo tanto, vamos a comenzar charlando de porqué la palabra Modelo se usa tanto y cómo la planea usar Oslo. Después vamos a ver 2 demos, de las principales características del lenguaje M en las que veremos como interactúan las herramientas que hay en el CTP. Y por último, voy a contarles algunas de los usos en los que está pensando Microsoft y que quizás a nosotros se nos ocurran algunos adicionales.
  • #4 264 = 2 minutosQué es un modelo y para qué sirve? Básicamente, es la descripción de un escenario o dominio específico. Por ejemplo, los autos tienen modelos, pero si uno los quiere con aire acondicionado, negros o con levanta vidrios eléctricos, es el mismo modelo pero con pequeñas diferencias generadas en el momento que se compra. Esto no podría decirse que es básicamente lo que pasa con las aplicaciones, que actúan en runtime según un modelo especificado en la configuración, y que en base a ésta actúan de manera distinta?Laaplicación de modelos a aplicaciones no es algo nuevo. Quién tuvo alguna vez que generar un framework que leyera un XML y generar estructuras que luego procesara? O quién usa un browser para navegar en internet? El HTML es un modelo, que el browser interpreta para generar lo que se ve. De hecho, HTML es un lenguaje específico para la descripción de contenido web. Ya el uso de los viejos archivos .ini en aplicaciones visual basic, ya era un concepto de modelado. La aplicación actuaba en runtime, acorde a la instancia del modelo existente. Esto cada vez se ha ido incrementando, por ejemplo, con el uso de XAML para tecnologías como Silverlight o WPF, donde además de indicar qué controles y su apariencia se utilizan, se pueden bindear con estructuras de datos generadas en runtime.Los modelos básicamente buscan agregar un nivel mayor de abstracción a una problemática determinada. A su vez, es posible que se pueda definir un lenguaje específico para tratarlo, brindando mayor objetividad en los conceptos y un mayor entendimiento con menos palabras.
  • #5 201 = 2 minutosOslo es la futura plataforma de modelado que Microsoft está construyendo. Apunta a ser la base de muchas tecnologías, teniendo como objetivo principal lograr una ganancia de la productividad de 10x. Esto plantea hacerlo al reducir considerablemente la cantidad de código escrito al utilizar lenguajes más específicos para ciertas tareas, como así también simplificando la creación de estos lenguajes.Esto es visible, si consideramos el ejemplo del framework de UI. En este se definía un lenguaje, o sea, la estructura del XML que leia. Luego se generaban diversas instancias de ese modelo, o sea, cada formulario con sus campos a mapear. Todo esto se analizaba y era generado en runtime, sin necesidad de codificación adicional. Por otro lado, la definición del XML es mucho menos costosa que la escritura del código necesario. Esto muestra fácilmente cómo se incrementa la productividad.Oslo se basa en 3 conceptos básicos: el repositorio, donde se guardan los modelos generado, el lenguaje usado para generar estos modelos y los lenguajes necesarios para generarlos, y una herramienta gráfica que simplifica esta tarea. En esta charla no la vamos a ver, somos desarrolladores por naturaleza y eso de programar con cajitas y lineas es para los diseñadores ;-)
  • #6 176 = 1.5 minutosComo les comentaba recién, Oslo se basa en 3 componentes: repositorio, lenguaje de modelado y una herramienta gráfica. Con esto busca lograr lo necesario para que luego sea consumido por los runtimes que lo usarán.Aquí me voy a centrar en el framework de lenguaje M. El lenguaje en realidad es un conjunto de lenguajes. En primera instancia tenemos Mschema, que se encarga de definir la forma que tendrán los modelos. Nos permite definir los tipos de datos y sus relaciones, como así también los diversos repositorios en que se persistirán. Luego tenemos Mgrammar, que nos permite definir lenguajes que generarán en definitiva, modelos pausibles de ser contenidos en el repositorio. Este lenguaje tiene un parser de tipo GLR, por lo que posibilita la interpretación de lenguajes naturales. La salida que se genera a partir de un texto de entrada, es un gráfico que define cómo se albergará esa información en el repositorio.El repositorio es hoy por hoy SQL 2008. La idea es que M sea agnóstico del repostorio, pero bueno, ver para creer 
  • #8 Abrir intellipadCrear móduloCrear tipo LibroAgregar IdentityAgregar un campo nulleable (Paginas)Agregar el extent de Autores y agregar una property a LibroCrear el extent de LibrosMostrar la generación del SQL en modo T-SQL PreviewAgregar un campo enum al tipo (idioma) y una función LibrosEnCastellano()CompilarCargar el modelo a la DBMostrar los datos en la tabla y la vista
  • #9 149 = 1.5 minutosBueno, qué es un DSL? Ya lo habrán sentido nombrar más de vez. No son más que lenguajes que se usan en un dominio específico, pudiendo ser tan simples como los viejos archivos .INI que definían configuración, como un modelo de clases en VS que luego se convierte en las clases correspondientes.Alguien alguna vez armó un framework para mapear controles de UI a entidades, definiendo, por ejemplo, un XML?O alguien usó Nhibernate? O Linq2SQL o Entity Framework?Bueno, todos estos son ejemplos de DSLs. Son lenguajes específicos que definen un comportamiento en base al modelo descripto en el XML.Oslo plantea simplificar la tarea de construcción de estos lenguajes. Para esto provee una plataforma para la generación de estos DSLs, que luego podrán generar los modelos necesarios que se guardarán en el repositorio.Esto está basado en Mgrammar, parte del stack de M que habíamos visto anteriormente.
  • #10 1) Abrir Intellipad y mostrar las ventanas de Grammar, input y output2) Generar el lenguaje base que tiene sólo una sintaxis3) Generar tokens y sintaxis del lenguaje con el lenguaje mínimo4) Agregar el soporte de multiples nombres5) Agregar el soporte de nombres con espacios y Comillas6) Permitir más de 1 instancia7) Generar proyecciones8) Compilar la gramática9) aplicar la gramática a los datos10) compilar el M11) instalar en el repositorio
  • #11 80 = 0.5 minutosComo decía antes, muchos problemas para la generación de estos lenguajes estaba en la complejidad de definir un lenguaje, su parser y su interrelación con la plataforma. Oslo plantea colaborar en disminuir esta diferencia.Cómosigue esto? Recién empieza, en mi opinión. WCF, WPF, WF, EF, ASP.NET, todos tienen un DSL propio que define el modelo que usan para generar la aplicación en runtime. Todo esto es traducible a un DSL por medio de Mgrammar, definiendo un modelo con Mschema.