You are on page 1of 7

Capitulo 1 - Sebesta ================= ¿Que es un lenguaje de programación?

Programación : organizar cálculos de manera que nuestros limitados sentidos sean suficientes para garantizar que el computo arroje los resultados esperados. Lenguaje : debe ayudarnos a escribir buenos programas fácil de leer! entender! y modificar" # $n lenguaje de programación es una notación formal y rigurosa para describir procesos computacionales a otros. 1.1 Razones para estudiar los conceptos de lenguajes de programación : % &ncrementan la capacidad para e'presar ideas : la complejidad con que e'presamos nuestras ideas esta ligada al poder e'presi(o del lenguaje en el cual nos estamos comunicando. Los programadores tambi)n tienen un problema similar durante el desarrollo del soft*are! el lenguaje empleado para el desarrollo del soft*are pone limites en las estructuras de control! de datos y de abstracciones que pueden ser utilizadas! por tanto la forma de los algoritmos que construyen tambi)n están limitadas. +i conocemos las caracter,sticas de una (ariedad de lenguajes de programación podemos reducir estas limitaciones en el desarrollo del +- %# .legir el correcto. % /ejorara los conocimientos para elegir lenguajes apropiados : muc0os de los programadores eligen el lenguaje con el que esta familiarizados! aunque este no sea el adecuado. +i conocemos las fortalezas y debilidades de una (ariedad de lenguajes podemos escoger el que mejor se adapte a los requerimiento. Ejemplo : 1álculos num)ricos : 2345467! 1! 6da 8 5oma de decisiones : /L! P43L39! L&+P. % &ncrementa la capacidad para aprender nue(os lenguajes : el dise:o de metodolog,as! 0erramientas para el desarrollo de +- y los lenguajes de programación esta en constante e(olución por lo que es esencial un aprendizaje continuo. .l proceso de aprender nue(os lenguajes es dif,cil! mas para aquellos que creen que conociendo ; o < lenguajes es suficiente y nunca 0an e'aminado los conceptos generales de un lenguaje de programación. +i aprendemos los conceptos fundamentales de los lenguajes! entonces aprender nue(os lenguajes se (uel(e mas fácil. % /ejor entendimiento del significado de la implementación : en muc0os casos! un entendimiento de las cuestiones de la implementación permite entender porque los lenguajes fueron dise:ados de esa manera! algunos errores solo pueden ser encontrados y corregidos por un programador que conoce relati(amente los detalles de implementación. La compresión de la implementación tambi)n permite (isualizar como la computadora ejecuta (arias construcciones de los lenguajes. Ejemplo : los programadores que no entienden como se realiza la recursi(idad! con frecuencia no saben que el algoritmo recursi(o suele ser menor que el algoritmo iterati(o equi(alente. % &ncrementa la capacidad de dise:ar nue(os lenguajes : un e'amen critico de los lenguajes de programación ayuda a dise:ar sistemas complejos. Ejemplo: la mayor,a de los sistemas de +- requieren que el usuario interact=e con el sistema recorriendo una lista de men=s y comandos. % 6(ance general de la computación : a (eces el desconocimiento de ciertas cuestiones sobre los lenguajes de programación influyen en la aceptación de otros nue(os.

.G>GI! P43L39 .<.@ Lenguajes de proposito general : .. . Metodología de programación: ...E 1iretarios de . E% Preferencia personal: la diferencia en las preferencias 0ace poco probable que e'ista un lenguaje uni(ersalmente aceptado.s importante conocer como funcionan los LP.<. Ejemplo: PLL+ A para las computadoras mainframe de &J/ JL&++ A tele(isión digital.. . .< 6plicaciones de negocio : el uso de ordenadores para aplicaciones de negocio comenzo en .(olución: busqueda continua de 0acer mejor las cosas.H Programación de sistemas: el +.3. Ejemplo: L&+P F.<. /ediados de los C?s : programación orientada a objetos.4L es una combinación de +K y a*M Na(ascript: es un LP usado en ser(idores *eb y los na(egadores.. <% Proposito especial: lenguajes dise:ados con un dominio de problema especifico. .<.<. .> Lenguajes de guiones FscriptingI: es un lenguaje de programación para poner una lista de comandos! llamadas o scrip en un arc0i(o para ser ejecutado. 6L93 A lenguaje ensamblador !" $ni' esta escrito casi en su totalidad en 1 F.(alución de un lenguaje: ̣ ¿Que 0ace a un lenguaje e'itoso? % Poder e'presi(o A facilidades de abstracción. y todas las 0erramientas de programación constituyen el soft*are el cual se utiliza continuamente por lo tanto debe proporcionar una rapida ejecución. 2ines de los @?s la eficiencia de las personas se (uel(e mas importante A legibilidad! mejores estructuras de control 2ines de los B?s : abstracción de datos..GH?I fue creada para aplicaciones cientificas las cuales usan simples estructuras de datos! pero requieren grandes calculos arimentos en punto flotante.GCGI lo que 0a 0ec0o que sea relati(amente facil de portar o mo(er a diferentes maquinas. Los paradigmas poseen estilos de programación muy diferentes e influencian la manera en la cual los programadores (en los algoritmos.< Dominios de Programación ¿Porque e'isten tantos lenguajes? .. Ejemplo : 2345467 . . % 2acilidad de uso para un no(ato % 2acilidad de implementación % 1ompiladores e'elentes .E &nteligencia 6rtificial : se caracteriza por el uso de simbolos antes que los calculos numericos! este tipo de programación requiere mas fle'ibilidad que otros. Ejemplo: +KF&nteprete de comandoI! a*MFgeneracion de informesI P. Ejemplo: 13J3L F.% .<.. 6plicaciones cientificas : la primera computadora F.Importancia del estudio de las estructuras de los lengaujes de programación : Los LP influyen en la manera en que los programadores formulan las soluciones a los problemas.G@?I Kojas de 1alculo! Jase de Datos " . >?s y comienzos de los @?s aplicaciones simples! la preocupación Aeficiencia de la maquina.G>?! se desarrollaron equipos y lenguajes especiales.

scritura ' ' ' ' ' ' 1onfiabilidad ' ' ' ' ' ' ' ' ' +encillezL3rtogonali ' dad . . /ultiplicidad de caracteristicas : tener mas de una manera de realizar una operación a O a P.'presi(idad 1omprobacion de 5ipos /anejo de . Demasiada ortogonalidad Acomplejidad innecesaria. Las caracteristicas que afectan la legibilidad son : +implicidad : un lenguaje con un gran n=mero de componentes basicos es mas dificil de aprender que uno con un peque:o numero de componentes Fsimplicidad O limitada ortogonalidadI 1uando se utiliza un lenguaje muy grande se tiende a aprender un subconjunto del mismo e ignorar sus demas caracteristicas A problema. Legibilidad : la facilidad con la que los programas puede ser leidos y entendidos! debe ser considerada en el conte'to del dominio del problema.s independiente del conte'to donde se ejecuta el programa.E. 1aracteristica Legibilidad 2acilidad de .% . +implicidad al e'tremo : asembler A demasiado sencillo A menos legible.structuras de 1ontrol 5ipos de datos y .structuras Dise:o de +inta'is 6poyo a la 6bstracción .'cepciones 6liasing restringido ' ' ' . P ortogonalidad O % e'cepciones para las reglas del lenguaje % e'cepciones O P regularidad en el dise:o P regularidad O P facil de leer! entender y aprender Falta de Ortogonalidad en C Kay < tipos de datos estructurados arrays : no struct : pueden ser de(ueltos por funciones Los parametros son pasados por (alor! e'cepto arrays A por referencia $n elemento de un array puede ser cualquier tipo! e'cepto (oid o una funcion .conomia! sponsor 7o e'iste un factor unico que determine que un lenguaje sea bueno! se debe considerar diferentes puntos de (ista! tanto del implementador como del programador.. QQ aPP" +obrecarga de operadores : un solo simbolo tiene mas de un significado.. 3rtogonalidad: cuando un peque:o conjunto de construcciones primiti(as pueden ser combinadas de forma relati(amente peque:a para construir las estructuras de datos y de control.

'presibilidad: la e'presibilidad puede 0acer referencia a (arias caracteristicas diferentes8 el lenguaje posee maneras con(enientes de e'presar los computos A countPP! for.E.E. 6liasing: es cuando se tiene más de una referencia! metodo o nombre para la misma celda de memoria! es una 0erramienta de doble filo. .E. Legibilidad y facilidad de escritura: ambos influyen en la confiabilidad! programas que .+entencias de 1ontrol: un programa que puede ser leido de arriba a abajo es mas facil de entender que un programa que requiere que el lector salte de una sentencia de control a otroa no adyacente a fin de seguir el orden de ejecucion 5ipos de Datos y . La mayoria de las caracteristicas que afectan la facilidad de escritura: +implicidad y 3rtogonalidad: un numero peque:o de construcciones primiti(as y un conjunto consistente de reglas para combinarlas FortogonalidadI es mejor que tener un gran numero de primiti(as.. 1onfiabilidad: un programa es confiable si se comporta de acuerdo a sus especificaciones bajo todas las condiciones! sus caracteristicas son: 10equeo de tipos: es la (erificacion de errores de tipo ya sea al momento de la compilacion o durante la ejecucion de un programa. !" . !" demasiada ortogonalidad puede perjudicar la facilidad de escritura! cuando los errores de programacion no pueden ser detectados puesto que practicamente cualquier combinacion de primiti(as es legal. 1onsideraciones sintacticas: sinta'is O forma. +oporte para la abstraccion: 6bstraccion: es la capacidad de definir y utilizar estructuras u operaciones complicadas de forma que muc0os detalles son ignorados! los LP soportan dos tipos de abstracciones.< 2acilidad de .l c0equeo en tiempo de compilación es deseable A cuanto antes se detecten los errores sera menos costosos de reparar /anejo de e'cepciones: se refiere a la 0abilidad de un programa de interceptar errores de tiempo de ejecución! tomar medidas correcti(as y continuar. . 2ormas y significados: la apariencia de las construcciones deberian al menos indicar parcialemnte su proposito! pero en algunos casos el siginificado de las palabras depende del conte'to en el que aparecen Ejemplo : static A fuera de una funcion A solo (isible a0i A dentro de una funcion A en tiempo de compilacion .: % 6bastraccion de Datos: el lenguaje deberia proporcionar facilidades para acercar la solucion del problema al dominio del problema A 5D6 FclaseI % 6bstraccion de procesos: por ejemplo la utilizacion de un subprograma para implementar un algoritmoAejemplo: algoritmo de ordenamiento! 0ago un subprograma y lo llamo cuando lo necesite! no necesito copiar el mismo codigo (arias (eces.scritura : que tan facilmente un lenguaje puede ser utilizado para crear programas en un dominio especifico. 2orma de los identificadores: si se restringe la longitud de los identificadores se reduce la legibilidad A no se puede utilizar nombres connotati(os Palabras especiales: algunos lenguajes permiten que las palabras especiales pueden ser usadas como nombres de (ariables A ambiguedades A problema...structuras: mientras mas facil y adecuada sea la definicion de datos y estructuras mayor sera la facilidad de lectura del programa.

que se inicio a principios de los C? es el dise:or orientado a objetos! cuyas caracteristicas principales son: 5D6! enlace dinamico y 0erencia A +mall5alM Fprimer lenguaje orientado a objetosI . Juena definición: la integridad y la posición del documento oficial del lenguaje.son dificiles de leer son dificiles tanto para escribir y modificar A mantener. $n programa se considera una función de entradas y salidas! definidas en terminos de funciones más simples a tra()s de un proceso de refinamiento.E. Ejemplo: L&+PL+c0eme! /L! KasMell. 1osto de creación del +-: escritura en dic0o lenguaje A facilidad de escritura 1osto de compilación 1osto de ejecución: los compiladores pueden utilizar tecnicas para aumentar o disminuir la (elocidad de ejecución del codigo que produce A dise:o del lenguaje 1osto de implementación 1osto para confiabilidad 1osto de mantenimiento: corrección y modificaciones para a:adir nue(as capacidades . +e basa em calculo lambda.. 2uncionales: basados en la definición y aplicación recursi(a de funciones.> 1lasificación de los lenguajes de programacion: De acuerdo a su modelo de computación Declarati(os: ¿Que 0ace la computadora? son de mayor ni(el A son mas oriantados al punto de (ista del programador.H &nfluencias en el dise:o de un lenguaje: 6rquitectura de las computadoras: la mayor parte de los lenguajes de losultimos H> a:os se 0an dise:ado basandose en la arquitectura de Ron 7eumann A estos lenguajes se denominan lenguajes imperati(os.l ultimo paso en la e(olución del desarrollo de +.A de arriba 0acia abajo dise:o y refinamiento paso a paso A fueron resultados de una in(estigación en desarrollo de +. 9eneralidad: capacidad de ser aplicado a un gran n=mero de aplicaciones.> 3tros criterios: Portabilidad: es la facilidad con la cual los programas pueden ser mo(idos de una implementación a otra. .disminuyeron y los costos de programación aumentaron.E. .GB?! donde fueron descubiertas < deficiencas de los LP: 10equeos de tipos incompleto +entencias de control inadecuadas 6 finales de los B? A uso de tipos abstracto para resol(er problemas. . Ejemplo: Prolog! Risi1alc.H 1osto: el costo final de un lenguaje de programación depende de sus caracteristicas: 1osto de entrenamiento de los programadores para el uso del lenguaje depende de la simplicidad y ortogonalidad. Logicos o Jasados en 4estricciones: basados en la logica proposicional! el modelo computacional intenta encontrar (alores que satisfagan ciertas relaciones! usando la busqueda de objeti(os a partir de una serie de reglas logicas A no 0ay un orden de ejecución! el sistema lo decide..en . . Las nue(as metodologias de desarrollo de +.. 9rafico 1omputadora Ron 7eumann" /etodologias de la programación: los problemas cada (ez mayores y complejos se resol(ian por las computadoras A los costos de K..

. %in&er: es una programa que toma todos los objetos generados en los primeros pasos de compilación! la informacion de todos los recursos necesarios FbibliotecasI! quita aquellos recursos que no se necesitan y enlaza el codigo objeto suLs bibliotecaLs con lo que finalmente produce un fic0ero ejecutable.l proceso de traducción es lento! pero una (ez terminado! la ejecución es muy rapida. Ejemplo: +malltalM! 1S! 1PP! Na(a.@ 1riterios de dise:o de lenguaje que estan en conflicto: 1onfiabilidad contra costo de ejecución 2acilidad de escritura contra facilidad de lectura 2le'ibilidad contra seguridad 1. 'reprocesador: es un programa que procesa un programa inmediatamente antes que el programa sea compilado! sus instrucciones son insertadas en los programas.# M$todos de implementación 1ompilación: consiste en la traducción de un programa escrito en lenguaje de alto ni(el a codigo maquina. . &nterpretación pura: los programas son interpretados linea por linea por otro programa llamado interprete sin traducción alguna! pero la ejecución es mas lenta que el metodo de compilación! requiere mas espacio y ademas del codigo fuente necesita la Ttabla de simbolosU(contiene el tipo y/o atributo de cada nombre definido por el usuario) para la interpretación. Ron 7eumann: el mas com=n y familiar! el modelo de computación se basa en modificación de (ariables! basados en sentencias Fprincipalmente de asignaciónI. +istemas de implementación 0ibrida: algunos lenguajes son un arreglo entre compiladores y la interpretación pura! se traduce el programa a un lenguaje intermedio designado para permitir la facil interpretación A bajo costo de traducción y (elocidad de ejecución media A mejor que la interpretación pura A las sentencias de codigo son decodificadas solo una (ez. .&mperati(os: ¿1omo lo 0ace?! predominan por razones de desempe:o Fel algoritmo es especificado en gran detalle! se define un orden de ejecuciónI. Ejemplo: 2ortran! Pascal! Jasic! 1 3rientado a 3bjetos: en (ez de (er la computación como la operación de un procesador monolitico! la (e como interacciones entre objetos semi%independientes! cada uno de los cuales tiene su propio estado interno y funciones para manipular el estado. Ejemplo: &d! Ral! +isal 1oncurrentes: +4! lyri' Lenguajes agregados: lenguajes para trabaar con formatos especiales de datos como: Ejemplo: +tring A+73J3L y &con arrays A base de datos A +QL matrices A /at0labL3cta(e . 3tros: De flujo de datos: modelan la computacion como el flujo de informacion FtoMensI entre nodos funcionales primiti(os! pro(ee un modelo paralelo A los nodos son disparados por el arribo de toMens de entrada y pueden operar de manera concurrente.

Ejemplo: $ni' : un antiguo +. Jorland 1PP : un entorno para 1 y 1PP.1. /icrosoft Risual +tudio : un entorno de programación para la programación en -indo*s. . .3.sta colección puede consistir solo en un arc0i(o de sistema! un editor de te'tos! un enlazador o un compilador. 3 puede incluir una gran colección de 0erramientas integrados que pueden ser accedidos por una uniforme interface de usuario. y una coleccion de 0erramientas Aproblema A tenia una interfaz comun entra sus 0erramientas A dificultdad de uso y aprendizaje.( )ntorno de programación: un entorno de programación es una colección de 0erramientas usadas en el desarrollo del +-.