Download lenguajes de programación
Document related concepts
Transcript
Teoría y Aplicaciones de la Informática I Lenguajes de Programación Introducción Las computadoras pueden realizar diferentes clases de tareas y para ello utilizan apenas un conjunto básico de operaciones básicas: - lógicas. - aritméticas. - de entrada y salida de datos. - de control. Este conjunto de operaciones se denota con números binarios (series largas de 1s y 0s) en lo que se denomina “LENGUAJE MÁQUINA”. Este lenguaje es muy difícil de utilizar y su modo de expresión es muy lejano al nuestro, por lo que el trabajo de los programadores se complica mucho. De ahí surge la necesidad de inventar un mecanismo facilite la tarea de la programación. Teoría y Aplicaciones de la Informática I Lenguajes de Programación Conceptos y definiciones fundamentales El mecanismo que soluciona el problema de la comunicación entre humanos y computadoras se denomina Lenguaje de Programación. Un LENGUAJE DE PROGRAMACIÓN es una notación sistemática a través de la cual describimos procedimientos de cómputo. Un procedimiento de cómputo es un conjunto de pasos que una máquina puede realizar para resolver un problema. El desarrollo de Lenguajes de Programación adecuados permite el uso óptimo de los recursos de hardware con que se cuenta. Un Lenguaje de Programación está definido por una gramática (sintaxis) o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de símbolos utilizados. La gramática determina si una sentencia escrita en un lenguaje está o no bien formada. Además de la gramática (para formar sentencias) se precisa dar un significado a cada frase formada, de esto se encarga la semántica del lenguaje. Clasificación de los Lenguajes de Programación Existen diversas formas de clasificar a los lenguajes de programación: a) Según su proximidad al lenguaje máquina o al lenguaje de las personas (lenguaje natural). b) Según su forma de trabajar. c) Según la tarea para la que fueron concebidos. d) Según la filosofía de sus creadores. e) Según su orden de aparición (generaciones), etc. Teoría y Aplicaciones de la Informática I Lenguajes de Programación Lenguajes de alto y bajo nivel Los lenguajes pueden ser de alto y bajo nivel; (también hay un nivel intermedio entre estos dos). Los lenguajes de bajo nivel: Son dependientes de la máquina, es decir, están diseñados para ejecutarse en una computadora determinada. Son complicados de entender y de usar; no son amigables. Los programas escritos en ellos son generalmente muy largos y complejos ya que especifican el flujo de los datos paso a paso. Ejemplos de éstos lenguajes es el lenguaje máquina. Los lenguajes de alto nivel: Son independientes de la máquina. Tienen mayor cercanía con el lenguaje natural. Son más sencillos de comprender y utilizar. Los programas generados suelen tener menor complejidad y se ahorra tiempo de escritura. Se utilizan sentencias más cortas para especificar una tarea dada. No se necesita especificar el tratamiento exacto que se da a los datos, sino lo que se espera en el resultado. Se incluyen rutinas de uso frecuente (bibliotecas de funciones) que facilitan la tarea de programar. Como ejemplos tenemos: PASCAL, ADA, COBOL, etc. Obs: Los primeros lenguajes que existieron eran todos de bajo nivel. A la medida del paso del tiempo se desarrollaron los lenguajes de alto nivel, hasta llegar a los que hoy llamamos lenguajes de muy alto nivel por su gran similitud con el lenguaje natural. Hoy se utilizan tanto los lenguajes de nivel muy alto, alto y bajo, dependiendo de la tarea a realizar. Teoría y Aplicaciones de la Informática I Lenguajes de Programación Clasificación de los lenguajes de alto nivel Lenguajes imperativos o procedurales: son aquellos en que el estado del programa se puede definir con precisión indicando el valor de cada una de las variables que se utilizan. El programa se ejecuta cambiando los valores de las variables en forma metódica y sucesiva. Ej: C, PASCAL. Entre los lenguajes procedurales una clase especial la forman los llamados lenguajes concurrentes que permiten la presencia de varios procesos simultáneos que se comunican y sincronizan de modo que realizen la tarea específica. Lenguajes declarativos: los programas se ejecutan mediante la aplicación sucesiva de funciones o expresiones lógicas. Ej: LISP, PROLOG. Lenguajes orientados a objetos: el diseño de los programas se basa en los datos y la estructura de los mismos. En cada objeto se incluyen los datos y las operaciones sobre ellos (encapsulamiento). Ej: SMALLTALK. Lenguajes orientados al problema: pretenden solucionar problemas específicos, hacen énfasis en la entrada y la salida antes que en el procesamiento de los datos. Lenguajes naturales. Teoría y Aplicaciones de la Informática I Lenguajes de Programación Evolución histórica de los lenguajes de programación Resulta instructivo examinar una historia breve del desarrollo de los lenguajes de programación; además se puede establecer una clasificación atendiendo al desarrollo de los lenguajes desde la aparición de las computadoras. Los comienzos Primeros algoritmos escritos en tablas de arcilla (1500 – 3000 a.C.) en Mesopotamia. No tenían sentencias condicionales (si se cumple <cond>, hacer <sentencias>). Si había más de una posibilidad, repetían el algoritmo con algunas modificaciones. Las iteraciones se expresaban de manera explícita, repitiendo las veces que fuera necesario. No se superó este nivel de análisis hasta Euclides (300 a.C.) quien describe un algoritmo para hallar el máximo común divisor de un conjunto de enteros. Los casos mencionados son aislados y no representan un desarrollo continuo de notación formal para obtener algoritmos. Teoría y Aplicaciones de la Informática I Lenguajes de Programación Historia Reciente Charles Babbage (1792 – 1871) desarrolla sus máquinas “Diferencial” y “Analítica”. Colabora con él Ada Augusta, Condesa de Lovelace, quien es considerada como la primera programadora. Ella desarrolló programas con un esquema parecido al de los lenguajes imperativos posteriores e inició el área informática cuyo objetivo es el estudio y análisis de los algoritmos. Posteriormente (1930 y 1940) surgen numerosas notaciones para expresar procedimientos de cómputo. Estos dieron lugar al desarrollo posterior. Primera generación (1GL): lenguajes máquina y ensambladores. Cada instrucción del lenguaje ensamblador se corresponde directamente con las instrucciones en lenguaje máquina. En lugar de usar 1s y 0s se utilizan abreviaturas denominadas mnemotécnicos. Segunda generación (2GL): incluye a los primeros lenguajes imperativos de alto nivel (FORTRAN y COBOL). Estos eran muy diferentes a los que conocemos hoy: el FORTRAN, por ejemplo, tenían muy poca flexibilidad, el usuario no podía definir funciones, las variables no podían tener más de 2 caracteres como nombre, etc. Tercera generación (3GL): lenguajes de alto nivel, imperativos; se utilizan hasta hoy. El iniciador de esta generación fue el ALGOL, a partir del cual se desarrollan el PASCAL, ADA y APL. Con estos lenguajes surgen las ideas de bloques y procedimientos, así como las de tipo de datos y chequeos de tipos, se utilizan palabras reservadas, sentencias iterativas, cadenas de caracteres, procedimientos recursivos, etc. Posteriormente se incluyó la posibilidad de definir datos abstractos y manejar excepciones. Cuarta generación (4GL): orientado a aplicaciones de gestión y manejo de bases de datos. Utilizan sentencias expresadas en inglés para pedir a la computadora que realice acciones, sin necesidad de especificar cómo realizarlas. Algunos ejemplos son SQL Quinta generación (5GL): orientados a la inteligencia artificial y al procesamiento del lenguaje natural. Teoría y Aplicaciones de la Informática I Lenguajes de Programación Aparición de lenguajes de programación de alto nivel APL PROLOG C Modula2 SNOBOL LISP ALGOL Algol 68 COBOL Simula 67 PASCAL ADA LISP PL/I FORTRAN EUCLID BASIC 1955 1960 1965 1970 1975 1980 1985