stringtranslate.com

Rojo (lenguaje de programación)

Red es un lenguaje de programación diseñado para superar las limitaciones del lenguaje de programación Rebol . [3] Red fue presentado en 2011 por Nenad Rakočević, [4] y es un lenguaje de programación tanto imperativo como funcional . Su sintaxis y uso general se superponen con los del lenguaje interpretado Rebol. [5]

Las opciones de implementación de Red tienen como objetivo crear un lenguaje de programación de pila completa : [4] [6] Red se puede utilizar para programación de nivel extremadamente alto ( DSL y GUI ) así como para programación de nivel bajo ( sistemas operativos y controladores de dispositivos ). La clave del enfoque es que el lenguaje tiene dos partes: Red/System y Red . [7]

Red busca permanecer independiente de cualquier otra cadena de herramientas ; realiza su propia generación de código. [3] Por lo tanto, es posible compilar de forma cruzada [6] programas Red desde cualquier plataforma que admita a cualquier otra, mediante un interruptor de línea de comandos. Tanto Red como Red/System se distribuyen como software de código abierto bajo la licencia BSD modificada . La biblioteca de tiempo de ejecución se distribuye bajo la licencia Boost Software License , más permisiva .

A partir de la versión 0.6.4, Red incluye un recolector de basura "Simple GC". [9]

Esquema de arquitectura del lenguaje Red

Introducción

Red fue presentado en los Países Bajos en febrero de 2011 en la conferencia Rebol & Boron [10] por su autor Nenad Rakočević. En septiembre de 2011, el lenguaje de programación Red fue presentado a una audiencia más amplia durante el Día de la Libertad del Software 2011. [11] [12] Rakočević es un desarrollador de Rebol desde hace mucho tiempo conocido como el creador del servidor HTTP Cheyenne . [13]

Características

La sintaxis y semántica de Red son muy similares a las de Rebol . [4] [14] Al igual que Rebol, admite firmemente la metaprogramación y los lenguajes específicos del dominio ( DSL ) y, por lo tanto, es una herramienta muy eficiente para la dialectización (creación de DSL integrados). Red incluye un dialecto llamado Red/System, un lenguaje de nivel C que proporciona facilidades de programación del sistema. [7] Red es fácil de integrar con otras herramientas y lenguajes como una DLL (libRed) y muy liviano (alrededor de 1 MB). También puede compilarse de forma cruzada en varias plataformas (consulte la sección Compilación cruzada a continuación) y crear paquetes para plataformas que los requieran (por ejemplo, .APK en Android). [7] Red también incluye un sistema de GUI multiplataforma completamente reactivo basado en un motor de flujo de datos reactivo subyacente, un dialecto de dibujo 2D comparable a SVG, soporte de macros en tiempo de compilación y tiempo de ejecución y más de 40 tipos de datos estándar.

Objetivos

La siguiente es la lista de los objetivos de Red tal como se presentaron en el Día de la Libertad del Software de 2011: [11] [12]

Aplicaciones comerciales

Actualmente se desarrollan en Red las siguientes aplicaciones comerciales:

Desarrollo

Está previsto que el desarrollo de Red se realice en dos fases:

  1. Fase inicial: compiladores Red y Red/System escritos en Rebol 2
  2. Fase de arranque : compiladores Red y Red/System complementados con un compilador JIT de Red, todo escrito en Red

Compilación cruzada

Actualmente, Red admite los siguientes objetivos de compilación cruzada: [4]

(Nota: Actualmente, las aplicaciones Red son de 32 bits, pero está previsto cambiar a 64 bits en el futuro. [4] )

¡Hola Mundo!

El programa "¡Hola, mundo!" en rojo:

Rojo  [ Título:  "Script simple de Hola Mundo" ] imprimir  "¡Hola, Mundo!"

Ejemplo factorial

IMPORTANTE: Estos son ejemplos de sintaxis. Hasta que Red tenga soporte para 64 bits , el ejemplo de entero desbordará un entero de 32 bits muy rápidamente. Cambiarlo a `float!` será más útil, pero estos son solo para mostrar la sintaxis del lenguaje.

El siguiente es un ejemplo factorial en rojo:

Rojo  [ Título:  "Un script factorial" ]  ; Nota: El título es opcional.factorial:  func  [ x  [ entero! ]  ; Dar el tipo de un argumento en Rojo es opcional ][ o  x  =  0  [ 1 ][ x  *  factorial  x  -  1 ] ]

El siguiente es el mismo ejemplo factorial en Red/System (en este caso muy simple, el código fuente es muy similar a la versión de Red):

Rojo /Sistema  [ Título:  "Un script factorial" ]factorial:  func  [ x  [ entero! ]  ; Esto es obligatorio en Red/System return:  [ entero! ]  ; Esto es obligatorio en Red/System ][ o  x  =  0  [ 1 ][ x  *  factorial  x  -  1 ] ]

Véase también

Referencias

  1. ^ "Creador de Red". GitHub .
  2. ^ "Registro de cambios de Red". red-lang . Consultado el 21 de febrero de 2024 .
  3. ^ abc "Introducción a la programación de GUI con lenguaje Red". Studytonight . Consultado el 17 de septiembre de 2021 .
  4. ^ abcde Balbaert 2018.
  5. ^ "Entrevista con Nenad Rakocevic sobre Red, un lenguaje de programación inspirado en Rebol". Not a Monad Tutorial . 28 de agosto de 2015 . Consultado el 28 de agosto de 2015 .
  6. ^ ab "6 lenguajes de programación inusuales y revolucionarios para aprender en 2023". makeuseof.com . 18 de octubre de 2023.
  7. ^ abc Lucas, Mathis (21 de julio de 2023). «Red: un lenguaje de programación imperativo y funcional que también es un lenguaje de «batería completa»». Developpez.com . Consultado el 16 de enero de 2023 .
  8. ^ Sasu, Alexandru (22 de noviembre de 2018). «Reseña de Red». Softpedia . Consultado el 21 de febrero de 2024 .
  9. ^ lucindamichele. "0.6.4 GC simple y consola GUI Pure Red" . Consultado el 16 de diciembre de 2018 . La característica principal de la versión 0.6.4 es lo que llamamos GC simple (recolector de basura). Se planea un GC más avanzado para el futuro
  10. ^ « El nuevo lenguaje de programación Red obtiene un backend Syllable », osnews.com , mayo de 2011.
  11. ^ ab « Lenguaje de programación Red: Red en el Día de la Libertad del Software 2011 », red-lang.org , 14 de septiembre de 2011.
  12. ^ ab "Software Freedom Day 2011: lenguaje de programación Red, un nuevo dialecto REBOL". YouTube . Consultado el 17 de enero de 2023 .
  13. ^ « ¿Qué es Cheyenne? » Última referencia: noviembre de 2017.
  14. ^ "La arquitectura de mapeo dinámico". OhioLINK . Diciembre de 2021.
  15. ^ «DiaGrammar», red-lang.org , marzo de 2020.
  16. ^ «SmartXML», redata.dev .

Lectura adicional

Enlaces externos