Está en la página 1de 5

Paradigmas de Programacin

I srael Uriel Grajales Hernndez


I nstituto Tecnolgico Superior de Huatusco, Mxico.
mmessi19_10@hotmail.com


Abstract- Este es un artculo sobre los Paradigmas de
Programacin, donde se detallan los tipos, sus funciones,
aplicaciones y dems, para mejorar la comprensin del
estudiante. Analizar las estructuras de cada uno y cul es el
mejor para ms fcil utilizacin y comprensin.


I. INTRODUCCIN

Para empezar tenemos que tener claro que es el concepto de
paradigma. Un paradigma de programacin es una coleccin de
patrones conceptuales que juntos modelan el proceso de diseo y
determinan la estructura del programa. En nuestro caso, un programa
escrito en un lenguaje con paradigma declarativo, se construye con
hechos, reglas, construcciones, relaciones o un conjunto de
propiedades que nos pueda dar una solucin. Dentro del paradigma
declarativo podemos encontrar los siguientes tipos:

Paradigma Funcional
Paradigma Lgico
Paradigma Transformacional
Paradigma Relacional


II. PARADIGMA DE PROGRAMACION

Un paradigma de programacin es una propuesta tecnolgica
que es adoptada por una comunidad de programadores cuyo ncleo
central es incuestionable en cuanto a que nicamente trata de resolver
uno o varios problemas claramente delimitados. Es un estilo de
programacin empleado. La resolucin de estos problemas debe
suponer consecuentemente un avance significativo en al menos un
parmetro que afecte a la ingeniera de software.

Un paradigma de programacin est delimitado en el tiempo en
cuanto a aceptacin y uso ya que nuevos paradigmas aportan nuevas
o mejores soluciones que la sustituyen parcial o totalmente.

El paradigma de programacin que actualmente es el ms usado
es la orientacin a objetos. El ncleo central de este paradigma es la
unin de datos y procesamiento en una entidad llamada "objeto",
relacionable a su vez con otras entidades "objeto".

Con la orientacin a objetos y caractersticas como el
encapsulado, polimorfismo o la herencia se permiti un avance
significativo en el desarrollo de software a cualquier escala de
produccin.

La orientacin a objeto parece estar ligada en sus orgenes con
lenguajes como Lisp y Simula aunque el primero que acu el ttulo
de programacin orientada a objetos fue Smalltalk.


III. TIPOS

Imperativo o por procedimientos: es considerado el ms
comn y est representado, por ejemplo, por C, BASIC o
Pascal.
Funcional: est representado por Scheme o Haskell. Este es
un caso del paradigma declarativo.
Lgico: est representado por Prolog. Este es otro caso del
paradigma declarativo.
Declarativo: por ejemplo la programacin funcional,
la programacin lgica, o la combinacin lgico-funcional.
Orientado a objetos: est representado por Smalltalk, un
lenguaje completamente orientado a objetos.
Programacin dinmica: est definida como el proceso de
romper problemas en partes pequeas para analizarlos.

Si bien puede seleccionarse la forma pura de estos paradigmas
al momento de programar, en la prctica es habitual que se mezclen,
dando lugar a la programacin multiparadigma.
Actualmente el paradigma de programacin ms usado es el de
la programacin orientada a objetos.


Fig. 1 Tipos de Paradigmas de Programacin


IV. PROGRAMACION DECLARATIVA

La Programacin Declarativa, en contraposicin a
la programacin imperativa es un paradigma de programacin que
est basado en el desarrollo de programas especificando o
"declarando" un conjunto de condiciones, proposiciones,
afirmaciones, restricciones, ecuaciones o transformaciones que
describen el problema y detallan su solucin. La solucin es obtenida
mediante mecanismos internos de control, sin especificar
exactamente cmo encontrarla (tan slo se le indica a
la computadora qu es lo que se desea obtener o qu es lo que se est
buscando). No existen asignaciones destructivas, y las variables son
utilizadas con Transparencia referencial.

En la programacin declarativa las sentencias que se utilizan lo
que hacen es describir el problema que se quiere solucionar, pero no
las instrucciones necesarias para solucionarlo. Esto ltimo se
realizar mediante mecanismos internos de inferencia de informacin
a partir de la descripcin realizada.

A. Tipos

Existen varios tipos de lenguajes declarativos:

Los lenguajes lgicos, como Prolog.
Los lenguajes algebraicos, como Maude y SQL
Los lenguajes funcionales, como Haskell

B. Ventajas

Se ha dicho que los lenguajes declarativos tienen la ventaja de
ser razonados matemticamente, lo que permite el uso de
mecanismos matemticos para optimizar el rendimiento de los
programas.
1

Son fiables, elegantes y expresivos.


V. PROGRAMACION FUNCIONAL

La programacin funcional es un paradigma de
programacin declarativa basado en la utilizacin de funciones
aritmticas que no maneja datos mutables o de estado. Enfatiza la
aplicacin de funciones, en contraste con el estilo de programacin
imperativa, que enfatiza los cambios de estado. La programacin
funcional tiene sus races en el clculo lambda, un sistema formal
desarrollado en los aos 1930 para investigar la definicin de
funcin, la aplicacin de las funciones y la recursin. Muchos
lenguajes de programacin funcionales pueden ser vistos como
elaboraciones del clculo lambda.

Los lenguajes de programacin funcional, especialmente los que
son puramente funcionales, han sido enfatizados en el ambiente
acadmico principalmente y no tanto en el desarrollo de software
comercial. Sin embargo, lenguajes de programacin importantes tales
como Scheme, Erlang, Rust, Objective Caml y Haskell, han sido
utilizados en aplicaciones comerciales e industriales por muchas
organizaciones. La programacin funcional tambin es utilizada en la
industria a travs de lenguajes de dominio especfico como R
(estadstica), Matemtica (matemticas simblicas), J y K (anlisis
financiero), F# en Microsoft.NET y XSLT (XML). Lenguajes de uso
especfico usados comnmente como SQL y Lex/Yacc, utilizan
algunos elementos de programacin funcional, especialmente al
procesar valores mutables. Las hojas de clculo tambin pueden ser
consideradas lenguajes de programacin funcional.

La programacin funcional tambin puede ser desarrollada en
lenguajes que no estn diseados especficamente para la
programacin funcional. En el caso de Perl, por ejemplo, que es un
lenguaje de programacin imperativo, existe un libro que describe
cmo aplicar conceptos de programacin funcional. JavaScript, uno
de los lenguajes ms ampliamente utilizados en la actualidad,
tambin incorpora capacidades de programacin
funcional. Python tambin incorpora particularidades de los
lenguajes funcionales como listas de comprensin y funciones de
tratamiento de listas como matemtica de conjuntos.

A. Caractersticas

Los programas escritos en un lenguaje funcional estn
constituidos nicamente por definiciones de funciones, entendiendo
stas no como subprogramas clsicos de un lenguaje imperativo, sino
como funciones puramente matemticas, en las que se verifican
ciertas propiedades como la transparencia referencial (el significado
de una expresin depende nicamente del significado de sus sub
expresiones), y por tanto, la carencia total de efectos colaterales.

Otras caractersticas propias de estos lenguajes son la no
existencia de asignaciones de variables y la falta de construcciones
estructuradas como la secuencia o la iteracin (lo que obliga en la
prctica a que todas las repeticiones de instrucciones se lleven a cabo
por medio de funciones recursivas). Existen dos grandes categoras
de lenguajes funcionales: los funcionales puros y los hbridos.

B. Lenguajes Funcionales

Entre los lenguajes funcionales puros, cabe destacar
a Haskell y Miranda. Los lenguajes funcionales hbridos ms
conocidos son Scala, Lisp, Clojure, Scheme, Ocaml, SAP y Standard
ML (estos dos ltimos, descendientes del lenguajeML). Erlang es
otro lenguaje funcional de programacin
concurrente. Matemtica permite la programacin en mltiples
estilos, pero promueve la programacin funcional. R tambin es un
lenguaje funcional dedicado a la estadstica.
3
Recientemente
Microsoft Research est trabajando en el lenguaje F# (Functional#).
.


Entre otros lenguajes que se podran utilizar para programacin
funcional se podran incluir a Perl, pues, aunque es un lenguaje de
propsito muy general, se pueden realizar programas usando
exclusivamente funciones definidas por el usuario; as como Python,
como lenguaje que incorpora el paradigma funcional; o Ruby.

C. Ventajas y Desventajas

Ventajas

Fuertemente tipados
Incorporan funciones de orden superior
Evaluacin paralela
Reutilizacin de cdigo
Mayor abstraccin
Datos potencialmente infinitos
Facilidad a la hora de implementar estructuras de datos
complejas

Desventajas

Falta de estandarizacin
Bajo rendimiento de los programas


VI. PROGRAMACION LOGICA

La programacin lgica es un tipo de paradigmas de
programacin dentro del paradigma de programacin declarativa. El
resto de los sub paradigmas de programacin dentro de la
programacin declarativa son: programacin funcional,
programacin con restricciones, programas DSL (de dominio
especfico) e hbridos.

La programacin lgica gira en torno al concepto de predicado,
o relacin entre elementos. La programacin lgica encuentra
su hbitat natural en aplicaciones de inteligencia artificial o
relacionada: Sistemas expertos, donde un sistema de informacin
imita las recomendaciones de un experto sobre algn dominio de
conocimiento.

Demostracin automtica de teoremas, donde un programa
genera nuevos teoremas sobre una teora existente.

Reconocimiento de lenguaje natural, donde un programa es
capaz de comprender (con limitaciones) la informacin contenida en
una expresin lingstica humana.
Etc.

La programacin lgica tambin se utiliza en aplicaciones ms
"mundanas" pero de manera muy limitada, ya que la programacin
tradicional es ms adecuada a tareas de propsito general.




A. Lenguajes

El lenguaje de programacin lgica por excelencia es Prolog,
que cuenta con diversas variantes. La ms importante es la
programacin lgica con restricciones (vase artculo
sobre programacin con restricciones), que posibilita la resolucin de
ecuaciones lineales adems de la demostracin de hiptesis.

B. Ventajas y Desventajas

Ventajas

Simplicidad
Cercana a las especificaciones del problema realizada con
lenguajes formales
Sencillez, potencia y elegancia
Metodologa rigurosa de especificacin
Sencillez en la implementacin de estructuras complejas

Desventajas

Poco eficientes
Poco utilizado en aplicaciones reales


VII. PROGRAMACION IMPERATIVA

La programacin imperativa, en contraposicin a
la programacin declarativa es un paradigma de programacin que
describe la programacin en trminos del estado del programa y
sentencias que cambian dicho estado. Los programas imperativos son
un conjunto de instrucciones que le indican al computador cmo
realizar una tarea.

Los lenguajes imperativos de alto nivel usan variables y
sentencias ms complejas, pero an siguen el mismo paradigma. Las
recetas y las listas de revisin de procesos, a pesar de no ser
programas de computadora, son tambin conceptos familiares
similares en estilo a la programacin imperativa; donde cada paso es
una instruccin.

Los primeros lenguajes imperativos fueron los lenguajes de
mquina de los computadores originales. En estos lenguajes, las
instrucciones fueron muy simples, lo cual hizo la implementacin de
hardware fcil, pero obstruyendo la creacin de programas
complejos. Fortran, cuyo desarrollo fue iniciado en 1954 por John
Backus en IBM, fue el primer gran lenguaje de programacin en
superar los obstculos presentados por el cdigo de mquina en la
creacin de programas complejos.







A. Lenguajes Imperativos

BASIC
C
Fortran
Pascal
Perl
PHP
Lua
Java
Python
Go


VIII. PROGRAMACION ORIENTADA A OBJETOS

La programacin orientada a objetos o POO (OOP segn sus
siglas en ingls) es un paradigma de programacin que usa
los objetos en sus interacciones, para disear aplicaciones y
programas informticos.

Est basado en varias tcnicas,
incluyendo herencia, cohesin, abstraccin, polimorfismo, acoplamie
nto y encapsulamiento. Su uso se populariz a principios de la
dcada de los aos 1990. En la actualidad, existe una gran variedad
de lenguajes de programacin que soportan la orientacin a objetos.

Los objetos son entidades que tienen un
determinado estado, comportamiento (mtodo) e identidad:

El estado est compuesto de datos o informaciones; sern
uno o varios atributos a los que se habrn asignado unos
valores concretos (datos).
El comportamiento est definido por los mtodos o
mensajes a los que sabe responder dicho objeto, es decir,
qu operaciones se pueden realizar con l.
La identidad es una propiedad de un objeto que lo
diferencia del resto; dicho con otras palabras, es su
identificador (concepto anlogo al de identificador de
una variable o una constante).

A. Caractersticas

Existe un acuerdo acerca de qu caractersticas contempla la
"orientacin a objetos". Las caractersticas siguientes son las ms
importantes:

Abstraccin
Encapsulamiento
Modularidad
Principio de ocultacin
Polimorfismo
Herencia
Recoleccin de basura

IX. PROGRAMACION DINAMICA

La programacin dinmica es un mtodo para reducir el tiempo
de ejecucin de un algoritmo mediante la utilizacin de sub
problemas superpuestos y subestructuras ptimas, como se describe a
continuacin.

El matemtico Richard Bellman invent la programacin
dinmica en 1953 que se utiliza para optimizar problemas complejos
que pueden ser discreteados y secuencializados.

La programacin toma normalmente uno de los dos siguientes
enfoques:

Top-down: El problema se divide en sub problemas, y
estos se resuelven recordando las soluciones por si fueran
necesarias nuevamente. Es una combinacin
de memorizacin y recursin.

Bottom-up: Todos los problemas que puedan ser necesarios
se resuelven de antemano y despus se usan para resolver
las soluciones a problemas mayores. Este enfoque es
ligeramente mejor en consumo de espacio y llamadas a
funciones, pero a veces resulta poco intuitivo encontrar
todos los sub problemas necesarios para resolver un
problema dado.

La programacin dinmica es un enfoque general para la
solucin de problemas en los que es necesario tomar decisiones en
etapas sucesivas. Las decisiones tomadas en una etapa condicionan la
evolucin futura del sistema, afectando a las situaciones en las que el
sistema se encontrara en el futuro (denominadas estados), y a las
decisiones que se plantearan en el futuro.

A. Modelos

Existen 3 modelos diferentes manejados por WINQSB:

Problema de la Diligencia
Problema de la Mochila
Programacin de Produccin e Inventarios

B. Caractersticas

Puede utilizarse en problemas: lineales o no lineales,
determinsticos o estocsticos, univariados o multivariados.
Es til para resolver un problema donde se debe tomar una
serie de decisiones interrelacionadas.
Formato general: a diferencia de la P.L, la Programacin
Dinmica no tiene formulacin matemtica estndar. Se
trata de un enfoque de tipo general para la solucin de
problema y las ecuaciones se derivan de sus condiciones
individuales.


X. CONCLUSIONES

En los Paradigmas de Programacin, los tipos de programacin
tienen sus ventajas e inconvenientes. La programacin lgica no es
muy usada en aplicaciones reales debido a su alta ineficiencia. La
programacin funcional cada da est ms de moda gracias al uso de
poder crear estructuras de datos muy complejas con un cdigo muy
simple. Si a ello le sumamos que se le puede integrar con el lenguaje
C, nos da un lenguaje bastante potente y usable.

As mismo es mejor implementar la que ms se apegue a
nuestras habilidades, para tener un mejor resultado.

REFERENCIAS

[1] Wikipedia y la Programacin Declarativa
[2] Wikipedia y la Programacin Lgica
[3] Wikipedia y la Programacin Funcional
[4] www.virtual.unal.edu.co
[5] Algoritmia/Programacin dinmica - Wikilibros
es.wikibooks.org
[6] Programacin Lgica y Funcional - Epistemowikia
cala.unex.es

También podría gustarte