Gghgh
Departamento de Informática Universidad de Valladolid
Curso 2010-11
Grado en Ingeniería Informática Grado en Ingeniería Informática de Sistemas
11 Feb. 2011
César Vaca Rodríguez, Dpto. de Informática, UVa
1
Definición
“Un paradigma de programación indica un método de realizar
cómputos y la manera en que se deben estructurar y organizar las tareasque debe llevar a cabo un programa ” Los paradigmas fundamentales están asociados a determinados modelos de cómputo. Tambien se asocian a un determinado estilo de programación Los lenguajes de programación suelen implementar, a menudo de forma parcial, varios paradigmas.
11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 2
Tipos de paradigmas
Los paradigmas fundamentales estánbasados en diferentes modelos de cómputo y por lo tanto afectan a las construcciones más básicas de un programa. La división principal reside en el enfoque imperativo (indicar el cómo se debe calcular) y el enfoque declarativo (indicar el qué se debe calcular).
El enfoque declarativo tiene varias ramas diferenciadas: el paradigma funcional, el paradigma lógico, la programación reactiva y loslenguajes descriptivos.
Otros paradigmas se centran en la estructura y organización de los programas, y son compatibles con los fundamentales:
Ejemplos: Programación estructurada, modular, orientada a objetos, orientada a eventos, programación genérica.
Por último, existen paradigmas asociados a la concurrencia y a los sistemas de tipado.
11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática,UVa 3
El zoo de los paradigmas
Código
Módulos Procedimientos Control de flujo Acciones elementales Orientado a Eventos
Relación
Modular Procedimental Estructurado
Imperativo
Declarativo Funcional
Lógico Reactivo
Orientado a Objetos
Datos
Programación Genérica
Programación Concurrente
11 Feb. 2011
César Vaca Rodríguez, Dpto. de Informática, UVa
4
ParadigmaImperativo
Describe cómo debe realizarse el cálculo, no el porqué. Un cómputo consiste en una serie de sentencias, ejecutadas según un control de flujo explícito, que modifican el estado del programa. Las variables son celdas de memoria que contienen datos (o referencias), pueden ser modificadas, y representan el estado del programa. La sentencia principal es la asignación. Es el estándar ‘defacto’.
Asociados al paradigma imperativo se encuentran los paradigmas procedural, modular, y la programación estructurada. El lenguaje representativo sería FORTRAN-77, junto con COBOL, BASIC, PASCAL, C, ADA. También lo implementan Java, C++, C#, Eiffel, Python, ...
11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 5
Paradigma Declarativo
Describe que se debe cálcular, sinexplicitar el cómo. No existe un orden de evaluación prefijado. Las variables son nombres asociados a definiciones, y una vez instanciadas son inmutables. No existe sentencia de asignación. El control de flujo suele estar asociado a la composición funcional, la recursividad y/o técnicas de reescritura y unificación.
Existen distintos grados de pureza en las variantes del paradigma. Las principalesvariantes son los paradigmas funcional, lógico, la programación reactiva y los lenguajes descriptivos.
11 Feb. 2011
César Vaca Rodríguez, Dpto. de Informática, UVa
6
Programación Funcional
Basado en los modelos de cómputo cálculo lambda (Lisp, Scheme) y lógica combinatoria (familia ML, Haskell) Las funciones son elementos de primer orden Evaluación por reducción funcional. Técnicas:recursividad, parámetros acumuladores, CPS, Mónadas. Familia LISP (Common-Lisp, Scheme):
Basados en s-expresiones. Tipado debil. Meta-programación
Familia ML (Miranda, Haskell, Scala):
Sistema estricto de tipos (tipado algebraico) Concordancia de patrones. Transparencia referencial Evaluación perezosa (estruct. de datos infinitas)
11 Feb. 2011 César Vaca Rodríguez, Dpto. de Informática, UVa 7...
Regístrate para leer el documento completo.