Ing. Sandra C. Rodrguez Avila Procesadores de lenguaje es el nombre genrico que ib t d l li i i f ti l l reciben todas las aplicaciones informticas en las cuales uno de los datos fundamentales de entrada es un lenguaje. La definicin anterior afecta a una gran variedad de herramientas software: de herramientas software: Traductores (translators) Compiladores (compilers) ( ) Ensambladores (assemblers) Montadores de enlaces o enlazadores (linkers) Cargadores (loaders) g ( ) Intrpretes (interpreters) Desensambladores (dissemblers) Decompiladores (decompilers) etc SCRA TEORIA DE LENGUAJ ES Decompiladores (decompilers), etc 1 Lenguajes de Programacin 1. Lenguajes de Programacin Lenguaje natural: Leng. de Programacin N t i g j Las relaciones humanas se llevan a cabo a travs del lenguaje. Una lengua Notacin que se usa para describir Algoritmos y Estructuras de Datos y que se puede implementar en del lenguaje. Una lengua permite la expresin de ideas y de razonamientos y sin ella se puede implementar en una Computadora. La programacin de ordenadores se realiza en razonamientos, y sin ella la comunicacin sera imposible ordenadores se realiza en los llamados lenguajes de programacin que posibilitan la comunicacin de rdenes a la computadora u ordenador. SCRA TEORIA DE LENGUAJ ES Traduccin Compilador Un lenguaje de programacin se puede definir Un lenguaje de programacin se puede definir de distintas formas: es una notacin formal para describir algoritmos o funciones que sern ejecutadas por un ordenador funciones que sern ejecutadas por un ordenador. es un lenguaje para de comunicar instrucciones al ordenador. i ibi d i i es una convencin para escribir descripciones que puedan ser evaluadas. Tambin se utilizan en Informtica otros l j d i lenguajes que no son de programacin y que tienen otras aplicaciones, por ejemplo puede haber lenguajes para describir formatos g j p grficos, de texto, de descripcin de pginas, de descripcin de sonidos y msica, etc... SCRA TEORIA DE LENGUAJ ES Clasificacin de los lenguajes de g j programacin L l j d i d Los lenguajes de programacin se pueden clasificar desde distintos puntos de vista: Segn su grado de independencia de la mquina L j i Lenguaje mquina Lenguaje ensamblador (en ingls assembly) Lenguajes de medio nivel Lenguajes de medio nivel Lenguajes de alto nivel o lenguajes orientados a usuarios SCRA TEORIA DE LENGUAJ ES Lenguajes orientados a problemas concretos Segn la forma de sus instrucciones Lenguajes imperativos o procedimentales Lenguajes declarativos: lgicos y funcionales Lenguajes concurrentes Lenguajes concurrentes Lenguajes orientados a objetos Por generaciones g Primera generacin Segunda generacin T i Tercera generacin Cuarta generacin Quinta generacin Quinta generacin Generacin orientada a objetos Generacin visual SCRA TEORIA DE LENGUAJ ES Generacin internet SCRA TEORIA DE LENGUAJ ES Grado de independencia de la i L j i mquina: Lenguaje mquina Son aquellos que estn escritos en lenguajes Son aquellos que estn escritos en lenguajes directamente inteligibles por la mquina, ya que sus instrucciones son cadenas binarias que especifican una operacin y las posiciones o direcciones de memoria implicadas en la i operacin. Las instrucciones en lenguaje de mquina dependen del hardware de la computadora y dependen del hardware de la computadora y, por tanto, diferirn de una computadora a otra. SCRA TEORIA DE LENGUAJ ES Grado de independencia de la i L j bl d mquina: Lenguaje ensamblador Son ms fciles de utilizar que los lenguaje de mquina, pero d d d l i ti l dependen de la mquina en particular. El lenguaje por excelencia en esta clasificacin es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones Las instrucciones en lenguaje ensamblador son instrucciones conocidas como mnemotcnicos (mnemonics). Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora en esto se ejecutado directamente por la computadora en esto se diferencia esencialmente del lenguaje mquina, sino que requiere una fase de traduccin al lenguaje mquina. El programa original se denomina programa fuente y el t d id l j i ll programa traducido en lenguaje mquina se llama programa objeto. El traductor de programas fuente a objeto es un programa llamado ensamblador (assembler) y existe en casi todas las computadoras. SCRA TEORIA DE LENGUAJ ES todas as co putado as Grado de independencia de la i L mquina: Lenguajes de medio nivel Tienen algunas de las caractersticas de los Tienen algunas de las caractersticas de los lenguajes de bajo nivel (posibilidad de acceso directo a posiciones de memoria, indicaciones para que ciertas variables se almacenen en los registros del microprocesador, etc...) aadidas a l ibilid d d j d t t d las posibilidades de manejo de estructuras de control y de datos de los lenguajes de alto nivel. Ejemplos de este tipo de lenguajes son el C y el Ejemplos de este tipo de lenguajes son el C y el FORTH. SCRA TEORIA DE LENGUAJ ES Grado de independencia de la mquina: L j d lt i l Lenguajes de alto nivel Tienen caractersticas superiores a los lenguajes de tipo bl d ti l ibilid d ensamblador, aunque no tienen algunas posibilidades de acceso directo al sistema. FORTRAN, COBOL y Pascal. F ilit l it d t t d Facilitan la escritura de programas con estructuras de datos complejas, la utilizacin de bloques, y procedimientos o subrutinas. Son fciles de aprender por los programadores En la Son fciles de aprender por los programadores. En la mayora de lenguajes se emplean palabras en ingls. El proceso de Traduccin es complejo. El i i l d i f t l El programa original se denomina programa fuente y el programa traducido en lenguaje mquina se llama programa objeto. El traductor de programas fuente a objeto es un programa llamado compilador o SCRA TEORIA DE LENGUAJ ES objeto es un programa llamado compilador o interprete. Dentro de los lenguajes de alto nivel se pueden destacar ti d l j i t d bj t it un tipo de lenguajes, orientados a objetos, que permiten definir tipos abstractos de datos (habitualmente denominados clases) que agrupan datos y mtodos (operadores funciones y procedimientos) (operadores, funciones y procedimientos). Los objetos son la instanciacin de una clase. Las clases se definen en tiempo de compilacin, y los objetos son definidos en ejecucin Las clases pueden objetos son definidos en ejecucin. Las clases pueden heredar propiedades de otras clases (herencia). El acceso a los datos de un objeto tan slo se hace a travs de sus mtodos (encapsulacin) Los mtodos travs de sus mtodos (encapsulacin). Los mtodos con un mismo nombre pueden manejar distintos tipos de objetos (polimorfismo), detectando el mtodo en tiempo de ejecucin la operacin que debe realizar sobre el j p q objeto (asociacin dinmica). Ejemplos de este tipo de lenguajes son Smalltalk, C++, Eiffel, Object Pascal y Turbo Pascal SCRA TEORIA DE LENGUAJ ES Forma de sus instrucciones: Lenguajes imperativos o procedimentales imperativos o procedimentales Son lenguajes orientados a instrucciones, es decir la unidad de trabajo bsica de estos lenguajes es la j g j instruccin o sentencia. Ejemplos de lenguajes imperativos son: Pascal, C, C++, Ada, FORTRAN, COBOL, Modula-2, Oberon, etc... Histricamente son los primeros lenguajes: FORTRAN, COBOL y ALGOL son los precursores y su influencia se ha propagado hasta la actualidad Este tipo de lenguajes se caracteriza por: Uso intensivo de variables. Estructura de programas basada en instrucciones. p g Manejo frecuente de las instrucciones de asignacin. Resolucin de algoritmos por medio de estructuras de control secuenciales, alternativas y repetitivas. SCRA TEORIA DE LENGUAJ ES Incorporacin de mecanismos de manejo de bloques. SCRA TEORIA DE LENGUAJ ES Forma de sus instrucciones: Los lenguajes d l ti declarativos Son lenguajes de muy alto nivel cuya notacin es muy prxima al problema real del algoritmo que resuelven. Hay prxima al problema real del algoritmo que resuelven. Hay dos tipos de lenguajes declarativos: lenguajes funcionales y lenguajes lgicos. Los lenguajes funcionales o aplicativos tienen todas sus g j p construcciones como llamadas a funciones matemticas. Ejemplos de lenguajes funcionales: LISP,CLOS], Scheme, APL, ML, Miranda, Hope, Haskell, Concurrent Clean,, etc... Los lenguajes lgicos definen sus instrucciones siguiendo un Los lenguajes lgicos definen sus instrucciones siguiendo un tipo de Lgica. El lenguaje de programacin lgica ms utilizado es el PROLOG, que utiliza la lgica causal. La programacin lgica maneja relaciones (predicados) entre p g g j (p ) objetos (datos). Las relaciones se especifican con reglas y hechos. La ejecucin de programas lgicos consiste en la demostracin de hechos sobre las relaciones por medio de preguntas Ejemplos de lenguajes lgicos: PROLOG SCRA TEORIA DE LENGUAJ ES preguntas. Ejemplos de lenguajes lgicos: PROLOG, Concurrent, PROLOG, Prolog++, GHC, Parlog, Vulcan, Polka. Forma de sus instrucciones Los lenguajes concurrentes Son los que permiten la ejecucin simultnea ("paralela" " t ") d d i t L i o "concurrente") de dos o varias tareas. La concurrencia puede ser una caracterstica propia del lenguaje, o el resultado de ampliar las instrucciones de un lenguaje no concurrente Ejemplos: Ada Concurrent C Concurrent concurrente. Ejemplos: Ada, Concurrent C, Concurrent Pascal, Concurrent Prolog, CSP, Argus, Actors, Linda, Monitors, Ccc32 compilador de C concurrente para Windows, etc... , Los lenguajes orientados a objetos (LOO). Actualmente existen ms de 2.000 lenguajes de alto nivel diferentes, de los cuales alrededor de un centenar son lenguajes orientados a objetos o lenguajes basados en objetos. Ejemplos: Smalltalk, C++, Object Pascal, Turbo Pascal, Delphi, CLOS, Prolog++, J ava y Eiffel. SCRA TEORIA DE LENGUAJ ES SCRA TEORIA DE LENGUAJ ES Por generaciones Por generaciones La primera generacin est constituida por los l j i bl d d ll d l lenguajes mquina y ensamblador desarrollados en los aos cuarenta y cincuenta. La segunda generacin comienza con el desarrollo del i il d d FORTRAN l 1958 primer compilador de FORTRAN en el ao 1958 y continua hasta mediados de los aos sesenta con la normalizacin por el American National Standard Institute (ANSI) de los lenguajes de programacin Institute (ANSI) de los lenguajes de programacin, ligados hasta ese momento a marcas comerciales. Se caracteriza por los lenguajes con asignacin esttica de memoria, es decir toda la memoria se asigna en tiempo , g p de compilacin. Estos lenguajes no tenan ni recursividad, ni manejaban estructuras dinmicas de datos. Ejemplos de estos lenguajes son FORTRAN y COBOL SCRA TEORIA DE LENGUAJ ES COBOL. La tercera generacin est ligada al trmino La tercera generacin est ligada al trmino programacin estructurada, y se desarrolla entre mediados de los aos sesenta y mediados de los aos setenta, aunque a nivel de lenguajes sus races estn en setenta, aunque a nivel de lenguajes sus races estn en el lenguaje Algol 60 (desarrollado a principios de los aos sesenta). Como caractersticas principales de los lenguajes de esta generacin son: uso de mdulos o subprogramas, variables locales, recursividad, y estructuras dinmicas. Ejemplos de estos lenguajes son: Algol 60, PL/I, Algol 68, Pascal, Modula, y C. L t i t t i d l j La cuarta generacin est caracterizada por lenguajes de muy alto nivel dedicados a tareas especficas, en muchos casos denominados herramientas. Gran parte de ellos estn dedicados a la gestin de bases de datos de ellos estn dedicados a la gestin de bases de datos y a la generacin de aplicaciones con herramientas CASE. El desarrollo de estos lenguajes se produce desde mediados de los aos setenta hasta finales de los SCRA TEORIA DE LENGUAJ ES ochenta. Ejemplos: SQL, DB2, DBASE, Ingress, Natural, Ideal, Application Factory, etc... La quinta generacin est asociada a los lenguajes de Inteligencia Artificial La mayor parte de este tipo de Inteligencia Artificial. La mayor parte de este tipo de lenguajes son versiones actualizadas o descendientes de los lenguajes Lisp y Prolog. El desarrollo intenso de estos lenguajes se produce desde principios de los aos g j p p p ochenta a principios de los noventa. Ejemplos: Common Lisp, Prolog, Parlog, ML, Haskell, Miranda, etc... Generacin orientada a objetos. surge a mediados de los aos ochenta, aunque el primer lenguaje orientado a objetos fue el Simula 67. Smalltalk se comenz a desarrollar a principios de los aos setenta, desembocando en el Smalltalk 80 El desarrollo del desembocando en el Smalltalk 80. El desarrollo del lenguaje Ada (basado en objetos, no orientado a objetos) a finales de los 70 y la proliferacin de las Interfaces Grficas de Usuario (IGU) a finales de los Interfaces Grficas de Usuario (IGU) a finales de los ochenta ha implicado la creacin de nuevos lenguajes o la ampliacin de lenguajes para introducir el paradigma de orientacin a objetos. Ejemplos: Simula, Smalltalk, C Obj t P l T b P l CLOS Obj tLi SCRA TEORIA DE LENGUAJ ES C++, Object Pascal, Turbo Pascal, CLOS, ObjectLisp, Eiffel, y Oberon. 2 Sistemas Formales 2. Sistemas Formales Consisten en un conjunto de palabras llamadas j p axiomas y un conjunto finito de relaciones, llamadas reglas de produccin o inferencias Ej l d Si F l l T d Ejemplos de Sistemas Formales: la Teora de conjuntos, el lgebra de Boole y la Forma Normal de Backus Normal de Backus. Son importantes para el diseo, la implementacin y el estudio de los lenguajes de programacin. Se utilizan en particular para especificar la sintaxis y la semntica de los lenguajes de programacin SCRA TEORIA DE LENGUAJ ES lenguajes de programacin. 3 Compiladores 3. Compiladores Un lenguaje de programacin se implementa g j p g p construyendo un traductor, el cual traduce programas que estn en el lenguaje de programacin en lenguaje de maquina que programacin en lenguaje de maquina que pueden ser ejecutados directamente por una computadora. p SCRA TEORIA DE LENGUAJ ES