TEMA 24:LENGUAJES DE PROGRAMACION.TIPOS.CARACTERICTICAS
1,INTRODUCCION
1.1 Concepto de lenguaje de programacion
1.2.Caracterieticas de un lenguaje de programacion.
2.-CLASIFICACION DE LOS LENGUAJES DE PROGRAMACION.
2.1.-En funcion de la cercania a la maquina
i)Lenguaje maquina
) Lenguaje ensamblador
)lenguaje de alto nivel
2.2-En funcion del hardware
2.3.-En funcion de la estructura gramatical.
i)Imperativos
ii)Declarativos
3.-PROCESADORES DE LENGUAJES DE PROGRAMACION.
3.2.-Analisis lexico
i) BNF(Backus Naur Form)
ii) Diagramas sintacticos
3.3.-Analisis semantico
3.4.-Traduccion y optimizacion de codigo
i) Compiladores
ii) Interpretes
iii) Traductores hibridos y entornos de desarrollo
4.-OTRAS CATEGORIAS
UTILIZACION DE LOS LENGUAJES DE PROGRAMACION
6-BIBLIOGRAFIA1.INTRODUCCION
1.1.-Concepto de lenguaje de programacion
Los primeros intentos de automatizar tareas implicaban la utilizacion de elementos hardware junto con
informacion soportada en tarjetas perforadas
Posteriormente Von Newman desarrollo la idea de programa interno de forma que las instrucciones no
estuvieran cableadas,se pretendia que los datos y las instrucciones coexistieran en una memoria interan de
forma que las instrucciones pudieran modificarse_y con ello modificar el tratamiento sobre los datos
El ordenador de Von Newman constaba de una memoria de 1024 palabras de 40 bits que podia almacenar
datos 0 programas
= Cuando se interpretaba como dato los 40 bits representaban un numero binario.
~ Cuando se interpretaba como dato los 40 bits representaban dos instrucciones de 20 bits cada uno,
Caractericiticas de la maquina de Von Newman
{) Solo trabajaba con numeros enteros ,pero estaba previsto que tambien lo hiciese con numeros den
coma flotante.
ii) Las operaciones aritmeticas que podian realizarse eran : suma , resta, multiplicacion, division y valor
absoluto,
- Los resultados se colocaban en el registro acumulador
iii) La aignacion de datos a memoria solo podia hacerse mediante un valor contenido previamente en el
acumulador que se pasaba a la posicion de memoria elegida,
iv) El flujo de control de una instruccién a la siguiente podia ser interrumpido por un salto incondicional
goto,
La maquina de Von Newman y sus sucesoras estan formada por elementos de naturaleza electronic:
maneja valores que desde un punto de vista logico se forman unicamente a base de valores 0'y 1
Cualquier comunicacién ha de estar formada en base a estos dos elementos,lo que se conoce como codigo
‘maquina.
Para un ser humano los programas en codigo maquina son inteligibles , la solucion esta en los lenguajes
de programacion.Definimosun lenguajede programacioncomounanotacionparaescribir
programasa travesde los cualeses posiblela comunicaciénconel hardware| 4
. i Jn lenguaje de
y dar ordenespararealizarun determinadoproceso. programacion
viene definido
por una gramatica 0 conjunto de reglas que se aplican a un alfabeto constituido por un conjunto de
simbolos,la mayoria de los lenguajes de programacion llevan asociados un traductor.
Para estudiar los lenguajes de programacion (LP) debemos distinguir tres niveles
i)Nivel Lexico:Simbolos que se pueden usar en el lenguaje.
ii)Nivel Sitactico:Construcciones validas de esos simbolos
iii)Nivel Semantico:EI significado de dichas construcciones
Para definir un lenguaje de programacion se deben especificar cada uno de esos niveles
Los elementos basicos del lenguaje son:
i) Identificadores:Nombres simbolicos que se daran a ciertos elementos
ii)Constantes:Datos que no cambiaran su valor
iii)Operadores:Simbolos que representan operaciones entre variables , constantes y expresiones.
iv)Instrucciones:Simbolos especiales que representan estructuras de procesamiento y de definicion de
elementos.
v)Comentarios
Las variables y constantes deben tomar datos pertenecientes a un dominio dado
1.2.Caractericticas de un lenguaje de programacion.
Las propiedades de los lenguajes de programacion son
| -Universalidad:Facilidad para que un programa escrito en un lenguaje determinado pueda ser
transferido de un ordenador a otro
2.-Detallabilidad:Define el numero de pasos que es necesario definir en un programa para dar solucion a
un problema.
~ Los lenguajes de 3G tiene un valor bajo de este parametro
-Los lenguajes maquina y ensamblador tiene un valor mas alto.
3.-Generalidad:Cuanto mas tipos de programa diferente puedan tratarse las general es
4.-Utilizabilidad:Facilidad para ser aprendido o utilizado por el usuario.
2.-CLASIFICACION DE LOS LENGUAJES DE PROGRAMACION.
En esta clasificacion consideramos la porximidad que cada lenguaje presenta respecto al lenguaje que
utiliza la maquina o al que utilizan las personas
1.-Lenguaje maquinaEs el unico que puede entender directamente la maquina. Utiliza un alfabeto binario.Dejo de utilizarse por
su complejidad
Para poder emplearlo debemos conocer perfectamente la arquitectura de la maquina,Las instreciones
ritas en un lenguaje maquina son directamente interpretadas por la UCP.
Caractericticas de lenguaje maquina.
1 -Las instrucciones son secuencias de ceros y unos, pero pueden utilizarse codigos intermedios como el
octal y el hexadecimal
2.-Los datos a procesar son referidos utlizando la direccion de memoria en la que se encuentran.EI
programador asigna una direccion a cada dato para mediante invocacion, acceder a la informacion alli
contenida
3.-Las instruceiones tienen un formato rigido en cuanto a la posicion de los campos,
~ El codigo de operacién indica a la UC cual es la operacién a realizar y los operandos o una referencia a
Ia posicion de memoria en la que estos se encuentran.
4.-Todas las instruceiones son imperativas.
5.-No pueden incluirse comentarios
Definimostos lenguajesmaquinacomo lenguajesque permitenla
codificacionde programasmediantela utilizacionde un lenguajebinatioy
que empleansentenciasimperativao instrucconesque hacenreferenciaa
los datosa traves de la direccionque ocupanen memeoria,utlizandoun
Tipos de instruccions en lenguaje maquina
1 Transferencia de datos.Permite intercambiar informacion entre memoria principal y los registros
internos
2.-Ruptura de secuencias Rompe la ejecucion secuencial de las instrucciones del programa
3,-Aritmeticas.
4,Entrada/Salida Permiten la comunicacién de la maquina con el exterior.
5.-Logica y manejo de bits.Permiten manipular valores binarios bit a bit y efectuar comparaciones
logicas.
6.-Control.Permiten controlar el programa asignando valores al resgistro de
estado,acarreo,desbordamiento , parada,.
-Lenguajes ensambladores
Surgen para separar las caractericiteas del hardware de la labor de programacion. Ya no se utilizan
codigos numericos ni direcciones reales de memoria, sino que se sustituyen por represetaciones textuales
Sus caractericticas principales son:
1 -Utilizan direeciones simbolicas en lugar de direceiones reales
2.-Permite incluir comentarios
3.Se sustituyen,para las operaciones, los codigos numericos por mnemonicos
EI formato usual de las instrucciones suele constar de 4 terminosi) Etiqueta:Es un campo opcional que se antepone a aquellas instrucciones que pueden ser requeridas
desde agun punto del programa debido a alguna bifurcacion condicional o incondicional.
ii)Codigo de operacién:mnemonico que indica la opetacién a realizar.Los codigos de operacién se
consdideran palabras reservadas.
iii)Comentarios:Campo opcional
El conjunto de operaciones que mantienen es similar al utilizado en los lenguajes Maquina, con la
excepcion de que los LE incluyen las llamadas pseudoinstrucciones,que poseen la funcion de ayudar a la
codificacion Entre ellas se encuentran:Inicio,fin programa, Declaracion de variables,.
Encontramos una variedad de LE denominados macroensambladores que proporcionan un metodo para
ahorrar la escritura repetitiva de secuencias de instrucciones practicamente iguales y que solo difieren en
los parametros utilizado.
La definicion de la macro se escribe una sola vez.3.
3.Lenguajes de alto nivel
Liberan al programador de tareas complejas y tediosoas ademas esta proximo al lenguaje natural.
Caractericticas
1.-Las instrucciones se expresan mediante caracteres alfanumericos.
2.-Pueden definirse variables para recoger datos.Estas pueden adoptar la forma de complejas estructuras
de datos.
3.-Pueden incluirse comentarios
4.-Disponen de instrucciones aritmeticas, logicas , de tratamiento de caracteres ,.
5.El tiempo de codificacion y puesta prueba de los programas es menor , la curva de aprendizaje es
menor.
6.-Los programas escritos en escritos en estos lenguajes no pueden ejecutarse directamente.
7.-Existe un tiempo de traduccion
8.-Es menos efectivo el consumo de recursos y las prestaciones conseguidas son bastantes menores.
2.2.:En funcion de su estructura gramatical
‘Tenemos la siguiente clasificacion
1.-Lenguajes Imperativos
2.Lenguajes Declarativos
1.-Lenguajes Imperatives
Liberan al programador del conocimiento de las caractericticas de la maquina.El programador para
resolverr un problema ha de disefiar un algoritmo y coneretarlo en un programa que le diga ala maquina
que pasos debe dar para resolver un problema.
La caractericitca mas notable de estos programas es la asignacion que hace que una variable tome el
valor devuelto por una expresion.
‘Tambien la programacion orientada a objetos es imperativa
2.-Lenguajes declarativosLa idea es que el programador solo tenga que declarar o especificar el problema siendo el traductor del
lenguaje el que se encargue de construir el algoritmo,
Los dos paradigmas de programacion declarativa mas conocidos son los que corresponden a la
programacion funcional y a la programacion logica.
a)Funcional
byLogico
a)Funcional
Un programa funcional es un conjunto de ecuaciones que definen funciones a partir de otras funciones
mas sencillas o primitivas.
Un concepto fundamental,en este paradigma, es el de la transparencia referencial.Una funcion es
referencial transparentemente o pura si su efecto queda definido excusivamente por el valor dado a sus
parametros
Para esto es necesario que la funcion no tenga efectos laterales , es decir que no altere ni el valor de sus
parametros ni el de posibles variables globales
El objetivo de la programacion funcional es la de expresar todos los algoritmos mediante
aplicaciones de funciones puras
‘Tambien puede hacerse programacion funcional con lenguajes imperativos,basta con utilizar funciones
que no manejen variables globales ni alteren sus parametros.
Los lenguajes funcionales como LISP se ejecutan normalmente mediante interpretacion y con un esquema
de funcionamiento interactivo.
'n su forma mas sencilla una funcion o programa se representa como una expresion completamente
puesta entre parentesis con todos los operadores en forma prefija. Todas las variables tienen valores
escalares expresiones completamentes puestas entre parentesis denominadas listas.
Una lista es una secuencia finita de elementos donde cada elemento es un atomo u otras lista.Las listas,
permiten una representacion uniforme y versatil de gran variedad de objetos.
Para manejar listas los lenguajes funcionales suelen tener incorporadas todo tipo de funciones entre las
que destaca aquella que permite encadenar dos listas,
DyLogico
Su fundamento teorico es el calculo de predicados de primer orden.E] lenguaje mas conocido es
PROLOG en el que las sentencias estan compuestas con formulas atomicas del calculo de predi
3.PROCESADORES DE LENGUAJES DE PROGRAMACION
Un procesador de lenguaje de programacion es un programa que transforma las instrucciones escrita en
un lenguaje simbolico (ensamblador o de alto nivel) a instrucciones en codigo maquina.Traductores
Un traductor es un programa que recibe como entrada un texto en un lenguaje de programacion y
produce como salida un texto en un lenguaje maquina equivalente.El programa inicial se denomina
programa fuente y el programa obtenido programa objeto.
El proceso de traduccion consta de dos fases
1 -Analisis:Se comprueba que el programa fuente este correcto.
~ Se consideran las reglas que definen el lenguaje en los niveles lexico,sintactico y semantico.
2.«Traduecion:Se realiza la traduccion propiamente dicha .Dependiendo de como se realice esta se tienen
los distintos tipos de traductores (compiladores , interpretes)
Ja traduccion por compilador consta de dos etapas , que a veces no estan diferenciadas :la etapa de analisis,
del programa fuente y la etapa de sintesis del programa objeto.
Cada etapa requere varias fases , por ejemplo, el analisis de texto fuente implica la realizacion de un
analisis del lexico, de la sintaxis y de la semantica.la sintesis del programa objeto requiere la generacion
de codigo y su optimizacion.
La compilacion es un proceso complejo y requiere bastantes recursos de computo.durante la compilacion
se generan mensajes de error sefialando as incorrecciones que el programa detecta.
L Analisis lexico
2.Analisis sintactico
La sintaxis de un lenguaje de programacion especifica como deen escribirse los programas mediante un
conjunto de reglas.Un programa es sintacticamente correcto cuando sus combinaciones de
tokens(expresiones,sentencias declarativas, asignaciones,..) aparecen en un orden correcto.
La sintaxis se puede especificar con alguna de las notaciones existentes ,como la BNI
Conway
y los diagramas de
a)BNF (Backus Naur Form)
BNF es una gramatica independiente del contexto.Una gramatica independiente del contexto consta de
cuatro partes.
1.-Un conjunto de simbolos terminales
2.-Un conjunto de simbolos no terminales
3.Un conjunto de construcciones , donde cada construccion tiene un simbolo no terminal del lado
izquierdo, un := y del lado derecho una cadena construida con los conjuntos de simbolos terminames y no
terminale
4,Un simbolo no terminal designado como simbolo no terminal iniciales
Los metasimbolos originales de BNF son:
+ = que significa 'se define como!
ignifica'o'+ > que usan para rodear nombres de categorias.
Los parentesis en angulos distinguen los nombres de las reglas de sintaxis (simbolos no terminales) de los
terminales.
Despues se introdujeron extensiones que hacen BNF mas facil de usar
+ Los item opcionales se representan entre corchetes []
+ Los item que se repiten cero 0 mas veces se representan entre Ilaves {}
+ Los simbolos terminales de un solo cardcter se representa entre comilas "
+ Los parentesis se usan para agrupar.
b) Diagramas sintacticos
Un diagrama sintactico es un grafo dirigido que describe al recorrerlo las distintas posibilidades de
creacion de una construecion del lenguaje
Proceso de analisis
Para comprobar si una determinada emtrdada es correcta el analizador sintactico constituye un arbol de
expansion donde va colocando los simbolos terminales que se encuentra.Si se puede construir el arbol
usando expansiones de reglas correctas significa que la entrada es sintacticamente correcta.
2.Analisis semantico
Su mision es comprobar que las construcciones de tokens correctas sean ademas coherentes con las reglas
semanticas que especifican el significado de los simolos
Lo que el analizador semantido hace es comprobar que las expresiones estan ien formadas,es decir
que las variables y constantes sean de tipos compatibles
-Traduceion y optimizacion de codigo
3.1 Compiladores
3.2.Interpretes.
3.1.-Compiladores
Los copiladores son traductores que realizan su tarea de forma global,de forma que en un solo proceso se
analiza todo el programa fuente,se genera el codigo y se almacena el resultado.
Segun el tipo de compilacion el archivo objeto generado puede ejecutarse directamente o necesitar otros
pasos (ensamblado,enlazado y carga)
Una vez realizada la traduccion y almacenadp el programa maquina se puede ejecutar tantas veces como
se quiera sin tener que volver a traducir.
Los compiladores permiten crear bibliotecas de modulo objeto Para poder incluirlos en el codigo maquina
se ha de usar un enlazador (linker)En Ia fase de optimizacion se mejora el codigo objeto analizandose el programa globlamente y
comprobando donde es posible perfeccionar el codigo.
Caractericticas de los lenguajes compiladores .
+ Los programas objetos se ejecutan mucho mas rapidamente que los interpretados
+ Elproceso de compilacion a veces es lento y complejo
+ No es posible transportar codigo objeto entre distintas plataformas de ejecucion
3.2.-Interpretes
Son traductores que simultanean el proceso de traduccion y el de ejecucion.Su forma de trabajo es ir
analizando bloques del programa fuente generando el codigo maquina correspondiente y ejecutandolo.A
continuacion repiten el proceso y asi hasta que acaba el programa,
Las caractericticas de los lengajes interpretados son.
+ Los programas objetos se ejecutan las lentamente que en el caso de los compilados .Esto es por
dos razones :la dificultada de realizar optimizaciones sobre el codigo fuera del contexto de cada
sentencia y la otra antes de cada ejecucion de cada bloque de codigo maquina es preciso llevar a
cabo en analisis y traduccion del codigo fuente
Ejemplo:En una iteracion que se repite 10000 veces habra que analizae y traducir 10000
veces el codigo afectado.
+ Son facilmente trasportables entre distintas maquinas dado que es el propio programa fuente el
que se mueve
+ En fases iniciales de la ensefianza de la informatica los interpretes pueden resultar las pedagogicos
ya que el alumno puede detectar y corregir mas facilmente los errores.
‘Traductores hibridos y entornos de desarrollo
Hoy hay muchos entornos de desarrollo que no son ni compiladores ni interpretes sino que aprovechan
los mejor de ambos.Se trata de traductores hiridos que son capaces de compilar parde del codigo en
lenguaje maquina y dehar otra parte en p-code (pseudocodigo)
4.-OTRAS CATEGORIAS
tras posibles clasificaciones son,
+ Navegacionales son aquellos lenguajes en los que hay especificar el tratamiento de los datos en
memoria auxiliar como registros individuales que se procesan uno tras otro.
+ No navegacionales son aquellos que permiten manipular conjuntos de registros _utilizando
operaciones basadas en algun tipo de caleulo o algebra.
+ Autonomos .Lenguajes que funcionan por si mismo, no necesitan apoyarse en ningun otro
lenguaje anfitrion
+ Inmersos 0 embebidos son lenguajes no autosuficientes que necesitan apoyarse en algun otro
Jenguaje anfitrion para realizar su funcion,
+ Duales :autonomos e inmersos a la vez
+ Procedimentales: describen el algoritmo o los pasos necesarios para realizar un proceso.No procedimentales deseriben que se desea obtener como se eve a cabo el proceso se deja en
manos del traductor.
5.UTILIZACION DE LOS LENGUAJES DE PROGRAMACION.
Es posible clasificar los lenguajes atendiendo a su campo de trabajo.
+ Educativos
+ De proposito general
+ De inteligencia artificial
+ De gestion
+ Para trabajos por red.
6.BIBLIOGRAFIA
+ Abo,scthi:Ulman:Compiladores, tecnicas y herramientas Addison-Wesley Ib, 1991
+ Kernighan,Brian;Pike Rob:El entomo de programacion UNIX Prentice Hall Hisp . 1987
* Prieto, A;Lloris A;Torres J.C: Introduccion a la informatica.2° de. McGraw-Hill 1995