You are on page 1of 3

Resumen Tema 1.

Paradigmas de programación
Un paradigma de programación es un caso específico de paradigma. Por lo que necesitamos conocer la definición de paradigma
para entender la de paradigma de programación.

“Un paradigma es un conjunto de teorías, estándares y métodos que


juntos representan una forma de organizar el conocimiento, esto
es, una forma de ver el mundo” [Thomas Kuhn]
Es decir:

"es un conjunto de elementos que representan una forma de


organizar el conocimiento"
“Una metodología no es un paradigma”
Resumen de paradigma:

 Nos ayuda a organizar el conocimiento sobre algo.


 Es una abstracción de una realidad:
o Simplifica una realidad Para poder tratar con facilidad su complejidad
 Tres elementos la componen:
o Teorías: Representan los conceptos que forman la abstracción
o Estándares: Establecen las normas para la realización de abstracciones de manera que todas sean correctas,
sin conflictos entre ellas.
o Métodos: Conjunto de pasos a dar para poder aplicar las teorías y estándares sin tener que improvisar.

Consecuentemente, un paradigma de programación podemos entenderlo como:

“un paradigma de programación es una forma de


pensar a la hora de programar, una manera de construir programas”
Podemos decir que los Paradigmas de Programación (PdP) tienen mayor importancia en la fase de Diseño, concretamente en la
parte de Programación, puesto que en ésta fase se utiliza ya un lenguaje de programación determinado en función de los
paradigmas que queremos cumplir.

De esta manera, el paradigma sirve como guía a la hora de implementar un cierto lenguaje de programación, el cual tendrá que
cumplir lo diseñado.

Utilidad de los paradigmas de programación:

 Establecen clasificaciones:
o Clasifican los lenguajes de programación facilitando el entendimiento de su evolución, sus relaciones y sus
características.
 Describen el lenguaje de programación:
o Podemos decir las características de un lenguaje en concreto en base al paradigma que cumple.
 Ayuda a seleccionar el lenguaje que debemos utilizar en un desarrollo:
o Debido a unas necesidades en el desarrollo, recurriremos a un paradigma u a otro.
 Ayuda a crear un nuevo lenguaje basándonos en los paradigmas que queremos que cumpla.

Niveles de cumplimento
No todos los lenguajes son blanco y negro, hay escala de grises por lo que necesitamos determinar el nivel de
cumplimento de los paradigmas en un lenguaje, de esta manera, distinguimos:

 Paradigma obligatorio
o El paradigma se cumple inevitablemente.
 Paradigma soportado
o El paradigma está muy preparado para ser utilizado, sería muy difícil hacer algo sin cumplir ese paradigma.
 Paradigma permitido
o El paradigma es difícil de conseguir puesto que el lenguaje no está preparado para él, pero no imposible.
 Paradigma no permitido
o El paradigma en cuestión es imposible de conseguir.
Clasificaciones de los paradigmas en súper-conjuntos. En base a una perspectiva.
Realizaremos clasificaciones de los PdP, mediante  una perspectiva elevada.
Paradigmas de visión
Lenguajes de Paradigmas elevada, en base a una
Clasifica a Clasifica a perspectiva
programación

1. Perspectiva de clasificación
a. Según la clasificación que crean sobre los lenguajes:
i. Paradigmas generales:
1. Particionan el total de los
lenguajes de programación
2. No cumplir el paradigma tiene
relevancia
ii. Paradigmas complementarios
1. Pares de paradigmas dondeNo cumplir uno
significa cumplir el otro
iii. Paradigmas específicos:
1. Partición que afecta a todos los lenguajes, los cuales pueden cumplir o no el paradigma.
2. No cumplir el paradigma  Es irrelevante
b. Según el tipo de restricciones que el paradigma establece en los lenguajes que lo cumplen:
i. Paradigmas de Objetivo:
1. Establecen la misión del lenguaje
2. Establece el significado de las sentencias (contenido del código)
ii. Paradigmas de Estructura:
1. Establecen la forma que debería seguir el programaPara evitar problemas y conseguir ventajas.
2. Perspectiva de evolución:
a. Primera línea evolutiva, el control de la memoria:
i. Imperativo > Declarativo
b. Segunda línea evolutiva, la estructura del código:
i. Sin organización > Estructurado > Orientado a Objetos > Orientado a Aspectos
c. Tercera línea evolutiva:
i. Secuencial > Concurrente > Distribuida > Cliente/Servidor
3. Perspectiva de relación con el hardware
a. Imperativo vs Declarativo:
i. Imperativo:
1. Como el hardware actual
ii. Declarativo:
1. Más cercano al estilo humano
2. Independiente del hardware.
b. Concurrencia paralela vs Concurrencia no paralela
c. Orientado a objetos:
i. Lejano del hardware
o Imperativa:
 Orientado a la acción, describen como se utiliza la memoria para obtener los resultados.
 Se sigue un control de flujo explícito que modifica el estado del programa. En este control, se ejecutan
sentencias que pueden ser:
 De asignación (variables, expresiones, funciones, operadores)
 De control de flujo (saltos, iteraciones, tratamiento de excepciones, etc.)
o Declarativo:
 Describen qué se desea realizar con la memoria, no el manejo directo de ella.
 No hay control de flujo explícito.
 Dos tipos de paradigmas que cumplen el paradigma declarativo:
 Funcional:
o Basado en funciones y expresiones, sin variables ni procedimientos explícitos y con un
uso acusado de la recursión.
o Ventajas:
 Gran expresividad, extensibilidad y fácil de corregir
 Ausencia de efectos laterales (sin problemas de seguridad)
o Inconvenientes:
 Complicado(recursividad)
 Lógico:
o Basado en la lógica de predicados, en el razonamiento lógico para responder a las
demandas del usuario.
o Maneja relaciones entre datos(hechos) en vez de funciones.
o Concurrente
 Capaz de realizar simultáneamente varias tareas, dividimos mediante algoritmos el trabajo en tareas y
necesitamos nuevas librerías y hardware específico.
 Dos enfoques distintos:
 Concurrente de memoria compartida:
o Una única memoria para toda la máquina
o Comportamiento independiente del nº de procesadores
o Más procesadores  Mayor rendimiento
 Concurrencia distribuida:
o Varias máquinas y no memoria única.
o Los procesos se intercambian información a través de una red de comunicaciones.
o Orientado a objetos
 El objeto:
 Entidad central del paradigma
 tipo de datos que engloba características del objeto del mundo real
 Modela los atributos y contienen los algoritmos para manipularlos (métodos)
 Es una evolución del paradigma de estructura, en donde se sigue una organización del código para
evitar problemas y obtener ventajas.
 Ventajas:
 Encapsulación Alto grado de reutilización del código
 Abstracción
 Facilidades, flexibilidad, proceso de creación más rápido.
o De tiempo real
 Funcionamiento bajo Restricciones de tiempo
 Características: Control permanente y simultáneo sobre la ejecución
 Uso mayoritario en aplicaciones de control

You might also like