0% encontró este documento útil (0 votos)
46 vistas12 páginas

Programación Lógica y Funcional: Fundamentos

La programación lógica y funcional fueron explicadas. La programación lógica se basa en predicados y reglas lógicas para resolver problemas, mientras que la programación funcional se centra en funciones matemáticas sin efectos secundarios. Algunos lenguajes como Prolog usan programación lógica, mientras que lenguajes funcionales como Haskell se basan en el cálculo lambda puro. Ambos son estilos declarativos que resuelven problemas describiendo relaciones en lugar de pasos procedimentales.

Cargado por

ronmel
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
46 vistas12 páginas

Programación Lógica y Funcional: Fundamentos

La programación lógica y funcional fueron explicadas. La programación lógica se basa en predicados y reglas lógicas para resolver problemas, mientras que la programación funcional se centra en funciones matemáticas sin efectos secundarios. Algunos lenguajes como Prolog usan programación lógica, mientras que lenguajes funcionales como Haskell se basan en el cálculo lambda puro. Ambos son estilos declarativos que resuelven problemas describiendo relaciones en lugar de pasos procedimentales.

Cargado por

ronmel
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

ASIGNATURA:

Teoría de Lenguajes

TEMA:
Exposición

CATEDRATICO:
Ing. Kelvin Enamorado

ALUMNOS:
Eunice Amairany Hernández
José Amner Ramos
José Dimas Ramos
Ronmel Arsenio Romero
Sindy Josselin Jerezano
Yasmin Sarahi Andrade
PEÑA BLANCA, CORTES 31 DE JULIO
2016

OBJETIV
OS
 Conocer que es programación funcional y programación
lógica.
 Comprender los fundamentos y características de la
programación lógica.
 Conocer las ventajas y características de la programación
funcional.
INTROD
UCCIÓN
Una forma de razonar para resolver problemas en matemáticas se
fundamenta en la lógica de primer orden. Gracias al trabajo de algunos
matemáticos de finales del siglo pasado y principios de éste, se encontró la
manera de automatizar computacionalmente el razonamiento lógico,
particularmente para un conjunto significativo de la lógica de primer orden,
que permitió que la lógica matemática diera origen a otros tipos de lenguajes
de programación, conocidos como lenguajes lógicos. También se conoce a
estos lenguajes como lenguajes declarativos, porque todo lo que el
programador tiene que hacer para solucionar un problema es describirlo vía
axiomas y reglas de deducción.
La programación funcional es un estilo de programación que modela
computaciones como la evaluación de las expresiones.
Programación lógica.

Consiste en la aplicación del corpus de


conocimiento sobre lógica para el diseño
de lenguajes de programación; no debe
confundirse con la disciplina de la lógica computacional. La programación
lógica es un tipo de paradigmas de programación dentro del paradigma de
programación declarativa. El resto de los subparadigmas de programación
dentro de la programación declarativa son: programación funcional,
programación basada en restricciones, programas DSL (de dominio
específico) e híbridos. La programación lógica gira en torno al concepto de
predicado, o relación entre elementos. La programación funcional se basa en
el concepto de función (que no es más que una evolución de los predicados),
de corte más matemático.

La Programación Lógica estudia el uso de la lógica para el planteamiento de


problemas y el control sobre las reglas de inferencia para alcanzar la solución
automática.

La Programación Lógica, junto con la funcional, forma parte de lo que se


conoce como Programación Declarativa, es decir la programación consiste en
indicar como resolver un problema mediante sentencias, en la Programación
Lógica, se trabaja en una forma descriptiva, estableciendo relaciones entre
entidades, indicando no como, sino que hacer, entonces se dice que la idea
esencial de la Programación Lógica es

Programa= lógica + control


Lógica (programador): hechos y reglas para representar conocimiento

Control (interprete): deducción lógica para dar respuestas (soluciones)

La programación lógica intenta resolver lo siguiente:

Dado un problema S, saber si la afirmación A es solución o no del problema o


en qué casos lo es. Además, queremos que los métodos sean implantados en
máquinas de forma que la resolución del problema se haga de forma
automática.

La programación lógica: construye base de conocimientos mediante reglas y


hechos

Regla: implicación o inferencia lógica que deduce nuevo conocimiento, la


regla permite definir nuevas relaciones a partir de otras ya existentes

Ej.:

Mortal (x): - humano(x)

x es mortal si x es humano.

Hecho: declaración, cláusula o proposición cierta o falsa, el hecho establece


una relación entre objetos y es la forma más sencilla de sentencia
Ej.:

Humano (Sócrates); Sócrates es humano


Ama (Juan, María); ama Juan a María.

Consulta: se especifica el problema, la proposición a demostrar o el objetivo


Partiendo de que los humanos son mortales y de que Sócrates es humano,
deducimos que Sócrates es mortal.
Mortal (x): - humano(x); - los humanos son mortales; regla

Humano (Sócrates); Sócrates es humanos; hecho

Sócrates es mortal; consulta

La programación lógica comprende dos Paradigmas de Programación la


Programación Declarativa y la Programación funcional.

La programación declarativa gira en torno al concepto de predicado, o


relación entre elementos.

La programación funcional se basa en el concepto de función (que no es más


que una evolución de los predicados), de corte más matemático.

Fundamentos de la programación lógica

La mayoría de los Lenguajes de Programación se basan en la Teoría Lógica de


Primer Orden, aunque también incorporan algunos comportamientos de
orden superior, en este sentido, destacan los lenguajes funcionales ya que se
basan en el Cálculo Lambda, es la única teoría lógica de orden superior.

La Teoría Lógica de Primer Orden o también llamada lógica de predicados: es


un sistema deductivo basado en un Lenguaje Lógico Matemático formal de
gran utilidad para las Matemáticas, Filosofía, Lingüística y Computacional.
Incluye proposiciones lógicas, predicados y cuantificadores.

Características de la programación lógica

Unificación de términos.
Mecanismos de inferencia automática.
Recursión como estructura de control básica.
Visión lógica de la computación

Lenguajes de programación lógica


Un lenguaje es el CLP, pero el lenguaje de programación lógica por excelencia
es el PROLOG.

Prolog: es un Lenguaje de Programación diseñado para representar y utilizar


el conocimiento que se tiene sobre un determinado dominio. Los programas
en Prolog responden preguntas sobre el tema del cual tienes conocimiento.

La popularidad del lenguaje se debe a su capacidad de deducción y además


es un lenguaje fácil de usar por su semántica y sintaxis. Solo busca relaciones
entre los objetos creados, las variables y las listas, que son su estructura
básica.

Escribir un programa en Prolog consiste en declarar el conocimiento


disponible acerca de objetos, además de sus relaciones y sus reglas, en lugar
de correr un programa para obtener una solución, se hace una pregunta, el
programa revisa la base de datos para encontrar la solución a la pregunta, si
existe más de una solución, Prolog hace un barrido para encontrar soluciones
distintas. El propio sistema es el que deduce las respuestas a las preguntas
que se le plantean, dichas respuestas las deduce del conocimiento obtenido
por el conjunto de reglas dadas.

Campos de aplicación

· Sistemas Expertos, donde un Sistema de información mita las


recomendaciones de un experto sobre algún dominio de conocimiento.

· Demostración automática de teoremas, donde un programa genera nuevos


teoremas sobre una teoría existente.

·Reconocimiento de lenguaje natural, donde un programa es capaz de


comprender (con limitaciones) la información contenida en una expresión
lingüística humana.

·Inteligencia artificial

·Sistemas de información
Programación funcional
En ciencias de la computación, la programación
funcional es un paradigma de programación
declarativa basado en el uso de funciones
matemáticas, en contraste con la programación imperativa, que enfatiza los
cambios de estado mediante la mutación de variables. La programación
funcional tiene sus raíces en el cálculo lambda, un sistema formal
desarrollado en los años 1930 para investigar la definición de función, la
aplicación de las funciones y la recursión. Muchos lenguajes de programación
funcionales pueden ser vistos como elaboraciones del cálculo lambda.

En la práctica, la diferencia entre una función matemática y la noción de una


"función" utilizada en la programación imperativa, es que las funciones
imperativas pueden tener efectos secundarios, como cambiar el valor de
cálculos realizados previamente. Por esta razón carecen de transparencia
referencial, es decir, la misma expresión sintáctica puede resultar en valores
diferentes en varios momentos de la ejecución del programa. Con código
funcional, en contraste, el valor generado por una función depende
exclusivamente de los argumentos alimentados a la función. Al eliminar los
efectos secundarios se puede entender y predecir el comportamiento de un
programa mucho más fácilmente. Ésta es una de las principales motivaciones
para utilizar la programación funcional.

Los lenguajes de programación funcional, especialmente los puramente


funcionales, han sido enfatizados en el ambiente académico y no tanto en el
desarrollo comercial o industrial. Sin embargo, lenguajes de programación
funcional como Scheme, Erlang, Rust, Objective Caml , Scala, F# y Haskell,
han sido utilizados en aplicaciones comerciales e industriales por muchas
organizaciones. La programación funcional también es utilizada en la
industria a través de lenguajes de dominio específico como R (estadística),
Mathematica (matemáticas simbólicas), J y K (análisis financiero).

Los lenguajes de uso específico usados comúnmente como SQL y Lex/Yacc,


utilizan algunos elementos de programación funcional, especialmente al
procesar valores mutables. Las hojas de cálculo también pueden ser
consideradas lenguajes de programación funcional.

En ciencias de la computación, la programación funcional es un paradigma de


programación declarativa basado en el uso de funciones matemáticas, en
contraste con la programación imperativa, que enfatiza los cambios de
estado mediante la mutación de variables. La programación funcional tiene
sus raíces en el cálculo lambda, un sistema formal desarrollado en los años
1930 para investigar la definición de función, la aplicación de las funciones y
la recursión. Muchos lenguajes de programación funcionales pueden ser
vistos como elaboraciones del cálculo lambda.

En la práctica, la diferencia entre una función matemática y la noción de una


"función" utilizada en la programación imperativa, es que las funciones
imperativas pueden tener efectos secundarios, como cambiar el valor de
cálculos realizados previamente. Por esta razón carecen de transparencia
referencial, es decir, la misma expresión sintáctica puede resultar en valores
diferentes en varios momentos de la ejecución del programa. Con código
funcional, en contraste, el valor generado por una función depende
exclusivamente de los argumentos alimentados a la función. Al eliminar los
efectos secundarios se puede entender y predecir el comportamiento de un
programa mucho más fácilmente. Ésta es una de las principales motivaciones
para utilizar la programación funcional.

Los lenguajes de programación funcional, especialmente los puramente


funcionales, han sido enfatizados en el ambiente académico y no tanto en el
desarrollo comercial o industrial. Sin embargo, lenguajes de programación
funcional como Scheme, Erlang, Rust, Objective Caml , Scala, F# y Haskell,
han sido utilizados en aplicaciones comerciales e industriales por muchas
organizaciones. La programación funcional también es utilizada en la
industria a través de lenguajes de dominio específico como R (estadística),
Mathematica (matemáticas simbólicas), J y K (análisis financiero).
Los lenguajes de uso específico usados comúnmente como SQL y Lex/Yacc,
utilizan algunos elementos de programación funcional, especialmente al
procesar valores mutables. Las hojas de cálculo también pueden ser
consideradas lenguajes de programación funcional.

La programación funcional también puede ser desarrollada en lenguajes que


no están diseñados específicamente para la programación funcional. En el
caso de Perl, por ejemplo, que es un lenguaje de programación imperativo,
existe un libro que describe cómo aplicar conceptos de programación
funcional. JavaScript, uno de los lenguajes más ampliamente utilizados en la
actualidad, también incorpora capacidades de programación funcional.
Python también incorpora particularidades de los lenguajes funcionales como
listas de comprensión y funciones de tratamiento de listas como matemática
de conjuntos. Java en su versión 8, está incorporando la programación
funcional, así como el uso de las expresiones lambda.

Características

Los programas escritos en un lenguaje funcional están constituidos


únicamente por definiciones de funciones, entendiendo éstas no como
subprogramas clásicos de un lenguaje imperativo, sino como funciones
puramente matemáticas, en las que se verifican ciertas propiedades como la
transparencia referencial (el significado de una expresión depende
únicamente del significado de sus subexpresiones), y por tanto, la carencia
total de efectos colaterales.

Otras características propias de estos lenguajes son la no existencia de


asignaciones de variables y la falta de construcciones estructuradas como la
secuencia o la iteración (lo que obliga en la práctica a que todas las
repeticiones de instrucciones se lleven a cabo por medio de funciones
recursivas).

Existen dos grandes categorías de lenguajes funcionales: los funcionales


puros y los híbridos. La diferencia entre ambos estriba en que los lenguajes
funcionales híbridos son menos dogmáticos que los puros, al admitir
conceptos tomados de los lenguajes imperativos, como las secuencias de
instrucciones o la asignación de variables. En contraste, los lenguajes
funcionales puros tienen una mayor potencia expresiva, conservando a la vez
su transparencia referencial, algo que no se cumple siempre con un lenguaje
funcional híbrido.

Ventajas de usar un paradigma funcional

Entre las ventajas que suelen citarse de usar un paradigma funcional en la


programación de computadoras, están las siguientes:[1]

 Ausencia de efectos colaterales


 Proceso de depuración menos problemático
 Pruebas de unidades más confiables
 Mayor facilidad para la ejecución concurrente

Uso en la industria

La programación funcional es más popular en el ámbito académico que en


ámbitos industriales. Sin embargo, se han empezado a usar importantes
lenguajes de programación funcionales en sistemas comerciales o
industriales. Un ejemplo de lenguaje de programación funcional usado en el
ámbito industrial es Erlang, el cual fue desarrollado para poner en práctica
sistemas de tolerancia a fallos en las telecomunicaciones. Importantes
empresas como WhatsApp, Facebook, o T-Mobile optaron por Erlang como
lenguaje en alguno de sus desarrollos. Otro ejemplo de uso de los lenguajes
de programación funcionales en la industria es el caso del uso del Scheme de
Lisp, que fue usado como base en el desarrollo de aplicaciones para los
primeros ordenadores de la firma Apple Macintosh. De hecho, hoy en día,
está siendo usado para desarrollo de sistemas de simulación y de control de
telescopio. Haskell, es un ejemplo de lenguaje que se creó con propósito de
lenguaje de investigación pero que se ha usado para el desarrollo de sistemas
aeroespaciales, programación web y diseño de hardware. Otros lenguajes de
programación funcionales han sido usados en ámbitos comerciales y
financieros.
CONCLU
SIONES
 Aunque a primera vista pueda parecer que este tipo de programación está
muy limitada a resolver puzzles y cosas por el estilo, lo cierto es que
(teóricamente) se puede realizar cualquier tipo de programa con ellos.

 El estilo de la programación funcional puede ser usado y lo está siendo


cada vez más en lenguajes imperativos (Ejemplo: PASCAL) por las mismas
razones por las cuales el uso de los lenguajes funcionales se ha
incrementado: la simplicidad de la semántica y la resultante claridad de los
programas.

 El hecho que los lenguajes funcionales (puros) no permitan efectos


laterales ni el uso de variables globales, hace que la evaluación de
diferentes expresiones constituyan procesos independientes y, por tanto,
que pueden ser ejecutados de manera simultánea.

 Uno de los inconvenientes que tradicionalmente se le ha achacado a los


lenguajes funcionales es la ineficiencia de sus intérpretes y compiladores.

También podría gustarte