Curl (lenguaje de programación)

Ajustar Compartir Imprimir Citar

Curl es un lenguaje de programación reflexivo orientado a objetos para aplicaciones web interactivas cuyo objetivo es proporcionar una transición más fluida entre el formateo y la programación. Hace posible incrustar objetos complejos en documentos simples sin necesidad de cambiar entre lenguajes de programación o plataformas de desarrollo. Inicialmente, la implementación de Curl constaba solo de un intérprete, pero luego se agregó un compilador.

Curl combina marcado de texto (como en HTML), secuencias de comandos (como en JavaScript) y computación de alto rendimiento (como en Java, C# o C++) dentro de un marco unificado. Se utiliza en una variedad de aplicaciones empresariales internas, B2B y B2C.

Los programas Curl se pueden compilar en subprogramas Curl, que se visualizan mediante Curl RTE, un entorno de tiempo de ejecución con un complemento para navegadores web. Actualmente, es compatible con Microsoft Windows. Linux y macOS se eliminaron el 25 de marzo de 2019 (a partir de la versión 8.0.8). Curl es compatible con "applets separados", que es un applet implementado en la web que se ejecuta en el escritorio del usuario independientemente de la ventana del navegador, como en Silverlight 3 y Adobe AIR.

Arquitectura

El lenguaje Curl intenta abordar un problema de larga data: los diferentes bloques de construcción que componen cualquier documento web moderno a menudo requieren métodos de implementación muy diferentes: diferentes idiomas, diferentes herramientas, diferentes marcos, a menudo equipos completamente diferentes. El obstáculo final, y a menudo el más difícil, ha sido lograr que todos estos bloques se comuniquen entre sí de manera consistente. Curl intenta eludir estos problemas al proporcionar una interfaz sintáctica y semántica consistente en todos los niveles de creación de contenido web: desde HTML simple hasta programación compleja orientada a objetos.

Curl es un lenguaje de marcas como HTML, es decir, el texto sin formato se muestra como texto; al mismo tiempo, Curl incluye un lenguaje de programación orientado a objetos que admite la herencia múltiple. Las aplicaciones Curl no están obligadas a observar la separación de información, estilo y comportamiento que impusieron HTML, hojas de estilo en cascada (CSS) y JavaScript, aunque ese estilo de programación se puede usar en Curl si se desea.

Si bien el lenguaje Curl se puede usar como un reemplazo de HTML para presentar texto formateado, sus capacidades van hasta las de un lenguaje de programación de sistemas compilado, fuertemente tipado y orientado a objetos. Tanto la creación (nivel HTML) como las construcciones de programación de Curl se pueden ampliar en el código de usuario. El lenguaje está diseñado para que las aplicaciones Curl puedan compilarse en el código nativo de la máquina cliente mediante un compilador justo a tiempo y ejecutarse a alta velocidad. Los subprogramas Curl también se pueden escribir para que se ejecuten fuera de línea cuando se desconecten de la red (ocasionalmente, informática conectada). De hecho, Curl IDE es una aplicación escrita en Curl.

Sintaxis

Un subprograma Curl simple para HelloWorld podría ser

 {Curl 7.0, 8.0 applet}
{texto
color = "azul",
font-size = 16pt,
Hola World

Este código se ejecutará si el usuario tiene instalada al menos una de las versiones 7.0 u 8.0 de Curl.

Curl proporciona macros y procedimientos de texto además de procedimientos anónimos y métodos con nombre. Una alternativa usando el procedimiento de texto párrafo sería:

 {
párrafo-izquierda=0,5in,
{color de texto = "rojo", tamaño de fuente = 12pt,
Hola.
{text color = "verde", tamaño de fuente = 12pt,
Mundo.

Recientemente, este estilo de diseño ha sido adoptado por "constructores" en el lenguaje Groovy para JVM, pero también es familiar para los usuarios de CSS o Tcl/Tk. La mayoría de las funciones para aplicaciones web ahora implementadas a través de combinaciones de bibliotecas de JavaScript + HTML + CSS ya se encuentran dentro del lenguaje Curl, incluidas las funciones generalmente asociadas con Prototype + script.aculo.us, como los paneles de acordeón.

Curl establece las devoluciones de llamada de la misma manera que Groovy:

 {CommandButton ancho=100pt,
altura = 50pt,
etiqueta = {center {bold Invoca un gestor de eventos cuando se hace clic}},
control-color = "orange",
← Attach the following event handler to this CommandButton
{on Action do
{popup-message
título = "Tu mensaje",
"Este es un diálogo de mensaje de usuario".
}
}

Los comentarios Curl usan la barra vertical en varias variaciones. La más sencilla es la siguiente:

 {texto Un comentario puede estar en una línea por sí mismo,
Un comentario sobre una línea por sí misma
o puede ser al final TENCIÓN A comment on the same line as code
de una línea.

Curl como marcado ligero

Debido a que Curl proporciona tanto procedimientos de texto definidos por el usuario como hojas de estilo, Curl se puede usar fácilmente como marcado ligero específico de dominio. Una gran ventaja sobre el marcado HTML de texto sin formato es que la codificación de texto se puede configurar en UTF-8 y el texto se puede ingresar en un editor habilitado para Unicode sin ningún tipo de escape de caracteres (como JavaScript, Curl es compatible con Unicode). Un ejemplo de poesía sería:

 {poem ¦ vuestra vida envuelve todo el poema
{stanza TENIDO TENIDO primer versículo aquí en cualquier idioma
}
{stanza TENIDO ATENCIÓN Otro versículo aquí en cualquier idioma
}
}

que se puede implementar inicialmente definiendo el marcado de poema y estrofa como formatos de texto de párrafo. Stanza podría refinarse aún más para incluir un ancla de navegación oculta para la navegación de páginas utilizando Curl {destination}, que es en sí mismo un procedimiento de texto.

Se puede usar el mismo marcado para diferentes resultados, ya que se puede diseñar el texto para que sea visible en un contexto e invisible en otro. Curl también permite la inclusión de archivos de nivel superior para que un texto de origen en el marcado se pueda incluir en diferentes archivos principales. En educación, por ejemplo, se podría crear un archivo fuente de preguntas de prueba e incluirlo tanto en la versión del texto del estudiante como en la del profesor.