Introducción a los Lenguajes Basados en Scripts

Anuncio
Lenguajes Basados en Scripts (LBS) - Introducción
Introducción a los Lenguajes
Basados en Scripts
Caleta Olivia, Santa Cruz
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Organización del contenido de la Asignatura
Principales Temas
Perspectiva general de Lenguajes Basados en Scripts (LBS)
Conceptos de Compiladores e Intérpretes (relación con los
LBS)
Desarrollo histórico y actual
Ejemplo de un LBS (Python): profundizaremos en varios
aspectos de este lenguaje
Análisis comparativo de Python con otros LBS
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Organización del contenido de la Asignatura
Teorı́as - Prácticos - Evaluación
Primer encuentro: Semana del 13 al 17 de mayo. Clases
teórico-prácticas. Desarrollo de ejercicios en laboratorio (bajo
linux principalmente)
Segundo encuentro: Fecha a definir. Similar al primer
encuentro, pero haciendo énfasis en la parte de laboratorio.
Evaluación: un mini-proyecto de una aplicación sencilla que
se pueda desarrollar antes de las vacaciones de julio y cerrar la
materia para esa fecha.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Lenguajes Basados en Scripts: perspectiva general
Lenguajes de programación tradicionales vs LBS
Los lenguajes de programación tradicionales están destinados
principalmente para la construcción de aplicaciones
auto-contenidas:
Programas que aceptan una suerte entrada, la procesan de
una manera bien entendida y finalmente generan una salida
apropiada.
Sin embargo, ...
muchos de los usos actuales en diferentes entornos, requieren la
coordinación de múltiples programas.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Lenguajes Basados en Scripts: perspectiva general
Lenguajes de programación tradicionales vs LBS
Ejemplo de múltiples programas: un gran sistema de liquidación de
haberes.
Existen diferentes fuentes de obtención de datos.
Ejecución de miles de consultas a BDs, considerar una gran
cantidad de reglas legales e institucionales y crear varios
reportes en papel para mantener registro, auditorı́a y otros
vinculados a pagos de impuestos.
Comunicación con servidores (tal vez remotos) para depósitos
on-line, retención de impuestos, seguro médico, aportes
jubilatorios, etc.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Múltiples programas, necesidad de coordinación
Consideraciones generales
Las tareas mencionadas anteriormente (dadas a modo de
ejemplo) podrı́an involucrar una gran cantidad de programas
ejecutados en forma separada.
La coordinación entre estos programas requerirá por lo tanto
verificaciones de datos, condicionales, iteraciones, variables y
tipos, subrutinas y abstracciones.
Todo lo anterior, tiene la misma filosofı́a de la lógica seguida
provista por un lenguaje convencional para desarrollar
aplicaciones auto-contenidas.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Múltiples programas, necesidad de coordinación
Visión global / Coordinación
Ap. C++
Procesa Datos
Ap. en C
Generador
Datos
Ap. Java
Generador
de Reportes
Interacción de comandos
del SO (shell)
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Múltiples programas, necesidad de coordinación
Visión global / tipificación
1000
LBS
Sentencias/Intrucciones
Visual Basic
Perl/Python
Perl
Java
C++
C
Assembly
Leng. Programación Tradicionales
1
Fuerte
Ninguno
Grado de Tipificación
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Lenguajes Basados en Scripts: principales caracterı́sticas
Interpretados (en contra-posición a los lenguajes compilados)
En general, débilmente tipados (tipificados)
Por lo tanto, ... muy flexibles, aunque suelen ser menos
eficientes en la ejecución
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Lenguajes Basados en Scripts: perspectiva histórica
Algunos aspectos de sus usos iniciales
UNIX ... administración de sistemas, ejecución de tareas en
por tanda (batch)
Procesamiento de texto, comandos, etc.
Web, etc.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
LBS: Caracterı́sticas comunes
Algunos aspectos de sus usos iniciales
Procesamiento por tandas (batch) e interactivo
Economı́a en la expresividad
Sin declaraciones/reglas de alcance simple
Tipificación dinámica flexible
Facilidad de acceso a otros programas
Manipulación sofisticada de cadenas y de apareamiento de
patrones
Tipos de datos de alto nivel (conjuntos, diccionarios, listas,
etc.)
Analizaremos en detalle a algunos de estos puntos a continuación.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Economı́a expresibilidad)
Java
class Hello {
public static void main(String[ ] args) {
System.out.println(”Hello, world!”);
}
}
Ada
with ada.text IO; use ada.text IO;
procedure hello is
begin
put line(”Hello, world!”);
end hello;
Perl, Python, o Ruby
print ”Hello, world!\n”
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Procesamiento por
tandas (batch) e interactivo)
Sólo unos pocos LBS (e.g., Perl) usan compiladores
”just-in-time”que leen todo el código antes de producir una
salida, pero ...
Para la mayorı́a de los LBS, se realiza el análisis de la entrada
(código) linea-por-linea, lo cual permite realizar pruebas en
forma interactiva, o bien generando un archivo de texto con
las lineas de comando que conformarán el programa.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Sin Declaraciones/Reglas
de alcance simple)
Algunos aspectos relevantes
En los LBS las declaraciones son escasas o nulas y proveen
reglas simples que gobiernan el alcance de los identificadores
(recordemos el concepto de alcance!)
Por ejemplo, en Perl, cada identificador es global por omisión
(aunque hay opciones para limitar el alcance)
En otros lenguajes (e.g., PHP y Tcl), cada cosa es local por
omisión (un objeto global debe ser explı́citmante importado)
Python adopta la regla: .a una variable que se le asigna un
valor es local al bloque donde aparece dicha asignación”.
Aunque se puede cambiar esta regla con una sintaxis especial
(veremos los detalles más adelante).
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Tipificación dinámica
flexible)
Dado la falta de declaraciones, muchos LBS incorporan tipificación
dinámica
En algunos lenguajes el tipo de la variable es chequeada
inmediatamente antes de su uso: e.g., PHP, Python, Ruby, y
Scheme.
En otros, el tipo de una variable (por ende su valor)
será interpretado de manera diferente según el contexto: e.g.,
Rexx, Perl, y Tcl.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Tipificación dinámica
flexible)
Ejemplo en Perl
$a = ”4”;
print $a . 3 . ”\n”; # ’.’ es la concatenación
print $a + 3 . ”\n”; # ’+’ es la suma
...
Dará la siguiente salida:
43
7
La interpretación de contextual es similar a la de coerción,
excepto que no existe naturalmente el tipo al cual el objeto debe
ser convertido. De hecho podrı́a haber varias interpretaciones
igualmente naturales
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Fácil acceso a otros
programas)
El acceso a otros programas puede ser realizado desde un programa
escrito en un lenguajes tradicional, pero a través de un LBS:
Los requerimientos para realizar el acceso es fundamental e
incluye soporte directo para realizarlo
Por ejemplo, Perl provee más de 100 comandos especı́ficos
(built-in) para acceder a funciones del SO: e.g., E/S,
manipulación de archivos y directorios, manejo de procesos, y
muchas mas.
Los comandos descriptos anteriormente, son por cierto,
mucho más fáciles de usar desde Perl que en lenguajes tipo C
a través de bibliotecas ad-hoc.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Manipulación sofisticada
de cadenas y de apareamiento de patrones)
Facilidades avanzadas para:
Procesamiento de texto y generación de reportes
Manipulación de Entrada/Salida de programas externos
Y además, facilidades para pattern matching, búsqueda y
manipulación
La mayorı́a de los comandos están basados en Expresiones
Regulares Extendidas (repasemos el concepto de expresión
regular).
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Aspectos principales de los LBS (Tipos de datos de alto
nivel)
Los LBS son ricos en:
Conjuntos
Diccionarios
Listas
Tuplas, etc.
Por ejemplo:
En muchos LBS es común poder indizar arreglos a través de
cadenas de caracteres, lo que implica una implementación de tablas
de hash y manejo de almacenamiento usando ”garbage collection”.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Dominios de Aplicación (general)
Principales Ejemplos:
Lenguaje de comandos (shell)
Procesamiento de texto y Generación de Reportes
Matemática y Estadı́stica
Lenguajes de ”pegado”(GLUE) y de propósito general
Extensión de Lenguajes
Comentamos por ahora cada unos de los puntos anteriores y más
adelante desarrollaremos en mayor o menor grado cada uno de
ellos.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
LBS en la WWW
WWW como ejemplo especial
CGI (Common Gateway Interface)
Scripts Embebidos en Servidores
Scripts Embebidos en Clientes
Applets de Java
Otros: e.g., XML.
Int. a los Leng. basados en de Scripts
Lenguajes Basados en Scripts (LBS) - Introducción
Fin de la Parte Introductoria General
—Continuamos con el desarrollo de las áreas de aplicación
Int. a los Leng. basados en de Scripts
Descargar