Lip
Lip
in. 4 Algunas clasificaciones de los lenguajes de programacin. 5 Traductores. 1.- CONCEPTO DE LENGUAJE DE PROGRAMACIN Los ordenadores no hablan nuestro idioma, son maquinas y como tales, necesitan un lenguaje especifico pensado por el hombre para ellas. Adems, necesitan constantemente interpretar todas las instrucciones que reciben. Dada la dificultad de comunicacin insalvable entre el computador y el programador, pronto aparecieron lenguajes de programacin que hacen posible la comunicacin con el microprocesador, utilizando trminos y smbolos relacionados con el tipo de problema que se debe resolver, mediante el empleo de herramientas que brinda la informtica. Estos lenguajes permiten, por un lado, escribir las operaciones que son necesarias realizar para resolver el problema de un modo parecido a como se escribira convencionalmente (es decir, redactar adecuadamente el algoritmo de resolucin del problema) y, por el otro, se encarga de traducir el algoritmo al lenguaje mquina (proceso conocido como compilacin) con lo que se le confiere al programa la capacidad de corre (ser ejecutado) en el ordenador. El ordenador es en realidad tan slo una mquina virtual, capaz de resolver todos los problemas que los usuarios seamos capaces de expresar mediante un algoritmo (programa). No obstante, es complicado definir qu es y qu no es un lenguaje de programacin. Se asume generalmente que la traduccin de las instrucciones a un cdigo que comprende la computadora debe ser completamente sistemtica. Normalmente es la computadora la que realiza la traduccin. A continuacin, hemos redactado unas cuantas definiciones de los lenguajes de programacin. Un lenguaje de programacin es una notacin para escribir programas, a travs de los cuales podemos comunicarnos con el hardware y dar as las rdenes adecuadas para la realizacin de un determinado proceso. Un lenguaje esta definido por una gramtica o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de smbolos utilizados. Los distintos niveles de programacin existentes nos permiten acceder al hardware, de tal forma que segn utilicemos un nivel u otro, as tendremos que utilizar un determinado lenguaje ligado a sus correspondientes traductores. Conjunto de normas lingsticas (palabras y smbolos) que permiten escribir un programa y que ste sea entendido por el ordenador y pueda ser trasladado a ordenadores similares para su funcionamiento en otros sistemas.
Conjunto de instrucciones, ordenes y smbolos reconocibles por autmata, a travs de su unidad de programacin, que le permite ejecutar la secuencia de control deseada. Al conjunto de total de estas instrucciones, ordenes y smbolos que estn disponibles se le llamar lenguajes de programacin del autmata. El programa esta formado por un conjunto de instrucciones, sentencias, bloques funcionales y grafismos que indican las operaciones a realizar. Las instrucciones representan la tarea ms elemental de un programa: leer una entrada, realizar una operacin, activar una salida, etc. La sentencia representa el mnimo conjunto de instrucciones o sentencias que realizan una tarea o funcin compleja: encontrar el valor de una funcin lgica en combinacin de varias variables, consultar un conjunto de condiciones, etc. El bloque funcional es el conjunto de instrucciones o sentencias que realizan una tarea o funcin compleja: contadores, registros de desplazamientos, transferencias de informacin, etc. Todos estos elementos estn relacionados entre s mediante los smbolos o grafismos. Es un conjunto de palabras y smbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute. Los lenguajes de programacin deben tener instrucciones que pertenecen a las categoras ya familiares de entrada/salida, calculo/manipulacin, de textos, lgica/comparacin, y almacenamiento/recuperacin. 2.- HISTORIA Y EVOLUCIN DE LOS LENGUAJES DE PROGRAMACIN Los primeros lenguajes de programacin surgieron de la idea de Charles Babagge, la cual se le ocurri a este hombre a mediados del siglo XIX. Era un profesor matemtico de la universidad de Cambridge e inventor ingles, que a principios del Siglo XIX predijo muchas de las teoras en que se basan los actuales ordenadores. Consista en lo que l denominaba la mquina analtica, pero que por motivos tcnicos no pudo construirse hasta mediados del Siglo XX. Con l colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realiz programas para aqulla supuesta mquina de Babagge, en tarjetas perforadas. Como la mquina no lleg nunca a construirse, los programas de Ada, lgicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la programacin, sobre todo si observamos que en cuanto se empez a programar, los programadores utilizaron las tcnicas diseadas por Charles Babagge, y Ada, que consistan entre otras, en la programacin mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que estos dos genios de antao, se adelantaron un siglo a su poca, lo cual describe la inteligencia de la que se hallaban dotados. En 1823 el gobierno Britnico lo apoy para crear el proyecto de una mquina de diferencias, un dispositivo mecnico para efectuar sumas repetidas. Pero Babagge se dedico al proyecto de la mquina analtica, abandonando la maquina de diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creacin de Charles Jacquard (francs). Este hombre era un fabricante de tejidos y haba creado un telar que poda reproducir automticamente patrones de tejidos, leyendo la informacin codificada en patrones de agujeros perforados en tarjetas de papel rgido. Entonces Babagge
intent crear la mquina que se pudiera programar con tarjetas perforadas para efectuar cualquier clculo con una precisin de 20 dgitos. Pero la tecnologa de la poca no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribucin es decisiva, ya que los ordenadores actuales responden a un esquema anlogo al de la mquina analtica. En su diseo, la mquina constaba de cinco unidades bsicas: 1) Unidad de entrada, para introducir datos e instrucciones 2) Memoria, donde se almacenaban datos y resultados intermedios 3) Unidad de control, para regular la secuencia de ejecucin de las operaciones 4) Unidad Aritmtico-Lgica, que efecta las operaciones 5) Unidad de salida, encargada de comunicar al exterior los resultados. Charles Babbage, conocido como el "padre de la informtica" no pudo completar en aquella poca la construccin del computador que haba soado, dado que faltaba algo fundamental: la electrnica. El camino sealado de Babbage, no fue nunca abandonado y siguindolo, se construyeron los primeros computadores. Cuando surgi el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And Calculator), su programacin se basaba en componentes fsicos, o sea, que se programaba, cambiando directamente el Hardware de la mquina, exactamente lo que se haca era cambiar cables de sitio para conseguir as la programacin de la maquina. La entrada y salida de datos se realizaba mediante tarjetas perforadas. La dificultad de programar mquinas como la ENIAC de esta manera limitaba drsticamente su utilidad, y proporcionaba un fuerte incentivo para que se desarrollaran lenguajes de programacin ms orientados hacia la expresin de soluciones con la notacin de los problemas mismos. Los primeros lenguajes de programacin se conocieron como Lenguajes Ensambladores, un ejemplo es: TRANSCODE, desarrollado para la computadora FERUT. En los lenguajes ensambladores se define un cdigo especial llamado mnemnico para cada una de las operaciones de la mquina y se introduce una notacin especial para especificar el dato con el cual debe realizarse la operacin. A mediados de los aos 60 aparecieron los primeros lenguajes de propsito general como FORTRAN, FORTRAN IV, ALGOL, COBOL, BASIC, PL/I, ADA, C, C++, PASCAL, etc. pero el desarrollo de nuevas tecnologas, tanto en arquitectura de computadoras como en lenguajes de programacin, contina a paso acelerado, cada vez con mayor velocidad, el panorama est cambiando de una etapa de sistemas y lenguajes especialmente desarrollados para aplicaciones individuales. Los lenguajes de programacin actuales son los conocidos como Lenguajes visuales, como por ejemplo Visual Fox, Visual Basic, Visual C.
3.-PARADIGMAS DE PROGRAMACION Representan un enfoque particular o filosfico para la construccin del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. Tambin hay situaciones donde un paradigma resulta mas apropiado que otro. Tipos de paradigmas de programacin: Paradigmas Imperativo: Modelo abstracto que consiste en un gran almacenamiento de memoria donde la computadora almacena una representacin codificada de un calculo y ejecuta una secuencia de comandos que modifican el contenido de ese almacenamiento. Algoritmos + Estructura de Datos = Programa. Paradigmas Procedimentales - Modelos de Desarrollo: Orientado a Objetos, a Eventos, y a Agentes. Secuencia computacional realizada etapa a etapa para resolver el problema. Su mayor dificultad reside en determinar si el valor computado es una solucin correcta del problema. Paradigmas Declarativos. - Modelos de Desarrollo: Funcional, Lgico y de Flujo de Datos. Se construye sealando hechos, reglas, restricciones, ecuaciones, transformaciones y otras propiedades derivadas del conjunto de valores que configuran la solucin Paradigmas Demostrativos - Modelos de Desarrollo: Gentico. Cuando se programa bajo un paradigma demostrativo (tambin llamada programacin por ejemplos), el programador no especifica procedimentalmente como construir una solucin sino que presentan soluciones de problemas similares. Paradigmas Funcional: Modelo matemtico de composicin funcional donde el resultado de un calculo es la entrada del siguiente, y as sucesivamente hasta que una composicin produce el valor deseado. Paradigma Orientado a Objeto: disciplina de ingeniera de desarrollo y modelado de software que permite construir mas fcilmente sistemas complejos a partir de componentes individuales. Objetos + Mensajes = Programa.
Lenguajes de alto nivel: Es un lenguaje ms parecido al del programador. Es independiente de la mquina. Ventajas e inconvenientes: 1. Ventajas: a) Tiempo de formacin de los programas es relativamente corto. b) Las modificaciones y puestas a punto de los proyectos son ms fciles. c) Reduccin del coste de los programas. d) Transportabilidad. 1. Inconvenientes: a) Incremento del tiempo de ejecucin. b) No se aprovechan al 100% los recursos de la mquina. c) Aumento del tamao en memoria.
1. CARACTERSTICAS DE LOS LENGUAJES DE PROGRAMACIN DECLARATIVOS Los lenguajes declarativos estn orientados a buscar la solucin del problema, sin preocuparse por la forma de llegar a ello; es decir, el programador debe concentrarse en la lgica del algoritmo, ms que en el control de la secuencia. Los programas estn formados por un conjunto de definiciones o ecuaciones, las cuales describen lo que debe ser calculado, no en s la forma de hacerlo. Las variables slo pueden tener asignado un solo valor a lo largo de la ejecucin del programa, lo cual implica que no puede existir asignacin destructiva. Debido a esto, cobra especial importancia el uso del anidamiento y la recursividad. Las listas representan la estructura fundamental de datos. El orden de la ejecucin no resulta importante debido a que no existen efectos colaterales; es decir, que al calcular un valor, resulta imposible afectar el clculo de otros y con esto se puede afirmar que cualquier secuencia de ejecucin deber conducir al mismo resultado. Las expresiones o definiciones pueden ser usadas como valores y por lo tanto se pueden tratar como argumentos de otras definiciones. El control de la ejecucin no es responsabilidad del programador. 2. DESVENTAJAS DE LA PROGRAMACIN DECLARATIVA La principal desventaja de la programacin declarativa es que no puede resolver cualquier problema dado, sino que est restringida al subconjunto de problemas para los que el intrprete o compilador fue diseado. Otra desventaja de la programacin declarativa est relacionada con la eficiencia. Dado que es necesaria una fase de interpretacin extra, en la cual se deben evaluar todas las consecuencias de todas las declaraciones realizadas, el proceso es relativamente ms lento que en la programacin imperativa, en que los cambios de estado del sistema estn dados por instrucciones particulares y no por un conjunto de condiciones arbitrariamente grande.
3. VENTAJAS DE LA PROGRAMACIN DECLARATIVA A pesar de lo anterior existen algunas ventajas en el uso de la programacin declarativa. Entre las ventajas se destaca que la solucin de un problema se puede realizar con un nivel de abstraccin considerablemente alto, sin entrar en detalles de implementacin irrelevantes, lo que hace a las soluciones ms fcil de entender por las personas. La resolucin de problemas complejos es resuelta por el intrprete a partir de la declaracin de las condiciones dadas. La programacin declarativa es muy usada en la resolucin de problemas relacionados con inteligencia artificial, bases de datos, configuracin, y comunicacin entre procesos; sin embargo, ningn leguaje declarativo se aproxima en popularidad a los lenguajes imperativos. 4. EJEMPLOS DE LENGUAJES DECLARATIVOS Algunos lenguajes declarativos que se pueden mencionar son: PROLOG SQL HTML WSDL (Web Services Description Language) XML Stylesheet Language for Transformation
LENGUAJES DE PROGRAMACI?N IMPERATIVOS En ciencias de la computaci?n se llama lenguajes imperativos a aquellos en los cuales se le ordena a la computadora c?mo realizar una tarea siguiendo una serie de pasos o instrucciones, por ejemplo: Paso 1, solicitar n?mero. Paso 2, multiplicar n?mero por dos. Paso 3, imprimir resultado de la operaci?n. Paso 4, etc, El proceso anterior se puede realizar con un lenguaje imperativo como por ejemplo BASIC, C, C++, Java, Clipper, Dbase, C#, PHP, Perl, etc.
Dentro de la programaci?n imperativa, se tiene un conjunto de instrucciones que le indican al computador c?mo realizar una tarea. Los lenguajes imperativos se basan en comandos u ?rdenes que se le dan a la computadora para que haga algo, con el fin de organizar o cambiar valores en ciertas partes de la memoria. La ejecuci?n de estos comandos se realiza, en la mayor parte de ellos, secuencialmente, es decir, hasta que un comando no ha sido ejecutado no se lee el siguiente. Seg?n el dominio, o mejor dicho con el prop?sito que se utiliza el programa, se puede hablar de lenguajes de dominio espec?fico y de dominio general. 1. LENGUAJES IMPERATIVOS PROCEDURALES En los lenguajes tradicionales o procedurales, es la aplicaci?n quien controla qu? porciones de c?digo se ejecuta, y la secuencia en que este se ejecuta. La ejecuci?n de la aplicaci?n se inicia con la primera l?nea de c?digo, y sigue una ruta predefinida a trav?s de la aplicaci?n, llamando procedimientos seg?n sea necesario. Los lenguajes procedurales est?n fundamentados en la utilizaci?n de variables para almacenar valores y en la realizaci?n de operaciones con los datos almacenados. Algunos ejemplos son: FORTRAN, PASCAL, C, ADA, ALGOL, c En este tipo de lenguajes, la arquitectura consta de una secuencia de celdas, llamadas memoria, en las cuales se pueden guardar en forma codificada, lo mismo datos que instrucciones; y de un procesador, el cual es capaz de ejecutar de manera secuencial una serie de operaciones, principalmente aritm?ticas y booleanas, llamadas comandos. En general, un lenguaje procedural ofrece al programador conceptos que se traducen de forma natural al modelo de la m?quina. El programador tiene que traducir la soluci?n abstracta del problema a t?rminos muy primitivos, cercanos a la m?quina. Con un lenguaje procedural el usuario (normalmente ser? un programador) especifica qu? datos se necesitan y c?mo obtenerlos. Esto quiere decir que el usuario debe especificar todas las operaciones de acceso a datos llamando a los procedimientos necesarios para obtener la informaci?n requerida. Estos lenguajes acceden a un registro, lo procesan y bas?ndose en los resultados obtenidos, acceden a otro registro, que tambi?n deben procesar. As? se va accediendo a registros y se van procesando hasta que se obtienen los datos deseados. Las sentencias de un lenguaje procedural deben estar embebidas en un lenguaje de alto nivel, ya que se necesitan sus estructuras (bucles, condicionales, etc.) para obtener y procesar cada registro individual. 2. ALGUNOS LENGUAJES IMPERATIVOS Algunos lenguajes de programaci?n imperativos que se pueden mencionar son:
5.-TRADUCTORES De bajo nivel: Ensamblador: Es el traductor de los programas escritos en ensamblador y genera cdigo mquina; es decir directamente ejecutable por la maquina. De alto nivel: Interprete: Este tipo de traductores solo interpretan la informacin. Es decir: No generan un fichero ejecutable. El programa es controlado (simulado) por el interprete. Compilador: Lo que se realiza es; se toma el fichero con el cdigo fuente y se crea un programa ejecutable que se controla con el S. O. Es decir: Se parte del cdigo fuente y se genera un fichero ejecutable. O Ser enlazable por necesitar un linkador. Los errores se detectan en el proceso de compilacin. Se necesita el compilador propio para el cdigo fuente.
Proceso de compilacin:
Bibliografa: Joyanes, L. Zahonero, I. (2002), Programacin en C. http://www.frt.utn.edu.ar/sistemas/paradigmas/page22.html http://www.ilustrados.com/publicaciones/EEVZuAVVFyqAegcYul.php Alberto prieto, Antonio Lloris, Juan Carlos Torres. (2002), Introduccin a la informtica 2 edicin.