Conceptos básicos de Rebol

Desarrollo de software, Linux/Unix/FreeBSD, Windows April 24th, 2008

Un programa en Rebol es una secuencia ordenada de valores. A continuación se relacionan los tipos nativos de valores del lenguaje.

Nombre Descripcion Ejemplos
Números Incluye a los enteros, los reales y los expresados en notación científica.
1234
-45
3.1415
1.54E7
Horas horas:minutos:segundos
21:47
13:45.15
Fechas D-M-Y (formato internacional)

Y-M-D (formato USA)

Pueden incluir una hora y una zona horaria.

En el campo mes es posible utilizar la abreviación de su nombre.

23-04-2008
23/04/2008
2008-04-23
2008-04-23/21:51
2008-04-23/21:51-5:00
Moneda Símbolo internacional de tres letras de la moneda y su correspondiente valor.
$12.45
USD$12.45
CAD$12.45
DEM$12.45
Tuplas Son secuencias de números separadas por puntos. Son útiles para representar direcciones IP y colores RGB por ejemplo.
192.168.1.3
128.45.92
Cadenas Existen cadenas de una sóla línea las cuales se rodean por comillas dobles y cadenas multilínea las cuales se rodean por llaves. Las cadenas multilínea deben utilizarse cuando la cadena contiene comillas, tabulaciones o saltos de línea en su contenido.
"Cadena de una línea"
{Esta es una
cadena multi linea
con "comillas"}
Etiquetas Útiles para representar lenguajes como XML y HTML. Estos valores se rodean por mayor y menor que.
<font size="2" color="blue">
Direcciones de correo Deben incluír el símbolo de arroba (@) para separar el nombre de usuario de su dominio.
jimezam@gmail.com
URLs Deben empezar con un protocolo seguido por su correspondiente ruta.
http://www.jorgeivanmeza.com/
Nombres de archivo Empiezan por el símbolo de porcentaje.
%/etc/init.d/apache2
ares Útiles para representar posiciones (x, y) o dimensiones (ancho, alto). Son valores separados por el carácter x.
1024x768
50x200
Asuntos Representan números de identificación como números telefónicos, modelos de serie, números de tarjetas de crédito entre otros. Deben iniciar con el símbolo de número.
#300-654-5544
#KFC-2145-9878
Binarios Son cadenas ilimitadas de valores binarios codificadas en hexagecimal o base-64. Se rodean por llaves iniciando con el carácter de número.
#{42652061205245424F4C}
64#{UkVCT0wgUm9ja3Mh}

Las palabras son los símbolos utilizados por lenguaje los cuales pueden ser o no variables según como se utilicen. Algo interesante de Rebol es que tiene palabras reservadas. Cualquier palabra puede utilizarse según el contexto, inclusive pueden utilizarse para redefinir un comportamiento nativo provisto por el lenguaje.

Las palabras no son sensitivas a mayúsculas/minúsculas y pueden incluír carácteres especiales como: +, -, ‘, *, !, ~, &, ., y ?. Los siguientes carácteres no están permitidos: @ # $ % ^ ,.


Los bloques son un conjunto de valores organizados en un órden específico y se utilizan para representar secciones de código, listas, arreglos, tablas, directorios y asociaciones, entre otras secuencias. Los bloques se rodean por corchetes y pueden separarse en varias líneas de código.

loop 10 [print "hello"]
[
"Pepe" 1 0:55:68
"Rosa" 2 0:61:35
"Juan" 3 0:50:12
]

Las variables son referencias conocidas a valores. La asignación se realiza con el operador dos puntos.

nombre: "Jorge"
edad: 31

Un aspecto importante que se debe tener en cuenta es que el lenguaje no presenta ningún tipo de precedencia para los operadores aritméticos. Esta debe realizarse explícitamente mediante el uso de los paréntesis para agrupar las expresiones matemáticas.

print 2 + 3 * 10
> 50
print 2 + (3 * 10)
> 32

Las funciones son bloques nombrados que pueden o no recibir argumentos (parámetros) que pueden ser modifcados durante su llamado.

sumar: func [a b] [a + b]
print sumar 2 3
> 5

Si la función utiliza además variables locales se deben crear entonces functions.

promedio: function [series] [total] [
total: 0
foreach value series [total: total + value]
total / (length? series)
]
print promedio [37 1 42 108]
> 47

Es posible incluír la documentación de la función dentro de su misma especificación.

promedio: function [
"Descripción de la función PROMEDIO"
series "Descripción del parámetro SERIES"
] [total] [
total: 0
foreach value series [total: total + value]
total / (length? series)
]

Cuando se ejecuta el siguiente comando: help promedio, se obtiene esta información.

USAGE:
    PROMEDIO series
DESCRIPTION:
    Descripción de la función PROMEDIO
    PROMEDIO is a function value.
ARGUMENTS:
    series -- Descripción del parámetro SERIES
(Type: any)

Las rutas (paths) son un conjunto de valores que representan pasos o niveles y que proveen un mecanismo para acceder a la información, de igual manera a como se accede a un archivo dentro de carpetas (%proyecto/recursos/logo.jpg) o a un recursos web (http://www.servidor.com/docs/nomina.html).

Las rutas, que son cadenas separadas por barras diagonales (slashes), permiten acceder a la información contenida en cadenas, objetos, bloques y a refinar la ejecución de las funciones.

Departamentos/Caldas/Manizales/poblacion (acceso a un bloque - arreglo)
nombre/10 (acceso a una posición de una cadena)
nomina/reporte (acceso a un método de un objeto)
match/any (opción de una función)

A continuación un ejemplo de uno de sus aplicaciones.

Departamentos: [
    Caldas [
        poblacion #12345

        web http://www.manizales.gov.co
    ]
    Risaralda [
        poblacion #54321
        web http://www.risaralda.gov.co
        email alcalde@risaralda.gov.co
    ]
]
print Departamentos/Caldas/web
> http://www.manizales.gov.co

Más información: http://www.rebol.com/docs.html.

Tags:

Rebol, introducción.

Desarrollo de software, Linux/Unix/FreeBSD, Windows April 23rd, 2008

Rebol es otro de los lenguajes que conocí cuando estaba en la Universidad, se veía prometedor para crear fácilmente scripts que involucraran acceso a la red. En ese entonces creo que no me agradó el licenciamiento comercial que tenía (o así lo entendí en su momento) y no profundicé mas en el tema. Casualmente hace poco visité su página (http://www.rebol.com/) y encuentro que su licencia es ahora gratuita: free and will always be free. It is for educational and general use, tanto en su versión básica (Core) para scripts de consola como su versión de escritorio (View) que incluye soporte para GUI.

Leyendo un poco acerca del estado actual y de su futuro próximo me he interesado nuevamente en el tema. Por estos días pienso darle una oportunidad al lenguaje con una tarea muy sencilla que tengo en mente, necesito crear un script sencillo de backup ... para un Windows NT 4. Voy a ver cuantas maravillas se pueden hacer con Rebol.

Según el sitio REBOL significa "Relative Expression-Based Object Language" y fue desarrollado por Carl
Sassenrath
, quien fue responsable de la arquitectura de Amiga OS, a finales de los noventas creado para el desarrollo de programas enfocados a las redes y a la computación distribuída. Según se menciona, la meta de REBOL es la de crear una nueva arquitectura de como la información es almacenada, intercambiada y procesada entre diferentes dispositivos conectados a Internet a través de la integración entre conceptos de lenguajes de programación y conceptos de lenguajes de meta datos.

Algunas de las ventajas de REBOL es su alto nivel, el hecho de ser interpretado, su carácter multi plataforma (la documentación menciona que su versión básica se encuentra disponible en mas de 30 plataformas) y multi paradigma, tiene recolección de basura, manejo dinámico de memoria y excepciones entre otras cosas.

Mas información: http://en.wikipedia.org/wiki/Rebol.

Tags: