You are on page 1of 7

Capitulo 1 - Sebesta ================= Que es un lenguaje de programacin?

Programacin : organizar clculos de manera que nuestros limitados sentidos sean suficientes para garantizar que el computo arroje los resultados esperados. Lenguaje : debe ayudarnos a escribir buenos programas fcil de leer! entender! y modificar" # $n lenguaje de programacin es una notacin formal y rigurosa para describir procesos computacionales a otros. 1.1 Razones para estudiar los conceptos de lenguajes de programacin : % &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 estn limitadas. +i conocemos las caracter,sticas de una (ariedad de lenguajes de programacin 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 : 1lculos 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 programacin esta en constante e(olucin 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 programacin. +i aprendemos los conceptos fundamentales de los lenguajes! entonces aprender nue(os lenguajes se (uel(e mas fcil. % /ejor entendimiento del significado de la implementacin : en muc0os casos! un entendimiento de las cuestiones de la implementacin 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 implementacin. La compresin de la implementacin 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 programacin 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 computacin : a (eces el desconocimiento de ciertas cuestiones sobre los lenguajes de programacin influyen en la aceptacin de otros nue(os.

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

% .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. 1aracteristica Legibilidad 2acilidad de .scritura ' ' ' ' ' ' 1onfiabilidad ' ' ' ' ' ' ' ' '

+encillezL3rtogonali ' dad .structuras de 1ontrol 5ipos de datos y .structuras Dise:o de +inta'is 6poyo a la 6bstraccin .'presi(idad 1omprobacion de 5ipos /anejo de .'cepciones 6liasing restringido ' ' '

;.E.; Legibilidad : la facilidad con la que los programas puede ser leidos y entendidos! debe ser considerada en el conte'to del dominio del problema. 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. /ultiplicidad de caracteristicas : tener mas de una manera de realizar una operacin a O a P; QQ aPP" +obrecarga de operadores : un solo simbolo tiene mas de un significado. +implicidad al e'tremo : asembler A demasiado sencillo A menos legible. 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. .s independiente del conte'to donde se ejecuta el programa. Demasiada ortogonalidad Acomplejidad innecesaria. 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

+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 .structuras: mientras mas facil y adecuada sea la definicion de datos y estructuras mayor sera la facilidad de lectura del programa. 1onsideraciones sintacticas: sinta'is O forma. 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. 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 ;.E.< 2acilidad de .scritura : que tan facilmente un lenguaje puede ser utilizado para crear programas en un dominio especifico. 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. !" 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. +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.: % 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. .'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. 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. !" .l c0equeo en tiempo de compilacin 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 ejecucin! tomar medidas correcti(as y continuar. 6liasing: es cuando se tiene ms de una referencia! metodo o nombre para la misma celda de memoria! es una 0erramienta de doble filo. Legibilidad y facilidad de escritura: ambos influyen en la confiabilidad! programas que

son dificiles de leer son dificiles tanto para escribir y modificar A mantener. ;.E.H 1osto: el costo final de un lenguaje de programacin depende de sus caracteristicas: 1osto de entrenamiento de los programadores para el uso del lenguaje depende de la simplicidad y ortogonalidad. 1osto de creacin del +-: escritura en dic0o lenguaje A facilidad de escritura 1osto de compilacin 1osto de ejecucin: los compiladores pueden utilizar tecnicas para aumentar o disminuir la (elocidad de ejecucin del codigo que produce A dise:o del lenguaje 1osto de implementacin 1osto para confiabilidad 1osto de mantenimiento: correccin y modificaciones para a:adir nue(as capacidades ;.E.> 3tros criterios: Portabilidad: es la facilidad con la cual los programas pueden ser mo(idos de una implementacin a otra. 9eneralidad: capacidad de ser aplicado a un gran n=mero de aplicaciones. Juena definicin: la integridad y la posicin del documento oficial del lenguaje. ;.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. 9rafico 1omputadora Ron 7eumann" /etodologias de la programacin: los problemas cada (ez mayores y complejos se resol(ian por las computadoras A los costos de K- disminuyeron y los costos de programacin aumentaron. Las nue(as metodologias de desarrollo de +- A de arriba 0acia abajo dise:o y refinamiento paso a paso A fueron resultados de una in(estigacin en desarrollo de +- en ;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. .l ultimo paso en la e(olucin del desarrollo de +- 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 ;.> 1lasificacin de los lenguajes de programacion: De acuerdo a su modelo de computacin Declarati(os: Que 0ace la computadora? son de mayor ni(el A son mas oriantados al punto de (ista del programador. 2uncionales: basados en la definicin y aplicacin recursi(a de funciones. +e basa em calculo lambda. $n programa se considera una funcin de entradas y salidas! definidas en terminos de funciones ms simples a tra()s de un proceso de refinamiento. Ejemplo: L&+PL+c0eme! /L! KasMell. 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 ejecucin! el sistema lo decide. Ejemplo: Prolog! Risi1alc.

&mperati(os: 1omo lo 0ace?! predominan por razones de desempe:o Fel algoritmo es especificado en gran detalle! se define un orden de ejecucinI. Ron 7eumann: el mas com=n y familiar! el modelo de computacin se basa en modificacin de (ariables! basados en sentencias Fprincipalmente de asignacinI. Ejemplo: 2ortran! Pascal! Jasic! 1 3rientado a 3bjetos: en (ez de (er la computacin como la operacin 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: +malltalM! 1S! 1PP! Na(a. 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: &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 ;.@ 1riterios de dise:o de lenguaje que estan en conflicto: 1onfiabilidad contra costo de ejecucin 2acilidad de escritura contra facilidad de lectura 2le'ibilidad contra seguridad 1.# M$todos de implementacin 1ompilacin: consiste en la traduccin de un programa escrito en lenguaje de alto ni(el a codigo maquina. .l proceso de traduccin es lento! pero una (ez terminado! la ejecucin es muy rapida. &nterpretacin pura: los programas son interpretados linea por linea por otro programa llamado interprete sin traduccin alguna! pero la ejecucin es mas lenta que el metodo de compilacin! 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 interpretacin. +istemas de implementacin 0ibrida: algunos lenguajes son un arreglo entre compiladores y la interpretacin pura! se traduce el programa a un lenguaje intermedio designado para permitir la facil interpretacin A bajo costo de traduccin y (elocidad de ejecucin media A mejor que la interpretacin pura A las sentencias de codigo son decodificadas solo una (ez. %in&er: es una programa que toma todos los objetos generados en los primeros pasos de compilacin! 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. 'reprocesador: es un programa que procesa un programa inmediatamente antes que el programa sea compilado! sus instrucciones son insertadas en los programas.

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