Lenguajes de Programación
Paradigmas de Programación
Autor(es): • Mtr. Luis Fernando Aguas
Indice
1.¿ Qué es un lenguaje de programación ?
2.Abstracciones
3.Paradigmas de computación
4.Definición del lenguaje
5.Traducción del lenguaje
6.Historia
7.Preguntas
1.1 ¿ Qué es un LP ?
• Computación
• MáquinaTuring, 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 deVon Neuman, cuello de botella deVon 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.6Traducció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.6Traducció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ón
adicional
compilación
código
objeto
código
ejecutable
1.6Traducció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
Simula
Smalltalk
Pascal
Ada
C
PL/I
LISP
ML
Miranda
Prolog
1.7 Historia
1950 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

Lenguajes de programación: Paradigmas de Programación

  • 1.
    Lenguajes de Programación Paradigmasde Programación Autor(es): • Mtr. Luis Fernando Aguas
  • 2.
    Indice 1.¿ Qué esun lenguaje de programación ? 2.Abstracciones 3.Paradigmas de computación 4.Definición del lenguaje 5.Traducción del lenguaje 6.Historia 7.Preguntas
  • 3.
    1.1 ¿ Quées un LP ? • Computación • MáquinaTuring, 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.
  • 5.
    1.2 Características • Eficiencia •Expresividad • Capacidad de mantenimiento • Legibilidad • Confiabilidad • Seguridad • Simplicidad • Productividad
  • 6.
    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
  • 7.
    1.3 Abstracciones • Abstraccionesde 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.
  • 8.
    1.4 Paradigmas deprogramación • Imperativo • modelo deVon Neuman, cuello de botella deVon 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
  • 9.
    Paradigmas de Lenguajes •Se reconoce generalmente 4 paradigmas de programación: • Imperativo (Estructurado) • Aplicativo (Funcional) • Orientado a Objetos • Lógico
  • 10.
    Lenguajes Imperativos • Suobjetivo 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, …
  • 11.
    Lenguajes Imperativos  Programación:serie de pasos (input, cálculo, ouput).  Elementos: abstracción procedural, asignación, loops, secuencias, condicionales.
  • 12.
    Lenguajes Funcionales • Suobjetivo 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)))
  • 13.
    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.
  • 14.
    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.
  • 15.
    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.
  • 16.
    Lenguajes Lógicos • Definenreglas 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
  • 17.
    1.5 Definición dellenguaje • Sintaxis (estructura) • Gramáticas libres de contexto, estructura léxica, tokens • Semántica (significado) • Lenguaje natural • Semántica operacional • Semántica denotacional
  • 18.
    1.6Traducció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
  • 19.
    1.6Traducción • Pseudointérpretes: intermedioentre interprete y compilador: lenguajes intermedios • Operaciones de un traductor: analizador léxico (tokens), analizador sintáctico, analizador semántico, preprocesador código fuente traducción adicional compilación código objeto código ejecutable
  • 20.
    1.6Traducción • Tiempo decompilació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)
  • 21.
    1.7 Historia FORTRAN AlGOL 60COBOL 50 60 70 80 90 Simula Smalltalk Pascal Ada C PL/I LISP ML Miranda Prolog
  • 22.
    1.7 Historia 1950 19601970 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)
  • 24.
    ¿Qué hace aun 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.
  • 25.
    ¿Qué hace aun 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.
  • 26.
    ¿Qué hace aun 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.
  • 27.
    ¿Qué hace aun 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.
  • 28.
    ¿Qué hace aun lenguaje bueno? • Costo de uso • Costo de ejecución • Costo de traducción • Costo de creación, prueba y uso • Costo de mantenimiento