MPL 2: “Compilando” manualmente el Hola Mundo a HTML5 + JS6

Tras meditar cual debería ser el siguiente paso tras plantear mi particular “Hola Mundo” en MPL, croe que es un ejercicio interesante hacer el ejercicio de “Compilar” manualmente el código a su equivalente en HTML5 y JS6. De este modo podré ir iterando el concepto.

Nuestro “Hola mundo” en MPL

Recordemos el código, en su versión en Inglés, del código (HelloWorld.mpl), una de las primeras ideas que ronda mi cabeza es que, aunque el código internamente esté traducido, los nombres de fichero deberían mantenerse en inglés. como decisión de diseño, hasta ver si es viable una localización total.

Pero veamos el contenido de nuestro fichero “HelloWorld.mpl”:

/* 
MPL - Concept Exploration
21 03 14 Raúl Carrillo aka metsuke
  
A basic document with a single button
*/

const headerLevel = 1; // "H1"

var messages[] = with (mplTextCollection) {
  .addMultilangString('Hola Mundo');
  .addMultilangString('Titulo Principal');
  .addMultilangString('Prueba de concepto');
}

var action = with(mplAction) { 
  .addAlert(message[0]);
}



var document = with (mplDocument) {

  .addTitle(headerLevel,messages[1]);
  
  .addParagraph (messages[2]);

  .addButton(messages[0], action);
  .render();
}

Este escenario me hace plantearme una cuestión, la de la localización del propio código ¿deben existir versiones “finales” del código compilado en cada idioma? No parece que esa feature que definía en la “lista a los reyes” sea, a día de hoy una cuestión que supere el filtro del coste-beneficio, por tanto, en aras de simplificar esta parte del análisis, asumiré que en ambos extremos solo existe la versión en inglés, y que este es el idioma del código MPL, con independencia de que , de forma nativa, MPL trabaje con cadenas multiidioma, ahí si, de forma integral.

¿Cual debe ser la implementación destino?

En el momento de escribir estas líneas, en 2021, parece que a efectos web el “formato” más habitual es HTML5 y la versión 6 de Javascript, de modo que para la primera implementación teórica, croe que es un método excelente.

Me planteo, dado que lo correcto no es crear una máquina virtual, sino que el código genérico se transforme en su equivalente de cada plataforma, si el resultado de la primera compilación debe ser directamente código puro en destino, o si debo crear una librería que implemente las diferentes funciones a medida de cada sistema.

Parece lógico pensar que una compilación “ofuscada”, esto es, cuyo resultado no deje rastro, sobre todo pensando en lenguajes y entornos antiguos, entiendo que lo correcto es que al “compilar”, el fuente final esté plenamente ajustado a la máquina, y para ello creo que no debe existir código equivalente al mpl en el resultado final.

Sin embargo, también parece necesario que la implementación para cada sistema tenga opcionalmente a disposición una librería (la podemos bautizar como “mpl objects” que nos permita generar una capa de abstracción itnernedia entre mpl transformado y el código nativo y que gestione cuestiones como elegir que libreria va a ejecutar que acción en base a cuestiones como rendimiento específico o necesidades en base a la capacidad de la máquina, imposibles de gestionar desde un código mpl, absolutamente genérico.

Por tanto, la implementación estructural deberia ser del estilo:

  • Capa 0: Código MPL
  • Capa 1: MPL Coder específico del lenguaje destino, que se encarga de escribir código nativo de la plataforma elegida, usando MPL Objects como base.
  • Capa 2: MPL Objects, la liberaria de objetos que gestiona la parte de complejidad y rendimiento específica de la plataforma y que se encarga de adaptar la lógica genérica a la especificada de la plataforma de forma directa.
  • Capa 3: MPL Object Code, es el código final, una versión no reversible y, desde la perspectiva de MPL considerada compilada (aunque sea código fuente a su vez), estará adaptada en términos de rendimiento , lenguaje, recursos disponles. Excepcionalmente permiten correcciones que deberian escalarse al MPL Coder correspondiente con posterioridad, pero podrían funcionar de forma “independiente”.

Para nuestro ejemplo de prueba, el MPL Coder seré yo personalmente y, dada la sencillez del código final, el MPL Objects no será necesario.

<!--	
MPL - Concept Exploration
21 04 9 MPL Coded by Raúl Carrillo aka metsuke
 
A basic document with a single button
-->
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="description" content"Main Title">
    <title>Main Title</title>
  </head>
  <body>
    <h1>Main Title</h1>
    <p>Concept Exploration</p>
    <button onclick="alert('Hello World');">Hello World</button>
  </body>
</html>

Usando un proceso parecido, podemos “compilarlo” cualquier cosa siempre que nos tomemos el tiempo de imaplementar como mínimo el MPL Coder correspondiente.

En el próximo capítulo evaluaremos el tema de la localización tanto del código como de las cadenas de texto.

¡Compártelo!

Ayudame a difundir este contenido a todo aquel que pueda sacarle partido, difundelo en redes, cuéntaselo a tus amigos, coméntalo en la cola del supermercado, además de aportar, ¡seguro que conoces a gente interesante y acabas uniéndose al bando rebelde!

Sígueme en Redes

Acelera mi progreso de la materia que te interesa.

El calendario y ritmo de publicaciones actualmente responde a mis necesidades de estudio y desarrollo de proyectos personales, si quieres invertir en que acelere alguna materia concreta, te ofrezco una posibilidad:

Puedes donar en mi paypal (paypal at metsuke.com), indicando la materia, por cada 25 euros donados, priorizaré un capítulo de la materia que me indiques que ya tenga escrito para que salga el proximo dia viable y disponible de lunes a viernes (en orden de llegada y a un post diario).

En caso de que el capítulo aún no exista, centraré mi atención en escribirlos y publicarlos con prioridad, pero no puedo prometer inmediatez.

De nuevo priorizaré las donaciones por orden de llegada pero cuando coincidan varias, iré rotando cada dia una para evitar la monopolización de mi foco de tareas.

Me reservo el fin de semana para priorizar lo que considere pertinente en el caso de que haya cola de entrega. Si te gusta el proyecto, ¡es un buen modo de apoyarme!

¿Te interesan mis servicios como consultor?

En ese caso, pudedes contactarme en mi correo r.carrillo@metsuke.com y cuéntame que necesitas, si lo que leo me gusta, te pongo en contacto con el comercial de mi empresa de consultoría.

Si quieres que sea yo expresamente quien te atienda, puedes indicármelo y llegamos a un acuerdo.

Advierto que esta última posibilidad te saldrá bastante más cara que hablar con mi equipo, pero si es lo que deseas, a tu disposición.

Un Abrazo.

Sobre las traducciones

Por el momento me he visto obligado a detener la traducción del contenido, apenas doy abasto a escribirlo (que es mi objetivo, ya que son mis apuntes de estudio), por lo que no parece tener sentido mantener activas unas traducciones que no doy abasto a crear.

En caso de que más adelante el flujo de caja me lo permita, es mi intención contratar servicios de traducción y editores que realicen la tarea, pero por ahora lo dejo desactivado.

Quizá te interese leer más sobre MPL

Dejar una Respuesta

XHTML: Usted puede usar las siguientes etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>