lenguajes de programaci n
Download
Skip this Video
Download Presentation
Lenguajes de programación

Loading in 2 Seconds...

play fullscreen
1 / 59

Lenguajes de programación - PowerPoint PPT Presentation


  • 227 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Lenguajes de programación' - wyanet


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
lenguajes de programaci n

Lenguajes de programación

Ana Lilia Laureano Cruces

Lenguajes de Programación

slide3

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

definiciones
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

slide6
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

slide7
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

qu es la programaci n
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

slide9
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

slide10
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

slide11
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

la m quina de von neumann
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

elementos de un lenguaje de m quina
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

slide14

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

slide15
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

las caracter sticas de la m quina
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

slide17
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

instrucciones de la m quina de von neumann
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

movimiento
Movimiento
  • A := M [i];
  • M [i] := A;
  • R := M [i];
  • A := R;

Lenguajes de Programación

flujo de control
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

otras
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

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

Lenguajes de Programación

slide23
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

slide24
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

slide25
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

slide26
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

problemas
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

preocupaci n
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

slide29
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

revisi n de la eficiencia
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

slide31
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

slide32
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

slide33
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

slide34

Cada capa amplía las posibilidades de la capa inferior

Programa

a < b

lenguaje de programación

<

máquina

Lenguajes de Programación

recursos de un lenguaje
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

slide36
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

slide37
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

slide38
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

la estructura de un programa
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

slide40
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

estructura sint ctica
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

slide42
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

slide43
<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

slide44
< > ; constructores
  • ::= ; es
  • | ; o

Lenguajes de Programación

definici n de gram ticas independientes del contexto
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

slide46
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

gram tica libre de contexto
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

slide48
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

slide49
<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

bnf extendida
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

slide51
Una barra vertical | representa una opción
  • los paréntesis ( y ), se usan para agrupar
  • las llaves { y }, representan cero o más repeticiones
  • los corchetes [ y ], representan una construcción opcional.

Lenguajes de Programación

la versi n en bnfe
La versión en BNFE
  • Expresión ::= Término {(‘+’|‘-’) Término }
  • Término ::= Factor { (‘*’ | div) Factor}
  • Factor ::= ‘(‘Expresión’)’ | Variable | Constante

Lenguajes de Programación

esquemas de sintaxis
Esquemas de sintaxis
  • Otra forma de representar la sintaxis de un lenguaje.
    • existe un subesquema para cada símbolo no terminal
    • cada producción para un símbolo no terminal se transforma en una trayectoria a través del esquema.
    • sobre la trayectoria de una producción se encuentran los símbolos terminales y los no terminales en el lado derecho
    • los símbolos terminales son óvalos y los no terminales en rectángulos
    • las llaves que indican cero o más repeticiones, sugieren esquemas de sintaxis con ciclos.

Lenguajes de Programación

slide54

(

)

Expresión

Variable

Constante

Factor ::= (< Expresión>) | Variable | Constante

  • Factor

Lenguajes de Programación

organizaci n de las descripciones de lenguajes
Organización de las descripciones de lenguajes
  • La semántica de los lenguajes especifica el significado del programa
  • sintaxis de fecha
    • <fecha> ::= DD/DD/DD donde D = <dígito>
      • 01/02/2004
      • en este caso el día no esta identificado por la sintáxis
        • en USA sería 2 de enero de 2004
        • en México seria el 1o. De febrero de 2004

Lenguajes de Programación

slide56
Es necesario contar con descripciones completas y claras de sintaxis y de la semántica de los lenguajes, con el fin de asegurar que todos las implementaciones acepten los mismos programas, para garantizar la transportabilidad de los programas.

Lenguajes de Programación

programas tutelares
Programas tutelares
  • Una introducción tutelar es un viaje guiado a través de un lenguaje. Proporciona una idea de los principales constructores del lenguaje y la forma en que deben usarse.
  • Ejemplos, se aprende por imitación y adptación

Lenguajes de Programación

manuales de referencia
Manuales de referencia
  • Describe la sintaxis y la semántica de un lenguaje; organizado tradicionalmente en la sintaxis del lenguaje.
  • Se aprende por explicaciones y ejemplos para las reglas sintácticas

Lenguajes de Programación

definiciones formales
Definiciones formales
  • Es una descripción precisa de la sintaxis y la semántica de un lenguaje; se dirige a especialistas.
  • Se aprende a través de notaciones específicas. El esfuerzo y la capacitación para comprender estas notaciones, se compensan con la posibilidad de clarificar ciertos puntos finos.

Lenguajes de Programación

ad