Lenguajes de Programación Introducción 1. Introducción e Historia La finalidad de un lenguaje de programación es "decirle" al ordenador qué es lo que tiene que hacer paso a paso. Esta definición da que pensar: no parecen muy listos los ordenadores. Debido a esto es muy frecuente la expresión: “Los ordenadores son tontos” Necesitan de alguien que les indique lo que tienen que hacer. Y ese "alguien" es el programador. Pero una vez que saben qué hacer y cómo, lo pueden repetir siempre que deseen, sin error posible, y a velocidades que ya quisieran los programadores. Desgraciadamente, el ordenador y las personas hablan idiomas diferentes: el ordenador entiende unas determinadas secuencias de ceros y unos, llamado lenguaje o código máquina. El programador debe darle instrucciones en ese formato. Este lenguaje o código máquina es difícil de aprender, difícil de utilizar e incluso aún más difícil de modificar. Se pensó que sería más útil trabajar en un lenguaje parecido o similar al lenguaje hablado, al lenguaje que usamos diariamente. Una vez expresado el conjunto de instrucciones en ese lenguaje natural, será necesario traducir ese lenguaje a código máquina. Pero esta labor se puede programar, y que sea el ordenador el que automáticamente haga la traducción a lenguaje máquina. Y de esta forma surgieron los lenguajes llamados de alto nivel, y los programas encargados de la traslación: los traductores. Programa Podemos definir un programa como un conjunto ordenado de instrucciones expresadas en un lenguaje de programación. Un lenguaje de programación, al igual que un lenguaje natural, estaría constituido por: Un conjunto de símbolos: letras, símbolos de puntuación, etc. Una serie de normas para la correcta combinación del anterior conjunto. Combinando correctamente los símbolos será capaz de crear programas. Los programas serán más sencillos de escribir cuanto más cercano sea el lenguaje de programación al lenguaje humano. En realidad son muy parecidos al lenguaje dominante en el mundo de la informática: el inglés. Pero no se asuste, esto no es un curso de idiomas. Evolución Histórica Se ha comentado previamente que el primer lenguaje de programación fue el lenguaje máquina. A continuación aparece el Lenguaje Ensamblador. En este se utilizan símbolos y códigos nemotécnicos (códigos cuyos nombres recuerdan la acción que representan) para especificar instrucciones del código máquina. Cada instrucción del código máquina se corresponde con una instrucción en ensamblador. Era un primer avance para simplificar las tareas de programación. En los años 50 comienzan a aparecer lenguajes de carácter más humano. En 1956 aparece el lenguaje FORTRAN (FORmula TRANslation) de la mano de IBM. Este lenguaje conserva algunos vínculos con la máquina. Es un lenguaje que aún se usa en entornos muy específicos. En 1958 aparece el lenguaje ALGOL (ALGOritmic Language). En 1959 se crea el LISP en el MIT (Instituto Tecnológico de Massachusetts), lenguaje orientado al área de Inteligencia Artificial. En 1960 el DoD (Departamento de Defensa de EE.UU.) crea el COBOL (Common Business Oriented Language), lenguaje orientado a la gestión y muy utilizado en banca y empresas en general. En la década de los 60 en la Universidad de Darmouth se desarrolla el BASIC (Beginners All-Purpose Symbolic Instruction Code), siendo éste un lenguaje de iniciación. En 1971 N. Wirth crea el PASCAL. Una de las principales características de este lenguaje es que es fuertemente estructurado. Será el que nos acompañe a lo largo de este curso. En la década de los 70 Dennis Ritchie crea el Lenguaje C. C es un lenguaje de alto y bajo nivel a la vez que ha presentado una evolución pareja a la del sistema operativo UNIX. A partir de ese momento la aparición de nuevos lenguajes y revisiones de los anteriores ha sido constante, sin mencionar numerosos lenguajes de programación desarrollados específicamente para tareas muy concretas. También han surgido todo tipo de variantes de los lenguajes anteriores con características de tipo visual o añadiendo la programación orientada a objetos. Como posibles ejemplos tenemos Visual C, Visual Basic, C++, Pascal Orientado a Objetos, Java. Las herramientas visuales permiten crear aplicaciones apoyándose en rutinas ya realizadas para el manejo de ventanas, menús desplegables, botones, etc. En el momento que se tienen claros los conceptos de programación básicos, el salto a este tipo de programación es sencillo. La orientación a objetos es una nueva aproximación a la hora de desarrollar una aplicación. Conceptualmente su diseño es más complejo, pero facilita la reutilización de los programas, con lo cual se gana tiempo y dinero. De todas formas, los conceptos de la programación estructurada y modular siguen siendo útiles en la programación orientada a objetos. En general todos los lenguajes de alto nivel tienen propiedades comunes: el uso de sentencias simples, existencia de variables, expresiones, estructuras de control y funciones. El lenguaje Pascal es quizás el más adecuado para aprender y consolidar dichos conceptos. 2. Clasificación Vamos a realizar una primera clasificación de los Lenguajes en función de tres criterios: 1. Según su proximidad al lenguaje máquina: o Lenguajes de bajo nivel: Son distintos para cada procesador: cada tipo de ordenador posee el suyo. Controlan directamente los recursos hardware de la máquina. Como ejemplos tenemos el lenguaje máquina o el ensamblador. o Lenguajes de alto nivel: Son independientes del procesador. Son más sencillos y legibles. Para ser ejecutados necesitan un traductor. Ejemplos: Pascal, Modula-2 o el lenguaje C. 2. Según el propósito del lenguaje: o Lenguajes de propósito general: como el Pascal o el C. o Lenguajes de propósito específico: por ejemplo, Cobol estaría orientado a la gestión o Fortran al cálculo científico. 3. Según su orientación: o Lenguajes orientados al procedimiento: son lenguajes imperativos como Pascal en los que se describen los pasos que han de darse para resolver un determinado problema. Se explica como resolver un problema. o Lenguajes orientados al problema: como por ejemplo Prolog. En estos lenguajes lo que se describe es el problema en sí; son de tipo declarativo. En este curso se estudiará un lenguaje de alto nivel, de propósito general y orientado al procedimiento o imperativo: el lenguaje Pascal. Lenguajes de Alto Nivel Los lenguajes de alto nivel buscan: Ser un medio sencillo para expresar la solución de problemas. Simplicidad: un conjunto reducido de operaciones básicas y un conjunto de reglas para combinar las anteriores. Eficiencia, de manera que permitan una traducción rápida y un código máquina eficiente. Legibilidad, facilidad de comprensión del código, presentando la posibilidad de añadir comentarios. Todo esto hace que sea más sencillo depurar o modificar el código, incluso por personas que no lo han realizado. Portabilidad: los lenguajes de alto nivel son independientes de la máquina para la que se esté haciendo un determinado desarrollo. Veamos a continuación que elementos son necesarios para la realización de un programa. 3. Entornos de programación Un entorno de programación es un programa o conjunto de programas que engloban todas las tareas necesarias para el desarrollo de un programa o aplicación, que serían los siguientes: Editor del programa. Compilación y enlazado. Ejecución. Depuración. Hay quien además incluye la creación de documentación complementaria (manual de usuario, etc.) dentro de estas funciones. Este tipo de entornos incorporan numerosas herramientas, utilidades, aplicaciones ya desarrolladas, ejemplos, tutoriales, etc. Editores El primer elemento necesario para el desarrollo de un programa es un editor de texto. Un editor es un programa que nos permite escribir (editar) las instrucciones del programa, y posteriormente guardar el programa en un fichero. Cualquier editor de texto se puede utilizar para editar programas, con la única precaución de que a la hora de guardar, salvar o almacenar el programa sólo se almacene el texto sin opciones de formato: negrita, estilos, itálica, etc. Lo normal es utilizar un editor especialmente preparado para la programación. Estos tienen facilidades para la corrección de errores, destacan las palabras del lenguaje en colores, y en general facilitan la labor del programador. Traductores: compilación Una vez editado nuestro programa, es necesario traducirlo al único lenguaje que entiende el ordenador: el código máquina. Para ello son necesarios los traductores. Un traductor es un programa cuyo cometido es traducir un programa escrito en lenguaje de programación (que puede ser de alto o bajo nivel) a su correspondiente equivalente en lenguaje máquina. Depuradores Una vez editado y compilado el programa, es necesario ejecutarlo (run en inglés). Y no siempre funciona correctamente. Los depuradores son capaces de ejecutar el programa paso a paso. Esto, junto con todo un conjunto de facilidades, posibilita la localización de errores no evidentes. Fuente: Material extraído del sitio: www.aulamentor.es