ASI NACE UN PARADIGMA. . .
Un científico cerró cinco monos en una jaula grande, en cuyo centro ubicó una
escalera y en la cima de esta
puso un montón de bananas.
•
Cuando un mono subía la
escalera para agarrar las bananas, el científico lanzaba un chorro de agua fría
sobre los monos que quedaban en el suelo.
Después de algún tiempo, cuando un mono iba a subir la escalera, los restantes
le propinaban una paliza.
Motivo por lo cual, pasado un tiempo, a pesar de la tentación de las bananas,
ningún mono optaba por subir la escalera.
•
Luego, el científico sustituyó
uno de los monos y este, el primero que hizo fue subir la escalera, siendo
rápidamente bajado a palos por los otros.
Después de algunas palizas, el nuevo integrante del grupo ya no subió más la
escalera.
•
Un segundo mono fue sustituido,
y ocurrió lo mismo.
El primer sustituto participó con entusiasmo de la paliza al novato.
Un tercero fue cambiado, y se repitió el hecho.
El cuarto y, finalmente, el último de los veteranos fue sustituido.
•
El científico quedó, entonces,
con un grupo de cinco monos que, aun cuando nunca recibieron un baño del chorro
de agua fría, continuaban golpeando a aquel que intentase llegar a las bananas.
• Si fuese posible preguntar a algunos de ellos ¿Por qué le pegaban a
quien intentase subir la escalera?, con certeza la respuesta sería:
"No sé, aquí las cosas siempre se han hecho así..."
..Te suena conocido...?
Pero así; nació un paradigma...!!
Te preguntaste por qué; hacemos las cosas de una manera,
si quizás podemos hacerlas de otra?
Pues bien. . .
cada, una de nuestras actividades diarias,..
Está guiada por un paradigma...!
ü CLASIFICACIÓN DE PARADIGMAS SEGUN FLOYD
A tal diversidad de criterios, se suma el
hecho que, para resolver un problema, inexorablemente el paradigma a usar, debe
ser codificado en un lenguaje de programación compatible con él y capaz
soportar los mismos conceptos del propio paradigma.
Esta compatibilidad hace confundir los
conceptos de paradigma y lenguaje de programación, mezclando al propio
paradigma con su herramienta de proceso. Al respecto, para que no caer en este
error conviene destacar que un mismo paradigma puede ser soportado por más de
un lenguaje.
En dicha confusión cayó, Floyd cuando
clasificó los paradigmas, de acuerdo a la capacidad de expresión, en tres
categorías:
·
PARADIGMAS QUE SOPORTAN
PROGRAMACION DE BAJO NIVEL:
La actividad de estos paradigmas es poco racional,
alejada de la forma de pensar del programador, porque operan de manera similar
a la forma al hardware del ordenador, del modo como lo hacen físicamente los
componentes internos del computador.
Basados en tal
cualidad, podemos afirmar que en este nivel operan, los lenguajes de segunda
generación, tales como versiones primarias del BASIC, FORTRAN o COBOL, los
cuales trataban de emular al LENGUAJE ENSAMBLADOR, perteneciente a la primera
generación, capaz de comandar directamente en las mismísimas entrañas de la
máquina, accediendo a los componentes del hardware disponible.
En sus orígenes dichos lenguajes no
soportaban algoritmos con procedimientos y funciones, variables locales, ni
punteros, tampoco listas, pilas, colas o árboles con asignación dinámica de
memoria, minimizando así el diseño directo de algoritmos básicos. Que había que
trabajar arduamente.
·
PARADIGMAS QUE SOPORTAN
DISEÑO DE ALGORITMOS:
A este grupo pertenecen los lenguajes de 3ra
generación, que ya poseen capacidad para manejar procedimientos, funciones,
variables locales y punteros para la asignación dinámica de memoria.
Aunque el
lenguaje C pertenece, por derecho de origen, a esta categoría, actualmente
todos los lenguajes de programación, soportan con solvencia el manejo del
diseño algorítmico.
Por otra parte, C
por su flexibilidad también puede acceder a las entrañas de la CPU, por lo que
sería, según Floyd, un lenguaje de bajo nivel.
El propio entorno
de trabajo del lenguaje, permite generar automáticamente todo el código del
programa, puedes generar, usando Delphi o C++ Builder o Visual C++, o Visual
Basic, programas completos para administrar toda una base de datos. Sin
escribir por consola, ni una sola línea de código.
·
PARADIGMAS QUE SOPORTAN
PROGRAMACION DE ALTO NIVEL:
Estos paradigmas recurren para su codificación
a los lenguajes orientados a objetos, que tiene como pionero a PROLOG, el cuál
a la fecha ya es historia superada frente a la potencia del entornos actuales
de programación, tales como Delphi o C++ Builder o Visual C++, o Visual o
Basic, o J++Builder o Visual J++.
Para Floyd las
soluciones de programación de alto nivel, pasan por usar la lógica como método
de programación, por usar de reglas de producción y la programación funcional.
Estas variantes
de la programación tradicional estarían soportadas por lenguajes, como PROLOG,
ML, LISP, o entornos de Ingeniería del Conocimiento como ART, KC o KEE.
Especialmente usados en el ámbito académico y escasamente en la industria.
ü CLASES DE PARADIGMAS: SEGUN TIPO DE PROGRAMACIÓN
Dado que los paradigmas, además son
colecciones de modelos conceptuales que definen procesos de diseño, destinados
a determinar la estructura, la sintaxis y la semántica de programas. Estos,
considerando tal aspecto, pueden asimilarse a los siguientes tipos:
§ PROGRAMACION BASADO EN REGLAS:
De aplicación en la ingeniería del conocimiento
para desarrollar sistemas expertos, con núcleo de reglas de producción del tipo
if then.
§ PROGRAMACIÓN LÓGICA:
Entorno de programación conversacional,
deductivo, simbólico y no determinista apoyada en asertos y reglas lógicas.
§ PROGRAMACIÓN FUNCIONAL:
Entorno de programación interpretativo,
funcional y aplicativo, de formato funcional.
§ PROGRAMACIÓN HEURÍSTICA:
Moldean los problemas para aplicar heurísticas
según sistemas de visualización, búsqueda y métodos de solución. Pueden ser:
v Programación Paralela
v Programación Orientado a Objetos
v Programación Basado en Restricciones
v Programación Basado en Flujo de Datos
ü CLASIFICACIÓN DE PARADIGMAS SEGÙN AMBLER
Para clasificar
cada paradigma, toma como parámetro su manera lograr la solución al problema,
por lo tanto, de acuerdo al tipo de solución aplicada pueden existir las
siguientes categorías:
Solución => Paradigma
PROCEDIMENTAL => PROCEDIMENTAL
DEMOSTRATIVA => DEMOSTRATIVO
DECLARATIVA => DECLARATIVO
·
SOLUCIÓN PROCEDIMENTAL U
OPERACIONAL
Describe las etapas necesarias para construir
soluciones, señalando la forma de cómo obtenerlas. Se determina etapa a etapa
el modo de construir la solución, describiendo cómo obtener un resultado a
partir de un estado inicial.
En esta categoría
se incluyen los lenguajes clásicos de la primera a tercera generación,
incluyendo los orientados a objetos y los funcionales, que requieren
desarrollar técnicas de depuración y verificación del funcionamiento del
programa.
Los paradigmas
procedimentales u operacionales, promueven secuencias computacionales, donde
las variables que se relacionan con direcciones de memoria, pueden ser:
• MODIFICADAS: CON EFECTO DE
LADO
Que actualiza iterando datos y direcciones de
memoria de variables, registrando múltiples asignaciones hasta lograr el
resultado. Sus tipos son:
• NO MODIFICADAS: SIN EFECTO
DE LADO
Son aquellos que van creando continuamente nuevos
datos.
2.
SOLUCIÓN DEMOSTRATIVA:
Plantea la solución describiendo ejemplos y
promueve que el sistema generalice la solución de tales ejemplos para otros
casos.
Bajo este entorno denominado también
PARADIGMA por EJEMPLO, la solución a un problema se logra aplicando la
PROGRAMACION por EJEMPLO o DEMOSTRATIVA, donde el programador no requiere
especificar procedimentalmente cómo lograr la solución, sino que resuelve
programas similares, generalizando soluciones, ya sea por medio de simulación o
por inferencias.
.
ü CLASES DE PARADIGMAS: POR EFECTO DE LADO
•
PARADIGMA IMPERATIVO:
Procedimental con efecto de lado, representado
por la arquitectura de Von Neumman.
Algoritmo
+ Estructura de datos = Programa
•
PARADIGMA FUNCIONAL:
Procedimental sin efecto de lado, basado en el
modelo matemático de composición de funciones.
Funciones
+ Estructura de datos = Programa
•
PARADIGMA LOGICO:
Seudo declarativo, basado en conjuntos de
hechos y reglas lógicas pre establecidas.
Lógica
+ Control de datos = Programa
•
PARADIGMA ORIENTADO A
OBJETO:
Procedimental con efecto de lado
•
PARADIGMA HEURISTICO:
Basado en reglas de buena lógica.