You are on page 1of 10
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-BIBLIOGRAFIA 1.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 maquina Es 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 terminos i) 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 declarativos La 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

You might also like