Вы находитесь на странице: 1из 10

INSTITUTO TECNOLOGICO DE TUXTLA

GUTIERREZ

CRESUD ACALA
ASESOR:
Ing. Guadalupe Del Rosario Aguilar Lopez
MATERIA
Programacion Logica y funcional
UNIDA 2
TEMA
Concepto de Programacin Funcional
ALUMNA
Vargas Prez Mara de los ngeles 12270303 A

15 Cuatrimestre
ACALA CHIAPAS
OCTUBRE DEL 2015

1.INTRODUCCION
El presente trabajo muestra conceptos importantes sobre la

programacin

funcional, as como caractersticas que los hacen un enfoque particular y


novedoso de la programacin que lo convierten en una parte importante en el rea
del desarrollo de software

2.PRIMER CONCEPTO DE PROGRAMACIN


FUNCIONAL.
El estilo de programacin imperativa (es decir, la programacin a travs de
acciones que modifican el estado del computador) ha dominado el panorama de la
programacin desde sus inicios; los lenguajes de ms amplio uso estn basados
en este paradigma: Fortran, e, C++, Pascal, Basic, etc. Una razn fundamental de
este dominio reside en que los lenguajes imperativos son ms cercanos a la forma
como realmente funciona la mquina.
Existen otros paradigmas de programacin diferentes al imperativo como la
programacin funcional y la programacin lgica, cuyo estudio, desarrollo y uso
han estado principalmente restringidos al mbito acadmico. La programacin
funcional, es casi tan antigua como la imperativa; el primer lenguaje funcional,
LlSP, fue desarrollado en la misma poca en la que se desarroll FORTRAN.
Sin embargo, la programacin funcional ha estado tradicionalmente circunscrita a
reas de aplicacin especficas como la inteligencia artificial y la computacin
simblica. A pesar de la hegemona de la programacin imperativa la
programacin funcional cada vez toma ms fuerza gracias a su capacidad
expresiva, que permite escribir programas ms compactos, y a su transparencia
referencial que posibilita la sencilla verificacin matemtica de propiedades de los
programas. Igualmente, caractersticas como la recoleccin automtica de basura,
los sistemas de inferencia de tipos, el polimorfismo, la orientacin a objetos, el
emparejamiento de patrones, los algoritmos eficientes de compilacin, se han
desarrollado gracias al gran trabajo investigativo de los ltimos aos.
Todo lo anterior permite ubicar a la programacin funcional como una importante
opcin para el desarrollo de software que facilite hacer realidad los ideales de la

ingeniera de software como son: la reusabilidad, la modularidad, la mantenibilidad


y la correccin. En el presente artculo se pretende mostrar las ideas subyacentes
a la programacin funcional, as como ilustrar las caractersticas que la hacen un
enfoque particular y novedoso de la programacin. De igual manera, se hablar
brevemente de su historia desarrollo y perspectivas.
Una definicin de programacin funcional generalmente aceptada es la siguiente:
"El estilo de programacin que enfatiza la evaluacin de expresiones, antes que la
ejecucin de comandos". La definicin anterior es bastante amplia y tal vez
ambigua, pues no se precisa a qu se refiere el nfasis del cual habla. Esto refleja
la frontera difusa que existe entre lenguajes funcionales puros y lenguajes no
funcionales; en esta frontera se ubican lenguajes como LISP, SCHEME y ML, que
nadie dudara en catalogar como funcionales a pesar de que tienen caractersticas
no puras como asignaciones y efectos laterales, a diferencia de los lenguajes
funcionales puros, los cuales desarrollan todos su cmputos exclusivamente a
travs de la aplicacin de funciones.
Un programa funcional est constituido enteramente por funciones; el programa
principal es una funcin que toma como argumento la entrada al programa y
genera la salida del programa como su resultado. Tpicamente, la funcin principal
se define en trminos de otras funciones, y stas, a su vez, en trmino de ms
funciones; esta cadena finaliza en funciones predefinidas o primitivas.
A simple vista, un programa en lenguaje C se ajustara a la definicin de programa
funcional (de hecho algunas personas consideran que el C es un lenguaje
funcional); sin embargo, la principal diferencia de los programas funcionales puros
respecto a los programas convencionales (imperativos) es que los nicos
elementos constructores en los primeros son la definicin y la aplicacin de
funciones, mientras que en los programas imperativos se utilizan, adems,
variables, asignaciones ciclos iterativos, etctera.
Parece muy restrictivo el hecho de no poder utilizar variables, ni asignaciones, ni
ciclos iterativos; sin embargo se ha demostrado matemticamente que la

definicin y la aplicacin de funciones era suficiente para construir cualquier


funcin computable. (Gonzle)

3.SEGUNDO CONCEPTO DE PROGRAMACIN


FUNCIONAL.
Son aquellos lenguajes donde las variables no tienen estado no hay cambios en
stas a lo largo del tiempo y son inmutables no pueden cambiarse los valores a
lo

largo

de

la

ejecucin.

Adems

los

programas

se

estructuran

componiendo expresiones que se evalan como funciones. Dentro de los


lenguajes funcionales tenemos LISP, SCHEME, CLOJURE, HASKELL, OCAML Y
STANDARD ML, entre otros. Estos lenguajes estn diversidad de tipificacin,
donde se encuentran lenguajes dinmicos, estticos y estticos fuertes.
En los lenguajes funcionales las instrucciones cclicas como for, while y dowhile no existen. Todo se procesa usando recursividad y funciones de alto orden.
Esto se debe a los fundamentos matemticos de la mayora de los lenguajes
funcionales, principalmente con bases en el sistema formal diseado por Alonzo
Church para definir cmputos y estudiar las aplicaciones de las funciones llamado
Clculo Lambda. En este sistema formal se puede expresar recursividad en las
funciones, y entre otras cosas interesantes, se pueden expresar combinadores
funciones sin variables libres como el Combinador de Punto Fijo o Y-Combinator,
que expresa recursividad sin hacer llamadas recursivas. En el Clculo Lambda
existen tres transformaciones esenciales, la conversin , la reduccin y la
conversin . En la conversin se sustituyen los nombres de las variables para
dar mas claridad a la aplicacin de las funciones, por ejemplo evitando duplicados
en sus nombres. En la reduccin se traza el llamado de las funciones
sustituyendo las funciones por sus expresiones resultantes. Finalmente en las
conversiones

se

busca

las

equivalencias

de

trazado

de

funciones

sustituyndolas por sus equivalentes. Estastransformaciones tambin pueden ser

aplicadas en los lenguajes funcionales o en su mayora dando lugar


lenguajes que cuentan con una gran expresividad y consistencia.
Les pondr el clsico ejemplo del chiste geek del castigo Debo poner atencin en
clases. La respuesta geek expresada en PHP est escrita a continuacin. Donde
PHP es un lenguaje dinmico, no necesita declarar variables y es un lenguaje
orientado a objetos con races imperativas. Sus instrucciones son paso a paso, y
no constituyen una nica expresin reducible.

Si usamos Haskell como ejemplo, que es un lenguaje funcional con tipificacin


esttica fuerte, requiere que las variables sean declaradas con un tipo la
mayora de las veces y es muy expresivo, donde el siguiente ejemplo dice
repetir la cadena, tomar 500 elementos y con esa lista ejecutar la funcin
mondica putStrLn, que esta hecha para el Monad IO e imprime la el mensaje las
500 veces solicitada.

En Lisp sera similar, pero Lisp es de tipificacin dinmica y no


necesita declarar variables, dando lugar a un programa muy simple de
una sola linea. Donde tambin tenemos lenguajes como Clojure, que es
un dialecto de Lisp y soporta construcciones muy similares a las del

ejemplo en Lisp, dando lugar a programas expresivos y simples, pero


que corren sobre la mquina virtual de Java o JVM.

Actualmente los lenguajes orientados a objetos ms comunes estn integrando


caractersticas funcionales, como Java, que acaba de incluir funciones anonimas.
Pero tambin estn los lenguajes que a lo largo de su historia han sido multiparadigma, como Python, e implementa caractersticas funcionales, procedurales
y orientadas a objetos. (Diaz,

2012)

4.CONCLUCION
Como bien en este presente trabajo de la programacin funcional nos dice que es
un paradigma independiente ya que su creacin fue debida a las necesidades de
los investigadores en el campo de la inteligencia artificial en el cual Como aspecto
prctico casi todos los lenguajes funcionales soportan el concepto de variable,
asignacin y bucle.

5.BIBLIOGRAFIAS

Diaz, E. (11 de noviembre de 2012). Recuperado el 01 de octubre de 2015, de


file:///F:/guadalupe%202.1/Qu%C3%A9%20es%20la%20Programaci
%C3%B3n%20Funcional_%20-%20La%20Sombra%20de%20Dijkstra.html
Gonzle, F. A. (s.f.). universidad nacional de colombia. Recuperado el 02 de
Octubre de 2015, de file:///C:/Users/CRESUD/Downloads/DialnetProgramacionFuncional-4902462.pdf

Вам также может понравиться