1 / 59

Lenguajes de programación

Lenguajes de programación. Ana Lilia Laureano Cruces. Programación imperativa. núcleo. Procedimientos. Programación Orientada a Objetos. núcleo. herencia. Programación funcional. núcleo. int. érpretes. Programación Lógica. núcleo. avanz. ada. Programación concurrente. núcleo.

wyanet
Télécharger la présentation

Lenguajes de programación

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lenguajes de programación Ana Lilia Laureano Cruces Lenguajes de Programación

  2. Lenguajes de Programación

  3. Programación imperativa núcleo Procedimientos... Programación Orientada a Objetos núcleo herencia Programación funcional núcleo int érpretes Programación Lógica núcleo avanz ada Programación concurrente núcleo Lenguajes de Programación

  4. Definiciones • Un programa es la especificación de una tarea de computación. • Un lenguaje de programación es una notación para escribir programas. • El desarrollo de los lenguajes se ha basado en el conocimiento de que la complejidad puede manejarse imponiendo alguna estructura a los datos, a las operaciones, a los programas e incluso a las descripciones de un lenguaje. Lenguajes de Programación

  5. La Función de la Estructura en la Programación Lenguajes de Programación

  6. Dijkstra [1972] Es poco probable el establecimiento de la corrección de un programa mediante pruebas, a menos que se tome en cuenta su estructura interna. • La única esperanza es diseñar cuidadosamente un programa de manera que su corrección pueda entenderse en términos de su estructura. Lenguajes de Programación

  7. El arte de la programación es el arte de organizar la complejidad y • Debemos organizar los cálculos de manera que nuestros limitados sentidos sean suficientes para garantizar que el cómputo arroje los resultados esperados. Lenguajes de Programación

  8. Qué es la programación • En computación se desarrolla más trabajo de programación que de desarrollo (creación inicial a la verificación de un programa) • El lenguaje debe ayudarnos a escribir buenos programas; un programa es bueno si es fácil de leer, fácil de entender y fácil de modificar. Lenguajes de Programación

  9. Técnicas para el manejo de programas pequeños no son crecientes (en general). • Las dificultades comienzan cuando el efecto del cambio puede extenderse a través de un programa muy grande, introduciendo errores en un lugar olvidado. Pueden permanecer sin detección durante años. Lenguajes de Programación

  10. La estructura y la organización son la clave para manejar programas muy grandes. • La legibilidad de un programa puede mejorarse organizandolo de forma que cada parte pueda entenderse en forma relativamente independiente del resto. • La estructura nos ayuda a mantener la situación dentro del límite de la atención humana. Lenguajes de Programación

  11. Miller [1967] observó que la gente es capaz de recordar aproximadamente 7 cosas: • 7 bits (dígitos binarios) • palabras, colores,tonos, sabores • 7 maravillas, 7 pecados capitales, 7 edades del hombre • la memoria esta limitada por el número de símbolos o unidades que pueda manejar y no por la información que representen esos símbolos Lenguajes de Programación

  12. La máquina de Von Neumann • Los orígenes de los lenguajes de programación se encuentran en la máquinas • se diseño a finales de los 40’s en el Instituto de Estudios Avanzados de Princeton • Las actuales tienen mucho en común = arquitectura Von Neumann • Lenguaje de máquina = código (texto en un programa) Lenguajes de Programación

  13. Elementos de un lenguaje de máquina • Burks, Goldstine y Von Neumann [1947] • unidad central de procesamiento: unidad de control, aritmética, y entrada y salida; y la memoria. • Memoria miníuscula: instrucciones y datos. • Memoria = 4096 palabras, c/u de 40 bits • la máquina completa tenía 1024 palabras. Lenguajes de Programación

  14. Unidad de Control Unidad Aritmética Unidad de Entrada/Salida Acumulador A Registro R Memoria para instrucciones y datos..M[i] Lenguajes de Programación

  15. Datos: los bits representaban un número en notación binaria. • Instrucciones: los 40 bits tenían dos instrucciones de 20 bits. • Todo programa en lenguaje de máquina consistía en una secuencia de instrucciones. Lenguajes de Programación

  16. Las características de la máquina • Datos: enteros eran la única forma. • Operaciones aritméticas:sumar, restar, multiplicar, dividir y tomar el valor absoluto de un número. El resultado de suma o resta se colocaba en un registro llamado acumuldor. • Asignaciones a localidades de memoria: a una localidad se le podía asignar el valor contenido en el acumulador y reemplazaba el valor anterior. Lenguajes de Programación

  17. Flujo de control: el flujo normal del control de una instrucción a la sigueinte podía ser interrumpido por una instrucción de salto incondicional (go to). • Justificación del go to: la utilidad de un computador automático reside en la posibilidad de usar en forma repetida una secuencia de instrucciones, en donde el número de iteraciones puede asignarse previamente o depender de los resultados de un cálculo. Lenguajes de Programación

  18. Instrucciones de la máquina de Von Neumann • Aritmética • A:= A + M[i]; A:= A - M[i]; • A:= A + | M[i] | ; A:= A - | M[i] | ; • A:= - M[i] ; A:= A - | M[i] | ; A:= | M[i] | • A:= A * 2; A := A div 2 • A, R := (M [i] * R) div 239, (M[i]*R) mod 239 • A, R := A mod M [i], A div M [i] Lenguajes de Programación

  19. Movimiento • A := M [i]; • M [i] := A; • R := M [i]; • A := R; Lenguajes de Programación

  20. Flujo de control • Dos instrucciones de la palabra i: • Salto incondicional M[i]. izq; • Salto incondicional M[i]. der; • Si A 0 salto incondicional M[i].izq; • Si A 0 salto incondicional M[i].der; Lenguajes de Programación

  21. Otras • Modifica la dirección de M[i].izq proveniente de A. • Modifica la dirección de M[i].der proveniente de A. Lenguajes de Programación

  22. Código de máquina es ininteligible: • 00000010101111001010 • 00000010111111001000 • 00000011001110101000 • LOAD I • ADD J • STORE K • k = i + j Lenguajes de Programación

  23. El lenguaje ensamblador: es una variante del lenguaje de máquina. Se manejan identificadores en vez de códigos reales (valores, localidades de almacenamiento y operaciones) • El lenguaje de máquina y los ensambladores se les conoce como lenguajes de bajo nivel Lenguajes de Programación

  24. El alto costo de creación de código ensamblador o máquina el desarrollo de FORTRAN = FORmula TRANslation. • Backus [1975], tenía como meta: • Permitir al programador especificar un procedimiento numérico mediante el uso de un lenguaje conciso como el de las matemáticas. Lenguajes de Programación

  25. A partir de esta especificación: • un programa en lenguaje de máquina • depuración (localización y corrección de errores) se reduce • se esperaba reducir a un quinto el desarrollo de programas. • B*B - 4*A*C b 2 - 4ac Lenguajes de Programación

  26. El traductor de un lenguaje de máquina o ensamblador se conoce como compilador. programa fuente TIEMPO DE TRADUCCION compilador código destino TIEMPO DE EJECUCION salida entrada Lenguajes de Programación

  27. Problemas • Tiempo de traducción: se necesita tiempo de máquina para compilar un programa fuente y convertirlo en código destino. • Tiempo de ejecución y necesidad de espacio mayores: el código destino creado por el compilador suele ejecutarse con mayor lentitud y ocupa más espacio que un código escrito directamente. Lenguajes de Programación

  28. Preocupación • Backus pensó que la aceptación de FORTRAN se hallaría en serios problemas al tardar el doble de tiempo en la ejecución que su contraparte escrita en código de máquina. • Notación fácil de leer • la escritura tenía una notación cercana a la que describía originalmente el problema • eran portátiles (intercambio y creación de acervos) Lenguajes de Programación

  29. Con respecto al lenguaje C: • Ritchie concluye: aunque un estudio profundo de la mayor cantidad de espacio y tiempo utilizados debido al uso de C, pudiera resultar interesante, sería irrelevante ya que sin importar sus resultados, no provocaría que volviéramos a escribir en lenguaje ensamblador. Lenguajes de Programación

  30. Revisión de la eficiencia • La eficiencia de un programa depende de las decisiones tomadas en todos los niveles: • concepción • elección de estructuras de datos • algoritmos • La legibilidad y la capacidad de modificar los programas contribuyen a la eficacia. Lenguajes de Programación

  31. El desarrollo de un programa eficiente puede considerarse como una secuencia de cambios evolutivos guiados por la realización de un análisis. • El refinamiento de código se realiza con la mejora de puntos críticos, que son las pequeñas partes muy utilizadas en donde un programa emplea la mayor parte de su tiempo de ejecución. Lenguajes de Programación

  32. Detector de perfiles (variante de compiladores): detecta los puntos críticos. • La codificación cuidadosa de los puntos críticos mejora significativamente el tiempo de ejecución. Lenguajes de Programación

  33. En general un lenguaje de programación es una extensión de la máquina en que se apoya; y un programa es una extensión del lenguaje de programación. • Un lenguaje reconstruye la máquina para proporcionar más recursos, y un programa reconstruye el lenguaje para proporcionar recursos más cercanos al problema que debe resolverse. Lenguajes de Programación

  34. Cada capa amplía las posibilidades de la capa inferior Programa a < b lenguaje de programación < máquina Lenguajes de Programación

  35. Recursos de un lenguaje • Modelo de computación : capacidades de la máquina que lo sustenta o bien proporcionar una aproximación diferente (lenguajes concurrentes) Lenguajes de Programación

  36. Tipos de datos y operaciones : constructores (registros, arreglos) del lenguaje que permiten estructurar los valores básicos que posee la máquina como son: caracteres, enteros y números reales. Cada tipo estructurado tiene asociado un conjunto de operaciones, que permite manipular sus componentes. Lenguajes de Programación

  37. Recursos de abstracción : • funciones: son abstracciones de las operaciones integradas (sumas, restas, multiplicaciones), rcua. • procedimientos: son abstracciones de las acciones integradas (asignación), ordena. • Definir TAD’s Lenguajes de Programación

  38. Verificación y validación : • la verificación en tiempo de ejecución; detecta errores antes de que se ejecuten • la verificación permite la validación del encapsulamiento. Lenguajes de Programación

  39. La estructura de un programa • Existe más de una forma para solucionar un programa de aquí que exista más de una forma para estructurar un programa. • Una forma de estructurar es a través del refinamiento de sucesivo: descomponer problemas en subproblemas más simples que se puedan resolver de una manera relativamente independiente. Lenguajes de Programación

  40. El diseño de una descomposición apropiada es la parte más difícil de ésta técnica; debido a que la descomposición no es obvia en un principio. • Entran en juego el paso de parámetros Lenguajes de Programación

  41. Estructura sintáctica • La sintaxis de un lenguaje especifica cómo están constituidos los programas en dicho lenguaje. • La estructura sintáctica es la estructura impuesta por la sintaxis del lenguaje. Constituye la herramienta primaria para trabajar con el lenguaje. Lenguajes de Programación

  42. La sintaxis de un lenguaje de programación se especifica usando alguna variante de la notación conocida como gramática independiente del contexto. • BNF (Backus-Naur Form) o BNFE (extendida) Lenguajes de Programación

  43. <número real> ::= <secuencia-dígitos>. <secuencia-dígitos> • <secuencia-dígitos> ::= <dígito> | <dígito> <secuencia-dígitos> • <dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Lenguajes de Programación

  44. < > ; constructores • ::= ; es • | ; o Lenguajes de Programación

  45. Definición de gramáticas independientes del contexto • Dado un conjunto de símbolos, una cadena sobre el conjunto, es una secuencia finita de cero o más símbolos del conjunto. • El número de símbolos en la secuencia se conoce como longitud de la cadena. • Los símbolos atómicos de un lenguaje son los componentes léxicos (tokens) o símbolos terminales. Lenguajes de Programación

  46. El símbolo no terminal que representa al constructor principal del lenguaje se llama símbolo no terminal inicial. • Los componentes de un constructor se identifican con reglas llamadas producciones. • Una producción consta de un lado izquierdo (símbolo no terminal) :: = lado derecho (secuencia de cero o más símbolos terminales o no terminales) Lenguajes de Programación

  47. Gramática libre de contexto • Un conjunto de símbolos terminales. • Un conjunto de símbolos no terminales. • Un conjunto de producciones, donde cada producción consta de un símbolo no terminal del lado izquierdo, un ::=, y del lado derecho, una cadena construida con los conjuntos de símbolos terminales y no terminales. • Un símbolo no terminal designado como símbolo no terminal inicial. Lenguajes de Programación

  48. En BNF, los símbolos no terminales se encuentran entre los símbolos < >. • Las gramáticas para expresiones aritméticas se basan en reglas como las siguientes: • la expresión es una secuencia de términos separados por + o - • el término es una secuencia de factores separados por *odiv • el factor es una expresión entre paréntesis, una variable o una constante. Lenguajes de Programación

  49. <expresión> ::= <expresión> + <término> | <expresión> - <término> | <término> • <término> ::= <término> * <factor> | <término> div <factor> | <factor> • <factor> ::= (<expresión>) | <variable> | <constante> Lenguajes de Programación

  50. BNF extendida • Los símbolos no terminales comienzan con letra mayúscula. • los terminales que consisten en símbolos como + y - se colocan entre comillas sencillas, y los símbolos terminales en negritas como div. Lenguajes de Programación

More Related