¿Qué tema de matemáticas es importante para la programación funcional?

Puede avanzar mucho en la programación funcional con solo la intuición y la capacidad de visualizar abstracciones. La composición de funciones y las funciones de orden superior no necesitan conocimientos matemáticos para comprender su uso. Incluso los tipos de datos algebraicos pueden entenderse simplemente como una forma disciplinada de modelar los diferentes estados que puede tener un objeto; cualquier codificador decente de Java habrá hecho ese tipo de cosas con las interfaces y debería poder entender el concepto.

Si está tratando de usar métodos de programación funcional en un lenguaje no diseñado explícitamente para FP, eso es todo lo que realmente puede administrar en ese lenguaje de todos modos. Hay poco beneficio en aprender los fundamentos matemáticos de FP si el lenguaje no admite las abstracciones más complejas a menos que tenga la ambición de agregar nuevas características al lenguaje. Los genéricos fueron agregados a Java por un equipo de científicos informáticos con una sólida formación en investigación en programación funcional. Eric Meijer ha utilizado una experiencia y una pasión similares para trabajar en extensiones potentes de .NET (por ejemplo, Language Integrated Query). Pero si no tiene esas ambiciones, las matemáticas avanzadas no serán de gran ayuda al tratar de usar el estilo FP en C # o Java.

Si tiene la oportunidad de aprender programación funcional en un lenguaje cuyo diseño se basa en conceptos de FP, entonces hay algunos conceptos matemáticos que harán que la mayoría de las personas sean más efectivas.

Cálculo lambda

Aprender al menos los conceptos básicos del cálculo Lambda puede brindarle una visión poderosa de los métodos de programación funcional. Ni siquiera tiene que entender su base teórica; Lambda Calculus también es un lenguaje de programación simple: puede escribirle un intérprete si le gusta ese tipo de ejercicio intelectual.

La mayoría de los lenguajes funcionales (aquellos diseñados explícitamente para la programación funcional) basan su sintaxis y semántica en el cálculo lambda, por lo que aprender el cálculo lo ayuda a comprender cómo funcionan y cómo se pueden usar de manera más efectiva. También le enseña cómo funcionan los compiladores y cómo usan los conceptos de cálculo de Lamba para optimizar el código compilado. A diferencia de la máquina Turing, el cálculo es un modelo práctico que puede usar en el trabajo diario.

Teoría de la categoría

La mayoría de los lenguajes de programación funcionales tienen sistemas de tipos avanzados que se utilizan para construir abstracciones de diversos grados de complejidad. Algunos conocimientos de teoría de categorías pueden ayudar a comprender mejor

  • Las relaciones entre las diferentes abstracciones.
  • Cuál es el más apropiado para usar en un contexto dado
  • Cómo combinarlos juntos

Es más útil para aquellos que intentan construir nuevas bibliotecas que encapsulan nuevas y poderosas abstracciones. El programador funcional menos ambicioso puede vivir sin comprender la teoría de categorías.

Para la mayoría de los idiomas, la base es el cálculo Lambda o los SKI-Combinators.

Haskell también se basa en la teoría de categorías,

y Lambda Prolog está muy influenciado por la lógica, aunque no diría que la lógica es parte de las matemáticas, en mi opinión, es al revés.

Que yo sepa, principalmente:

  1. Cálculo lambda.
  2. Teoría de la categoría.
  3. Inducción matemática.
  4. Lógica.
  5. Un poco de teoría de grafos.

Espero que esto ayude.