Lenguajes de programación: Paradigmas de Programación

Post on 13-Jan-2017

159 views 7 download

Transcript of Lenguajes de programación: Paradigmas de Programación

Lenguajes de ProgramaciónParadigmas de Programación

Autor(es):

• Mtr. Luis Fernando Aguas

Indice

1.¿ Qué es un lenguaje de programación ?2.Abstracciones3.Paradigmas de computación4.Definición del lenguaje5.Traducción del lenguaje6.Historia7.Preguntas

1.1 ¿ Qué es un LP ?

• Computación• Máquina Turing, tesis de Church

• Legibilidad por parte de la máquina• Legibilidad por parte del ser humano

Definición: Un lenguaje de programación es un sistema notacional para describir computaciones de una forma legible tanto para la máquina como para el ser humano.

1.2 Características

• Eficiencia• Expresividad• Capacidad de mantenimiento• Legibilidad• Confiabilidad • Seguridad• Simplicidad• Productividad

1.3 Abstracciones • Clases: Datos y control• Niveles: básicas, estructuradas y unitarias

Abstracciones de datos:● Básicas: tipos básicos (enteros, reales, ...)● Estructuradas: tipos estructurados (arreglos, registros)● Unitarias: Tipos abstractos de datos (TDAs), paquetes,

módulos, clases, componentes

1.3 Abstracciones• Abstracciones de control• Básicas: asignación, goto• Estructuradas: condicionales e iteradores• Unitarias: paquetes, módulos, hilos y tareas.

Un lenguaje de programación es completo en Turing siempre que tenga variables enteras y aritméticas, y que ejecute enunciados en forma secuencial, incluyendo enunciados de asignación, selección e iteración.

1.4 Paradigmas de programación

• Imperativo• modelo de Von Neuman, cuello de botella de Von

Neuman• Orientado a Objetos• TDAs, encapsulación, modularidad, reutilización

• Funcional • noción abstracta de función, cálculo lambda,

recursividad, listas• Lógico• Lógica simbólica, programación declarativa

Paradigmas de Lenguajes

• Se reconoce generalmente 4 paradigmas de programación:• Imperativo (Estructurado)• Aplicativo (Funcional)• Orientado a Objetos• Lógico

Lenguajes Imperativos

• Su objetivo es entender y definir el estado de la máquina (conjunto de posiciones de memorias, cada una conteniendo un valor).

• Lenguajes orientados a instrucciones • El programa consiste en elaborar un

conjunto de instrucciones para que la máquina llegue a la respuesta.

• Ejemplos: C, Fortran, Pascal, Cobol• Sintaxis: S1, S2, S3, S4, …

Lenguajes Imperativos

Programación: serie de pasos (input, cálculo, ouput).

Elementos: abstracción procedural, asignación, loops, secuencias, condicionales.

Lenguajes Funcionales

• Su objetivo es entender la función que produciría la respuesta deseada.

• Es orientada hacia la composición de funciones.

• Programar consiste en construir la función que halle la respuesta.

• Ejemplos: ML, Lisp, Scheme, Haskell • Sintaxis: F1(F2(F3(x)))

Lenguajes Funcionales

• Programación: colección de funciones que se combinan en formas complejas para construir nuevas funciones.

• Elementos: alto orden, composición, recursión.

Orientados a Objetos

• Su objetivo es modelar el problema con elementos similares a los realmente presentes.

• Programar significa generar objetos que intercambian mensajes entre si para resolver un problema.

• Ejemplos: Smalltalk, C++, Java, Squeak, C#

• Sintáxis: O1 ->mensaje-> O2.

Orientados a Objetos

• Lenguajes imperativos que unen diseños aplicativos con sentencias imperativas.

• Sintaxis: Conjunto de objetos (clases) conteniendo datos (concepto imperativo) y métodos (conceptos aplicativos).

• Programación: colección de objetos que interactúan pasándose mensajes que transforman estados.

• Elementos: modelado de objetos, clases, herencia, encapsulamiento.

Lenguajes Lógicos

• Definen reglas para decidir cuando la respuesta ha sido alcanzada.

• Utiliza un conjunto de reglas para deducir los atributos de la respuesta.

• Ejemplos: Prolog• Sintaxis: Regla -> Conclusión

1.5 Definición del lenguaje

• Sintaxis (estructura)• Gramáticas libres de contexto, estructura léxica,

tokens• Semántica (significado)• Lenguaje natural• Semántica operacional• Semántica denotacional

1.6 Traducción del lenguaje• Traductor es un programa que acepta otros

programas escritos en un lenguaje y:• los ejecuta directamente (interprete)• los transforma en una forma adecuada para su

ejecución (compilador).

entrada

código fuente

salidaintérprete

1.6 Traducción

• Pseudointérpretes: intermedio entre interprete y compilador: lenguajes intermedios• Operaciones de un traductor: analizador léxico

(tokens), analizador sintáctico, analizador semántico, preprocesador

código fuente

traducciónadicional

compilación

código objeto

código ejecutable

1.6 Traducción

• Tiempo de compilación y tiempo de ejecución• Propiedades estáticas: tiempo de compilación• Propiedades dinámicas: tiempo de ejecución• Recuperación de errores (compilación y

ejecución)• Eficiencia y optimización (compilación o

ejecución)

1.7 Historia

FORTRAN

AlGOL 60 COBOL

50

60

70

80

90

SimulaSmalltalk

Pascal

AdaC

PL/I

LISP

ML

Miranda

Prolog

1.7 Historia1950 1960 1970 1980 1990

Fortran(54)

PL/I(66)

Ada(95)

Java(96)

Basic(66)

C(72)

Pascal(70)

Cobol(58)

Algol(60)

Simula(67) Smalltalk(80)

C++(89)

ENSAMBLADOR

Eiffel (86)

Ada(83)

¿Qué hace a un lenguaje bueno?

• Naturalidad de la aplicación• La estructura del programa refleja la estructura

lógica del algoritmo.• Cada lenguaje generalmente se especializa en

un campo de acción determinado y es más fácil resolver ciertos problemas con él.

¿Qué hace a un lenguaje bueno?

• Facilidad de verificación• Debe proveer una manera de corroborar que el

programa efectivamente realiza su tarea.• Una sintaxis sencilla facilita la verificación.

¿Qué hace a un lenguaje bueno?

• Ambiente de programación• Debe contar con un entorno que facilite la

programación en el lenguaje.• Generalmente lenguajes no tan buenos, pero

que tienen un buen entorno de programación, son más usados en el mercado.

¿Qué hace a un lenguaje bueno?

• Portabilidad• Que tan fácil se puede transportar la aplicación

de la máquina en que se desarrolló a otras máquinas donde va a ser ejecutada.

• El mejor ejemplo de esto es programación para Internet.

¿Qué hace a un lenguaje bueno?

• Costo de uso• Costo de ejecución• Costo de traducción• Costo de creación, prueba y uso• Costo de mantenimiento