Anda di halaman 1dari 4

1

Resumen Capitulo 1 de Sebesta


Guillermo Pati no, Pablo Sanchez, Santiago Valdez, Mauro Vera
I. L ENGUAJE DE PROGRAMACI ON implementaci on. La compresi on de la implementaci on tambi en permite visualizar como la computadora ejecuta varias construcciones de los lenguajes. Ejemplo : los programadores que no entienden como se realiza la recursividad, con frecuencia no saben que el algoritmo recursivo suele ser menor que el algoritmo iterativo equivalente. nuevos lenguajes. Incrementa la capacidad de disenar Ejemplo: la mayoria de los sistemas de SW requieren que el usuario interact ue con el sistema recorriendo una lista de men us y comandos. Avance general de la computaci on. a veces el desconocimiento de ciertas cuestiones sobre los lenguajes de programaci on inuyen en la aceptaci on de otros nuevos. Importancia del estudio de las estructuras de los lenguajes de programaci on : Los LP inuyen en la manera en que los programadores formulan las soluciones a los problemas. Los paradigmas poseen estilos de programaci on muy diferentes e inuencian la manera en la cual los programadores ven los algoritmos. Es importante conocer como funcionan los LP. Metodolog a de programaci on: 50s y comienzos de los 60s aplicaciones simples, la preocupaci on era la eciencia de la maquina. Fines de los 60s la eciencia de las personas se vuelve mas importante era la legibilidad, mejores estructuras de control. Fines de los 70s, abstracci on de datos. Mediados de los 80s, programaci on orientada a objetos. I-B. Dominios de Programaci on

Programaci on : organizar c alculos de manera que nuestros limitados sentidos sean sucientes para garantizar que el computo arroje los resultados esperados. Lenguaje : debe ayudarnos a escribir buenos programas, f acil de leer,entender y modicar. Un lenguaje de programaci on es una notaci on formal y rigurosa para describir procesos computacionales a otros.

I-A. Razones para estudiar los conceptos de lenguaje de programacion Incrementan la capacidad para expresar ideas. La complejidad con que expresamos nuestras ideas esta ligada al poder expresivo del lenguaje en el cual nos estamos comunicando. Los programadores tambien tienen un problema similar durante el desarrollo del software, el lenguaje empleado para el desarrollo del software 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 tambien limitadas. Si conocemos las caracterAsticas estAn de una variedad de lenguajes de programaci on podemos reducir estas limitaciones en el desarrollo del SW, Elegir el correcto. Mejoran los conocimientos para elegir lenguajes apropiados. Muchos de los programadores eligen el lenguaje con el que esta familiarizados, aunque este no sea el adecuado. Si conocemos las fortalezas y debilidades de una variedad de lenguajes podemos escoger el que mejor se adapte a los requerimiento. Ejemplo : C alculos num ericos : FORTRAN, C, Ada Toma de decisiones : ML, PROLOG, LISP. Incrementan la capacidad para aprender nuevos lenguajes. el dise no de metodolog as, herramientas para el desarrollo de SW y los lenguajes de programaci on esta en constante evoluci on por lo que es esencial un aprendizaje continuo. El proceso de aprender nuevos lenguajes es dif cil, mas para aquellos que creen que conociendo 1 o 2 lenguajes es suciente y nunca han examinado los conceptos generales de un lenguaje de programaci on. Si aprendemos los conceptos fundamentales de los lenguajes, entonces aprender nuevos lenguajes se vuelve mas f acil. Mejor entendimiento del signicado de la implementaci on. en muchos casos, un entendimiento de las cuestiones de la implementaci on permite entender porque los lenguajes fueron dise nados de esa manera, algunos errores solo pueden ser encontrados y corregidos por un programador que conoce relativamente los detalles de

Porque existen tantos lenguajes Evoluci on: busqueda continua de hacer mejor las cosas. Proposito especial: lenguajes dise nados con un dominio de problema especico. Preferencia personal: la diferencia en las preferencias hace poco probable que exista un lenguaje universalmente aceptado. 1) Aplicaciones cienticas: La primera computadora (1940) fue creada para aplicaciones cienticas las cuales usan simples estructuras de datos, pero requieren grandes calculos arimentos en punto otante. Ejemplo : FORTRAN 2) Aplicaciones de negocio: El uso de ordenadores para aplicaciones de negocio comenz o en 1950, se desarrollaron equipos y lenguajes especiales. Ejemplo: COBOL (1960) Hojas de Calculo, Base de Datos 3) Inteligencia Articial: Se caracteriza por el uso de simbolos antes que los calculos numericos, este tipo de programaci on requiere mas exibilidad que otros. Ejemplo: LISP (1959), PROLOG

4) Programaci on de sistemas: El S.O. y todas las herramientas de programaci on constituyen el software el cual se utiliza continuamente por lo tanto debe proporcionar una rapida ejecuci on. Ejemplo: PL/S, para las computadoras mainframe de IBM BLISS, televisi on digital. ALGO, lenguaje ensamblador AT! Unix esta escrito casi en su totalidad en C (1989) lo que ha hecho que sea relativamente facil de portar o mover a diferentes maquinas. 5) Lenguajes de guiones (scripting): es un lenguaje de programaci on para poner una lista de comandos, llamadas o scrip en un archivo para ser ejecutado. Ejemplo: SH(Inteprete de comando), awk(generacion de informes) PERL es una combinaci on de SH y awk Javascript: es un LP usado en servidores web y los navegadores. 6) Lenguajes de proposito general: . I-C. Criterios de Evaluaci on de un lenguaje

Que hace a un lenguaje exitoso Poder expresivo, facilidades de abstracci on. Facilidad de uso para un novato. Facilidad de implementaci on. Compiladores exelentes. Economia, sponsor. nico que determine que un lenguaje sea No existe un factor u bueno, se debe considerar diferentes puntos de vista, tanto del implementador como del programador. PP Criterio P Ca PPP Le- Fa- ConPP racte PP PP gi- ci- aristicas bi- li- blili- dad dad dad de Escritura Sencillez /Ortogonalidad * * * Estructura de Control * * * Tipo de datos y Estructuras * * * Dise no de Sintaxis * * * Apoyo a la Abstraccion * * Expresividad * * Comprobacion de tipo * Manejo de excepciones * aliasing *

1) Legibilidad: La facilidad con la que los programas puede ser leidos y entendidos, debe ser considerada en el contexto del dominio del problema. Las caracteristicas que afectan la legibilidad son : Simplicidad: un lenguaje con un gran numero de componentes b asicos es mas dicil de aprender que uno con un peque no numero de componentes (simplicidad = limitada ortogonalidad) Cuando se utiliza un lenguaje muy grande se tiende a aprender un subconjunto del mismo e ignorar sus demas caracteristicas, esto es un problema. Multiplicidad de caracteristicas : tener mas de una manera de realizar una operaci on [a = a +1 o a++] Sobrecarga de operadores : un solo simbolo tiene mas de un signicado. Simplicidad al extremo : asembler, demasiado sencillo, menos legible. Ortogonalidad: Cuando un peque no conjunto de construcciones primitivas pueden ser combinadas de forma relativamente peque na para construir las estructuras de datos y de control. Es independiente del contexto donde se ejecuta el programa. Demasiada ortogonalidad implica complejidad innecesaria. + ortogonalidad = - excepciones para las reglas del lenguaje - excepciones = + regularidad en el dise no + regularidad = + facil de leer, entender y aprender Falta de Ortogonalidad en C Hay 2 tipos de datos estructurados arrays : no struct : pueden ser devueltos por funciones Los parametros son pasados por valor, excepto arrays que son pasados por referencia Un elemento de un array puede ser cualquier tipo, excepto void o una funcion Sentencias de Control: 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 otra no adyacente a n de seguir el orden de ejecucion Tipos de Datos y Estructuras Mientras mas facil y adecuada sea la denicion de datos y estructuras mayor sera la facilidad de lectura del programa. Consideraciones sintacticas: Sintaxis = forma. Forma de los identicadores: Si se restringe la longitud de los identicadores se reduce la legibilidad implica que no se puede utilizar nombres connotativos. Palabras especiales: algunos lenguajes permiten que las palabras especiales pueden ser usadas como nombres de variables conlleva a ambiguedades por tanto trae problema. Formas y signicados: la apariencia de las construcciones deberian al menos indicar parcialemnte su proposito, pero en algunos casos el siginicado de las palabras depende del contexto en el que aparecen Ejemplo : static implica fuera de una funcion, implica solo visible ahi. implica dentro de una funcion, implica en tiempo de compilacion 2) Facilicidad de Escritura: Que tan facilmente un lenguaje puede ser utilizado para crear programas en un dominio especico. La mayoria de las caracteristicas que afectan la facilidad de escritura son:

Simplicidad y Ortogonalidad: Demasiada ortogonalidad puede perjudicar la facilidad de escritura, cuando los errores de programacion no pueden ser detectados puesto que practicamente cualquier combinacion de primitivas es legal. Soporte para la abstraccion: Abstraccion: es la capacidad de denir y utilizar estructuras u operaciones complicadas de forma que muchos detalles son ignorados, los LP soportan dos tipos de abstracciones.: Abstraccion de Datos: el lenguaje deberia proporcionar facilidades para acercar la solucion del problema al dominio del problema osea TDA (clase) Abstraccion de procesos: por ejemplo la utilizacion de un subprograma para implementar un algoritmo. Ejemplos: algoritmo de ordenamiento, hago un subprograma y lo llamo cuando lo necesite, no necesito copiar el mismo codigo varias veces. Expresibilidad: la expresibilidad puede hacer referencia a varias caracteristicas diferentes; el lenguaje posee maneras convenientes de expresar los computos, count++, for.. 3) Conablidad: Un programa es conable si se comporta de acuerdo a sus especicaciones bajo todas las condiciones, sus caracteristicas son: Chequeo de tipos: es la vericacion de errores de tipo ya sea al momento de la compilacion o durante la ejecucion de un programa. AT! El chequeo en tiempo de compilaci on es deseable, cuanto antes se detecten los errores sera menos costosos de reparar Manejo de excepciones: se reere a la habilidad de un programa de interceptar errores de tiempo de ejecucion, tomar medidas correctivas y continuar. de una referencia, metodo Aliasing: es cuando se tiene mAs o nombre para la misma celda de memoria, es una herramienta de doble lo. Legibilidad y facilidad de escritura: ambos inuyen en la conabilidad, programas que son diciles de leer son diciles tanto para escribir y modicar, mantener. 4) Costo: El costo nal de un lenguaje de programaci on depende de sus caracteristicas: Costo de entrenamiento de los programadores para el uso del lenguaje depende de la simplicidad y ortogonalidad. Costo de creaci on del SW: escritura en dicho lenguaje, facilidad de escritura Costo de compilaci on, Costo de ejecuci on: los compiladores pueden utilizar t ecnicas para aumentar o disminuir la velocidad de ejecuci on del codigo que produce, dise oo del lenguaje, Costo de implementaci on, Costo para conabilidad, Costo de mantenimiento: correcci on y modicaciones para a nadir nuevas capacidades 5) Otros criterios: Portabilidad: es la facilidad con la cual los programas pueden ser movidos de una implementaci on a otra. Generalidad: capacidad de ser aplicado a un gran n umero de aplicaciones. Buena denici on: la integridad y la posici on del documento ocial del lenguaje. I-D. Inuencias en el dise no de un lenguaje Arquitectura de las computadoras: la mayor parte de los lenguajes de los ultimos 45 a nos se han dise nado basandose en

la arquitectura de Von Neumann, estos lenguajes se denominan lenguajes imperativos.

I-E.

Clasicacion de los lenguajes de programaci on

De acuerdo a su modelo de computaci on: Declarativos: Que hace la computadora? son de mayor nivel, son mas orientados al punto de vista del programador. Funcionales: Ejemplo: LISP/Scheme, ML, Haskell. Logicos o Basados en Restricciones: Ejemplo: Prolog, VisiCalc. Imperativos: Como lo hace?, predominan por razones de desempe no (el algoritmo es especicado en gran detalle, se dene un orden de ejecuci on). Von Neumann: Ejemplo: Fortran, Pascal, Basic, C Orientado a Objetos: Ejemplo: Smalltalk, C++, Java. Otros: De ujo de datos: Ejemplo: Id, Val, Sisal Concurrentes: SR, lyrix Lenguajes agregados: Ejemplo: String (SNOBOL y Icon), base de datos (SQL), matrices (Mathlab/Octave)

I-F.

Criterios de dise no de lenguaje que est an en conicto Conabilidad contra costo de ejecuci on Facilidad de escritura contra facilidad de lectura Flexibilidad contra seguridad

I-G.

Metodos de implementaci on

Compilaci on: consiste en la traducci on de un programa escrito en lenguaje de alto nivel a codigo maquina. El proceso de traducci on es lento, pero una vez terminado, la ejecuci on es muy rapida. Interpretaci on pura: los programas son interpretados linea por linea por otro programa llamado interprete sin traducci on alguna, pero la ejecuci on es mas lenta que el metodo de compilaci on, requiere mas espacio y ademas del codigo fuente ((tabla de simbolosA ))(contiene el tipo y/o atributo necesita la A de cada nombre denido por el usuario) para la interpretaci on. Sistemas de implementaci on hibrida: algunos lenguajes son un arreglo entre compiladores y la interpretaci on pura, se traduce el programa a un lenguaje intermedio designado para permitir la facil interpretaci on, bajo costo de traducci on y velocidad de ejecuci on media, mejor que la interpretaci on pura, las sentencias de codigo son decodicadas solo una vez. Linker: es una programa que toma todos los objetos generados en los primeros pasos de compilaci on, la informaci on de todos los recursos necesarios (bibliotecas), quita aquellos recursos que no se necesitan y enlaza el codigo objeto su/s biblioteca/s con lo que nalmente produce un chero ejecutable. Preprocesador: es un programa que procesa un programa inmediatamente antes que el programa sea compilado, sus instrucciones son insertadas en los programas.

I-H. Entorno de programaci on Un entorno de programaci on es una colecci on de herramientas usadas en el desarrollo del SW. Esta colecci on puede consistir solo en un archivo de sistema, un editor de textos, un enlazador o un compilador. O puede incluir una gran colecci on de herramientas integrados que pueden ser accedidos por una uniforme interface de usuario. Ejemplo: Unix : un antiguo S.O. y una coleccion de herramientas, problema, tenia una interfaz comun entra sus herramientas, dicultdad de uso y aprendizaje. Borland C++ : un entorno para C y C++. Microsoft Visual Studio : un entorno de programaci on para la programaci on en Windows.

Anda mungkin juga menyukai