Red es un lenguaje de programación diseñado para superar las limitaciones del lenguaje de programación Rebol . Red fue introducido en 2011 por Nenad Rakočević, y es un lenguaje de programación imperativo y funcional . Su sintaxis y uso general se superpone al del lenguaje Rebol interpretado.
Paradigma | imperativo , funcional , simbólico |
---|---|
Diseñada por | Nenad Rakočević |
Desarrollador | Nenad Rakočević |
Apareció por primera vez | 2011 |
Lanzamiento estable | |
SO | Linux , Windows , OS X , sílaba |
Licencia | BSD modificado y Boost |
Extensiones de nombre de archivo | .rojo, .rojos |
Sitio web | www |
Influenciado por | |
Rebol , Scala , Lua |
Las opciones de implementación de Red pretenden crear un lenguaje de programación de pila completa : Red se puede utilizar para programación de nivel extremadamente alto ( DSL y GUI ), así como para programación de bajo nivel ( sistemas operativos y controladores de dispositivo ). La clave del enfoque es que el lenguaje tiene dos partes: rojo / sistema y rojo .
- Red / System es similar a C, pero está empaquetado en una estructura léxica de Rebol; por ejemplo, se escribiría en lugar de .
if x > y [print "Hello"]
if (x > y) {printf("Hello\n");}
- El rojo es un lenguaje homoicónico capaz de metaprogramación, con semántica similar a la de Rebol. La biblioteca de tiempo de ejecución de Red está escrita en Red / System y usa un enfoque híbrido: compila lo que puede deducir estáticamente y usa un intérprete integrado en caso contrario. La hoja de ruta del proyecto incluye un compilador justo a tiempo para los casos intermedios, pero esto aún no se ha implementado.
Red busca permanecer independiente de cualquier otra cadena de herramientas ; hace su propia generación de código. Por lo tanto, es posible realizar una compilación cruzada de programas de Red desde cualquier plataforma que admita a cualquier otra, a través de un conmutador 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 en tiempo de ejecución se distribuye bajo la licencia de software Boost, más permisiva .
A partir de la versión 0.6.4, Red incluye un recolector de basura "Simple GC". [1]
Introducción
El rojo fue introducido en los Países Bajos en febrero de 2011 en la conferencia Rebol & Boron [2] por su autor Nenad Rakočević. En septiembre de 2011, el lenguaje de programación Red se presentó a una audiencia más amplia durante el Software Freedom Day 2011. [3] Rakocevic es un desarrollador de Rebol desde hace mucho tiempo conocido como el creador del servidor HTTP Cheyenne . [4]
Características
La sintaxis y la semántica de Red son muy parecidas a las de Rebol . Al igual que Rebol, es muy compatible con la metaprogramación y los lenguajes específicos de dominio ( DSL ) y, por lo tanto, es una herramienta altamente eficiente para dialectar (crear DSL incrustados). El rojo incluye un dialecto llamado Red / System, un lenguaje de nivel C que proporciona funciones de programación del sistema. Red es fácil de integrar con otras herramientas y lenguajes como DLL (libRed) y muy ligero (alrededor de 1 MB). También puede realizar una compilación cruzada en varias plataformas (consulte la sección Compilación cruzada a continuación) y crear paquetes para las plataformas que los requieran (por ejemplo, .APK en Android). Red también incluye un sistema GUI multiplataforma totalmente 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.
Metas
La siguiente es la lista de los objetivos de Red, tal como se presentó en el Software Freedom Day 2011:
- Simplicidad ("No debería ser necesario un IDE para escribir código").
- Compacidad ("Ser muy expresivo maximiza la productividad").
- Velocidad ("Si es demasiado lento, no puede ser lo suficientemente de uso general").
- Sea "ecológico", tenga una huella pequeña ("porque los recursos no son ilimitados").
- Ubicuidad ("Difundir por todas partes")
- Portabilidad, escritura una vez que se ejecuta en todas partes ("Eso es lo menos esperado de un lenguaje de programación").
- Flexibilidad ("¡No es la mejor, pero se adapta bien a cualquier tarea!")
Desarrollo
Está previsto que el desarrollo de Red se realice en dos fases:
Compilación cruzada
Actualmente, Red admite los siguientes objetivos de compilación cruzada:
- MS-DOS : Windows, x86 , aplicaciones de consola (y GUI)
- Windows : Windows, x86, aplicaciones GUI
- Linux : Linux , x86
- Linux-ARM: Linux , ARMv5 , armel (soft-float)
- Raspberry Pi : Linux , ARMv5 , armhf (hard-float)
- FreeBSD : x86
- Darwin : OS X Intel, aplicaciones de consola (y GUI)
- Sílaba : Syllable OS , x86
- Android : Android, ARMv5
- Android-x86: Android, x86
(Nota: esta lista aumentará con el tiempo y, por lo tanto, debe considerarse incompleta).
¡Hola Mundo!
Rojo [ Título: "Guión simple de hola mundo" ] imprimir "¡Hola mundo!"
Ejemplo factorial
IMPORTANTE: Estos están pensados como ejemplos de sintaxis. Hasta que Red tenga soporte de 64 bits , el ejemplo de entero desbordará un entero de 32 bits muy rápidamente. Cambiar eso a "¡flotar!" Irá más lejos, pero estos son simplemente para mostrar la sintaxis del lenguaje.
El siguiente es un ejemplo factorial en rojo:
Rojo [ Título: "Un guión factorial" ] ; Nota: el título es opcional.factorial: func [ x [ integer! ] ; Dar el tipo de un argumento en rojo es opcional ] [ ya sea 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 guión factorial" ]factorial: func [ x [ integer! ] ; Esto es obligatorio en Red / System return: [ integer! ] ; Esto es obligatorio en Red / System ] [ ya sea x = 0 [ 1 ] [ x * factorial x - 1 ] ]
Ver también
- Rebol
Referencias
- ^ a b lucindamichele. "0.6.4 Consola de GUI Simple GC y Pure Red" . Consultado el 16 de diciembre de 2018 .
La característica principal de 0.6.4 es lo que llamamos GC simple (recolector de basura). Se planea un GC más avanzado para el futuro
- ^ «Nuevo lenguaje de programación rojo obtiene backend de sílaba » , osnews.com , mayo de 2011.
- ^ «Lenguaje de programación rojo: rojo en el Día de la libertad del software 2011» , red-lang.org , 14 de septiembre de 2011.
- ^ «¿Qué es Cheyenne? » Última referencia en noviembre de 2017.
enlaces externos
- Página web oficial
- Lenguaje de programación rojo en GitHub
- Redprogramming.com
- rojo en GitHub