• Barajar
    Activar
    Desactivar
  • Alphabetizar
    Activar
    Desactivar
  • Frente Primero
    Activar
    Desactivar
  • Ambos lados
    Activar
    Desactivar
  • Leer
    Activar
    Desactivar
Leyendo...
Frente

Cómo estudiar sus tarjetas

Teclas de Derecha/Izquierda: Navegar entre tarjetas.tecla derechatecla izquierda

Teclas Arriba/Abajo: Colvea la carta entre frente y dorso.tecla abajotecla arriba

Tecla H: Muestra pista (3er lado).tecla h

Tecla N: Lea el texto en voz.tecla n

image

Boton play

image

Boton play

image

Progreso

1/16

Click para voltear

16 Cartas en este set

  • Frente
  • Atrás
¿Qué es la programación funcional?
Es un “paradigma de programación”. Esto quiere decir que es una forma de pensar en cómo se organiza un programa basado en una serie de principios (que mencionaremos más abajo).
¿Cuál es su utilidad?
El objetivo es conseguir lenguajes expresivos y matemáticamente elegantes, en los que no sea necesario bajar al nivel de la máquina para describir el proceso llevado a cabo por el programa, y evitar el concepto de estado del cómputo.
¿Cuáles son las características principales de la programación funcional?
• La no existencia de asignaciones de variables
• La falta de construcciones estructuradas como la secuencia o la iteración
• Modularidad
• Transparencia referencial
• Fundamentado en el cálculo lambda
• Funciones de orden superior
• Recursión
• Gestión de memoria implícita
• Tipificado
• Polimorfismo paramétrico
• Evaluación perezosa
Primera clase y orden superior:
Primera clase
Es un término informático que describe las entidades del lenguaje de programación que no tienen ninguna restricción de su utilización (por lo tanto funciones de primera clase pueden aparecer en cualquier parte del programa que otras entidades de primer nivel como los números pueden, incluidos como argumentos a otras funciones y como sus valores de retorno).
Orden superior
son aquellas que reciben funciones como argumentos y/o retornan funciones como resultado
Funciones puras
Las funciones puramente funcionales (o expresiones) no tienen efectos secundarios (memoria o E/S). Esto significa que las funciones puras tienen varias propiedades útiles, muchas de las cuales pueden ser utilizadas para optimizar el código:
• Si no se utiliza el resultado de una expresión pura, se puede eliminar sin afectar a otras expresiones.
• Si una función pura se llama con parámetros que no causan efectos secundarios, el resultado es constante con respecto a la lista de parámetros (a veces llamada transparencia referencial), es decir, si la función pura se llama de nuevo con los mismos parámetros, el mismo resultado será devuelto (esto puede habilitar las optimizaciones de almacenamiento en caché).
Funciones puras parte 2
• Si no hay una dependencia de datos entre dos expresiones puras, entonces su orden puede ser invertido, o pueden llevarse a cabo en paralelo y que no pueda interferir con los otros.
• Si el lenguaje no permite efectos secundarios, entonces cualquier estrategia de evaluación se puede utilizar, lo que da la libertad al compilador para reordenar o combinar la evaluación de expresiones en un programa (por ejemplo, usando la poda).
Recursivas
Las funciones recursivas se invocan a sí mismas, permitiendo que una operación se realice una y otra vez hasta alcanzar el caso base. Aunque algunas recursividades requieren el mantenimiento de una pila, la recursividad mediante una cola puede ser reconocida y optimizada mediante un compilador dentro del mismo código utilizado, para implementar las iteraciones en un lenguaje imperativo. El estándar del esquema del lenguaje requiere implementaciones para conocer y optimizar la recursividad mediante una cola.
Evaluacion estricta y no estricta
Los lenguajes funcionales pueden ser clasificados por el hecho de usar evaluación estricta(eager) o no estricta(lazy), conceptos que hacen referencia a cómo los argumentos de las funciones son procesados cuando una expresión está siendo evaluada. La diferencia técnica está en la notación semántica de las expresiones que contienen cálculos fallidos o divergentes. Bajo la evaluación estricta, la evaluación de cualquier término que contenga un sub-término fallido hará que este sea de por sí fallido.
TIPOS DE SISTEMA
• Inferencia de tipos
permite inferir los tipos de las expresiones sin obligar al programador a su declaraci´on expl´ıcita
• Tipos primitivos predefinidos
• Tipos definidos por enumeración
• Tipos mediante producto cartesiano
• Combinación de productos y enumeración
• Tipos parametrizados
• Tipos recursivos
• Tipos recursivos parametrizados
PROGRAMACION FUNCIONAL Y NO FUNCIONAL
DEFINICION
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.
Ventajas DE PROGRAMACION FUNCIONAL Y NO FUNCIONAL
Cómo hemos visto en el ejemplo de arriba, el código funcional
• tiende a ser más conciso y expresivo
• Más predecible.
Más adelante veremos que como resultado de los principios del paradigma (uso de funciones puras, inmutabilidad, evitar estado compartido y efectos secundarios, …) nuestro código será más fácil de predecir, aislar y probar.
• Se presta a la paralelización y la computación distribuida
• Se presta a los paradigmas asincrónicos y dirigidos por eventos
• JavaScript como lenguaje tiene una naturaleza más funcional que imperativa.
Desventajas
• Puede ser un poco desconcertante.
• Puede requerir más recursos al estar menos orientado a la máquina y más al humano.
• Es menos común, y por ende hay menos información
¿Cuáles son los lenguajes funcionales?
Scala, Haskel, Lisp, Java, C, C++
USO EN LA ACTUALIDAD
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
EJEMPLO
procedure MCD(u,v:integer):integer;
begin
if (v=0) then return u
else
return MCD(v,u mod v);
end; {MCD}