Paradigma
Thomas Kuhn, Structure of Scientific Revolutions (1962): "A
paradigm is a constellation of concepts, values, perceptions and
practices shared by a community which forms a particular vision of
reality that is the basis of the way a community organises itself". Un
paradigma es una amalgama de conceptos, valores, percepciones y
prácticas compartidas por una comunidad que construye una visión
particular de la realidad que es la base de la forma en la que la
comunidad se organiza a sí misma.
En pocas palabras, es una
forma de pensar, una forma de hacer las cosas: una forma de enfocar la
realidad, un modelo de la realidad. A veces los paradigmas son
conscientes, muchas veces no. Los paradigmas, pueden ser negativos o
positivos, aceptarse o no aceptarse.
Ejemplo: ¿las cosas más caras son de mayor calidad? http://www.yorokobu.es/vino-caro/
Paradigmas en la programación
A la hora de programar también hay paradigmas: hay maneras de enfocar cómo diseñar un programa. Entre ellas:
- Paradigma imperativo:
el ordenador acepta órdenes en secuencia, y va cambiando el valor o
estado de ciertas variables hasta conseguir la resolución de un problema
(algoritmo). Hay una estructura y existe también una modularidad, es
decir, ciertas partes del programa pueden reutilizarse varias veces en
él u otros programas.
- Paradigma de programación orientado a objetos (POO): es una variante del paradigma imperativo en el que, además, se declaran objetos que tienen propiedades y métodos propios.
- Paradigma dinámico: un problema complejo se resuelve dividiéndolo en problemas más pequeños y resolviendo estos últimos, de manera recursiva. Los algoritmos dinámicos intentan optimizarse evitando resolver subproblemas varias veces (memoización).
- Paradigma declarativo: en él el usuario describe el problema, sus condiciones e indica qué solución quiere encontrar, pero no da las instrucciones precisas de cómo encontrar la solución. Dentro del paradigma declarativo encontramos programación funcional (basada en funciones), lógica (basada en hechos, restricciones y planteamiento de hipótesis) y programación con restricciones.
- Multiparadigma: usar más de un paradigma de programación en un lenguaje. De hecho, Python es un lenguaje imperativo, que soporta la POO y que puede utilizar, por ejemplo, el lenguaje específico, de tipo declarativo SQL.
Enfoque top-down
En el enfoque top-down formulamos un problema de su generalidad a sus
partes. Vamos dividiendo el problema principal en subproblemas, cada
vez con mayor nivel de detalle hasta completar el problema en sus
totalidad.
Un enfoque top-down puro no resuelve el problema hasta no tener completado todos los niveles de subproblemas necesarios.
Se contrapone al enfoque bottom-up, en el que resolvemos pequeños
problemas para después unirlos o usarlos y poder resolver problemas de
mayor complejidad.
Actualmente se suele preferir usar un enfoque top-down, aunque con
uso de código para resolver problemas parciales, lo que le da cierto
aire de bottom-up. También se suele resolver el problema parcialmente
usando la técnica de top-down, y completarlo usando técnicas de
bottom-up o top-down.
No hay comentarios:
Publicar un comentario