martes, 23 de noviembre de 2010

Lenguajes Interpretados ( puntos extra)

hola , este es mi entrada sobre lenguajes interpretados , aunque ahi una gran variacion como
  • APL
  • JAVASCRIPT
  • PYTHON 
  • FALCON
yo elegi tomar  Awk , Ruby y Qbasic,

Awk :  es un lenguaje de programación que fue diseñado con el objetivo de procesar datos basados sobre texto y una de las primeras herramientas en aparecer en Unix. Su nombre deriva de la primera letra de los apellidos de sus autores Alfred Aho, Peter Weinberger y Brian Kernighan.

Utiliza listas en un índice ordenado por cadenas clave (listas asociativas) y expresiones regulares. Es un lenguaje ampliamente utilizado para la programación de guiones ejecutables pues añade funcionalidad a las tuberías en los sistemas operativos tipo POSIX. Está incluido en las instalaciones básicas de prácticamente todas las distribuciones de GNU/Linux.
Estructura de los programas escritos en AWK

La orden awk utiliza un fichero o emisión de ordenes y un fichero o emisión de entrada. El primero indica como procesar al segundo. El fichero de entrada es por lo general texto con algún formato que puede ser un fichero o bien la salida de otro mandato.
La sintaxis general utilizada para el mandato awk sigue el siguiente patrón:
awk
'expresión-regular { orden }'

Cuando se utiliza el mandato, éste examina el fichero de entrada y ejecuta la orden cuando encuentra la expresión regular especificada.
El siguiente modelo ejecutaría la orden al inicio del programa y antes de que sean procesados los datos del fichero de entrada:
awk 'BEGIN { orden
}'

El siguiente modelo ejecutaría la orden al final del programa y después de que sean procesados los datos del fichero de entrada:
awk 'BEGIN { orden
}'

El siguiente modelo ejecutaría la orden por cada una de las líneas del fichero de entrada:
awk '{ orden }'


Ejemplos de uso de AWK

A continuación vamos a ir realizando ejemplos con esta orden, mientras se van comentando diversas características.

  • Especificar que al inicio se imprima en la salida la frase "Hola mundo" y terminar el procesamiento:
awk 'BEGIN { print
"Hola mundo"; exit }'

Hola mundo


Como ejecutar los programas awk
Hay varias formas de ejecutar un programa awk: .Si el programa es corto, es más fácil para incluir en el comando que ejecuta awk, así:
wk-f programa de archivo de entrada-input-archivo1 archivo2 ... 
 Esta sección trata sobre los mecanismos, junto con algunas variaciones de cada uno.

El programa comienza con un comentario que describe las opciones y usage la función que imprime un mensaje de uso y salidas. usage se llama, si se suministran argumentos no válidos.
 
 # cut.awk --- implement cut in awk # Cut.awk --- aplicar corte en awk
# Arnold Robbins, arnold@gnu.org, Public Domain # Arnold Robbins, arnold@gnu.org, Dominio Público
# May 1993 # 05 1993

# Options: # Opciones:
#    -f list        Cut fields #-F lista Corte campos
#    -dc Field delimiter character #-Dc carácter delimitador de campo
#    -c list        Cut characters #-C lista de personajes de corte
# #
#    -s        Suppress lines without the delimiter character #-S líneas de reprimir sin el carácter delimitador

function usage(    e1, e2) uso de la función (E1, E2)
{ {
    e1 = "usage: cut [-f list] [-dc] [-s] [files...]" e1 = "uso: corte [f-list] [CC] [-s] archivos [...]"
    e2 = "usage: cut [-c list] [files...]" e2 = "uso: corte [-c lista] archivos [...]"
    print e1 > "/dev/stderr" imprimir e1> "/ dev / stderr"
    print e2 > "/dev/stderr" imprimir e2> "/ dev / stderr"
    exit 1 la salida 1
} }
Las variables e1 y e2 se utilizan para que la función se adapta muy bien en la pantalla. 
Luego viene una BEGIN regla que analiza las opciones de línea de comandos. . En él se establecen FS a un solo carácter de tabulación, ya que es cut 'default s separador de campo.  El separador de campo de salida también está dispuesto a ser el mismo que el separador de campos de entrada. Luego getopt se utiliza para el paso a través de la línea de comando opciones. Una u otra de las variables by_fields o by_chars se establece en true, para indicar que el tratamiento debe ser realizado por los campos o caracteres, respectivamente. When cutting by characters, the output field separator is set to the null string. Al cortar los personajes, el separador de campo de salida se fija a la cadena nula.
 INICIO \
{ {
    FS = "\t"    # default FS = "\ t" default #
    OFS = FS OFS = FS
    while ((c = getopt(ARGC, ARGV, "sf:c:d:")) != -1) { while ((c = getopt (argc, argv, "sf: c: d:"!)) = -1) {
        if (c == "f") { if (c == "f") {
            by_fields = 1 by_fields = 1
            fieldlist = Optarg fieldlist = OPTARG
        } else if (c == "c") { } Else if (c == "c") {
            by_chars = 1 by_chars = 1
            fieldlist = Optarg fieldlist = OPTARG
            OFS = "" OFS = ""
        } else if (c == "d") { } Else if (c == "d") {
            if (length(Optarg) > 1) { if (longitud (OPTARG)> 1) {
                printf("Using first character of %s" \ printf ("Uso de primer carácter de% s" \
                " for delimiter\n", Optarg) > "/dev/stderr" "Delimitador de \ n", OPTARG)> "/ dev / stderr"
                Optarg = substr(Optarg, 1, 1) Optarg = substr (OPTARG, 1, 1)
            } }
            FS = Optarg FS = OPTARG
            OFS = FS OFS = FS
            if (FS == " ")    # defeat awk semantics if (FS == "") # semántica awk derrota
                FS = "[ ]" FS = "[]"
        } else if (c == "s") } Else if (c == "s")
            suppress++ suprimir + +
        else más
            usage() uso ()
    } }

    for (i = 1; i < Optind; i++) for (i = 1; i optind <; i + +)
        ARGV[i] = "" ARGV [i] = ""
 Link para descargar manuales de awk
 
Ruby 
Ruby es un lenguaje de scripts para una programación orientada a objetos rápida y sencilla. Fue creado en Japón en el año 1993 por Yukihiro Matsumoto. Lenguaje de guiones interpretado:
* Posibilidad de realizar directamente llamadas al sistema operativo
* Potentes operaciones sobre cadenas de caracteres y expresiones regulares
* Retroalimentación inmediata durante el proceso de desarrollo

Rápido y sencillo:
* Son innecesarias las declaraciones de variables
* Las variables son de tipo dinámico.
* La sintaxis es simple y consistente
* La gestión de la memoria es automática

Programación orientada a objetos:
* Todo es un objeto
* Clases, herencia, métodos, …
* Métodos singleton
* Mixins por módulos
* Iteradores y cierres

También:
* Enteros de precisión múltiple
* Modelo de procesamiento de excepciones
* Carga dinámica
* Hilos

Ruby es un lenguaje de programación interpretado, de muy alto nivel y orientado a objetos. ¿Por qué otro lenguaje más? Pues porque Ruby es diferente. Cuando Matz dice que Ruby es orientado a objetos, realmente quiere decir que es orientado a objetos. En este lenguaje, hasta los números y los caracteres literales son objetos, y tienen los métodos de su clase, que pueden llamarse normalmente.

Ejemplo : 

Descripcion: 
Este pequeno programa muestra como hacer una clase   como heredar e instanciar las mismas


# en Primer lugar, la estructura CASE
# inicializo con un valor la variable i
i = 5

# la estructura caso se fija por que rama va a seguir
# en este caso se fija en que rango entra
case i
  when 1
    print "(CASE) El valor es 1\n"
  when 2..5
    print "(CASE) El valor esta entre 2 y 5\n"
  when 6..10
    print "(CASE) El valor esta entre 6 y 10\n"
end


# en Segundo lugar, la estructura WHILE
# inicializa la variable j
j = 0

# La estructura de control hace se fije en la condición antes
# de entrar en el bucle, siempre tiene que tener una condicion de salida
while (j <= 10)
  print "(WHILE) El valor es #{j}\n"
  j += 1
end


# en Tercer lugar, la estructura FOR

for num in (0..10)
  print "(FOR) nuevo valor #{num}\n"
end


Manual de Ruby


Qbasic  :


QuickBasic es un lenguaje de programación de alto nivel, que se puede utilizar de forma compilada. Tiene varios predecesores. El primero fue BasicA, desarrollado por Microsoft a principios de los 80. Sus características principales:
  • tenía pocas instrucciones
  • era un lenguaje interpretado
  • se requería números identificativos de cada línea de código, haciendo la programación tediosa y limitada
  • los archivos fuente se guardaban en un formato propio
El siguiente predecesor de QuickBasic se denominaba GW-Basic, aparecido a finales de los 80 con algunas mejoras:
  • los archivos fuente se guardaban en un formato de texto regular, legibles por otros programas
  • la interfaz de programación era ligeramente más amigable
GW-Basic no era todavía demasiado adecuado para un uso masivo, de modo que Microsoft en 1987 crea una actualización de Basic denominada QuickBasic, con las siguientes ventajas:
  • una interfaz de usuario bastante sencilla
  • una extensa ayuda on-line que incluía índice, e ideas y ejemplos acerca de cómo usar cada instrucción
  • utilidades básicas de edición, como búsquedas y sustituciones, cortado y pegado, etc., que aumentaban la productividad
  • no era preciso incluir números de línea
Microsoft incluyó con el sistema operativo MS-DOS 5.0 una versión reducida de QuickBasic denominada QBasic 1.0. Esta versión y su actualización posterior, 1.1, se utilizaban sólo de forma interpretada pero sus posibilidades eran todavía bastante amplias. En lo que resta nos referiremos específicamente a la implementación de BASIC denominada QBasic por su versatilidad y sencillez de uso.

Ejemplo : 
CLS
INPUT "Ingrese un numero: ", num

primo = 1
FOR i = 2 TO num
        IF num MOD i = 0 THEN
                IF i <> num THEN
                        primo = 0
                END IF
        END IF
NEXT

IF primo = 0 THEN
        PRINT "No es primo."
ELSE
        PRINT "Si es primo."
END IF
INPUT "", tmp


 Manual de Qbasic

 este ultimo ejemplo es un ejemplo muy sencillo que  te muestra si un numero es primo o no
 
 

1 comentario:

  1. Pues, aquí sí hay referencias. Me hubiera gustado más explicación de los códigos, en particular cuando no es algo que tú hiciste solito desde cero. +3 en segundas.

    ResponderEliminar