¿Qué tipos de programación requieren una teoría práctica de categorías?


8

La teoría de categorías tiene aplicaciones en informática teórica y obviamente es fundamental para las matemáticas abstractas. He oído que también tiene aplicaciones prácticas directas en programación y desarrollo de software.

¿Para qué tipo de programación es necesaria la teoría práctica de categorías? ¿Para qué usan los programadores la teoría de categorías?

Tenga en cuenta mi uso de "necesario" y "exigir" en esta publicación. Me doy cuenta de que, en cierto sentido, la mayoría de los programadores se beneficiarán de tener experiencia en diferentes tipos de teorías, pero estoy buscando aplicaciones directas donde el uso de la teoría de categorías es esencial, es decir, si no conocía la teoría de categorías, probablemente no podría hazlo.

Además, me gustaría aclarar que con "qué tipo de programación", espero menos una respuesta amplia como "programación funcional" y más para aplicaciones específicas como "escribir software de banco" o "crear sistemas operativos".


2
Creo que una de las mejores explicaciones (pero no fáciles si eres nuevo en FP) de las razones por las que el pensamiento teórico de categoría en programación es altamente beneficioso es stackoverflow.com/questions/16015020/… :
Erik Kaplun

2
Este es un buen extracto: "solo [...] un patrón común en matemáticas que se ha" factorizado ", al igual que lo hacemos con el código. La gente notó un montón de cosas interesantes: los monoides, grupos, redes y etc., todos siguen un patrón similar, por lo que lo resumieron. La ventaja de hacerlo es la misma que en la programación: crea pruebas reutilizables y facilita ciertos tipos de razonamiento ".
Erik Kaplun

"suave" y conceptual. No tengo el corazón para votar para cerrar la pregunta yo mismo, porque me gusta, pero si quisieras, sí, podrías marcar la migración. Sin embargo, probablemente sea más fácil eliminarlo y preguntar a los programadores.
Michael Petrotta

1
@MichaelPetrotta Lo marcaré para que no se pierdan los comentarios de Erik.

Respuestas:


3

La pregunta es acerca de un concepto matemático abstracto (teoría de categorías) mientras se espera una respuesta muy práctica (aplicaciones específicas). Con el debido respeto, creo que esta es una expectativa poco realista.

Los conceptos matemáticos abstractos son parte de los fundamentos de los lenguajes de programación, no las aplicaciones. Por ejemplo, los tipos de datos son fundamentales para la programación. Cada idioma tiene algún tipo de tipos de datos e implementa un sistema de tipos , ya sea estático o dinámico, fuerte o débil, explícito o implícito, etc. Sin embargo, no existe un estándar.

Por lo tanto, muchos científicos informáticos han intentado utilizar la teoría de categorías para definir un sistema de tipo unificado . Véase, por ejemplo, el lenguaje de programación categórico de Hagino (1987) y Charity (1996), luego ML (2003) y CAML, y Haskell, por supuesto, que define una "categoría de Haskell" de tipos, y las funciones de Haskell son morfismos en los tipos ...

Este es el caso porque la teoría de tipos está estrechamente relacionada con la teoría de categorías . Para citar a JL Bell: "Las categorías se pueden ver a sí mismas como teorías de tipos de cierto tipo ... Por lo tanto, la teoría de tipos está mucho más relacionada con la teoría de categorías que con la teoría de conjuntos ... Hablando en términos generales, se puede pensar en una categoría como una teoría de tipos desprovista de su sintaxis ". Se ha demostrado que, por ejemplo, las categorías cerradas cartesianas corresponden al cálculo λ tipificado y los monoides C corresponden al cálculo λ no tipificado ...

No creo que la teoría de categorías sea necesaria para ningún tipo de programación, pero es una herramienta muy útil en el diseño e implementación de lenguajes de programación, y especialmente. los que son inherentemente matemáticos. Es por eso que la programación funcional a menudo se cita como una programación categórica, y todos los lenguajes de programación mencionados anteriormente son lenguajes FP.

Una introducción recomendada al tema es " Una muestra de la teoría de categorías para los informáticos " por BC Pierce (1988). Esta y otra información útil se encontró en una discusión similar sobre mathoverflow .


"Con el debido respeto, creo que esta es una expectativa poco realista": ¿Por qué? Hay otros ejemplos de aplicaciones muy prácticas de conceptos matemáticos abstractos, por ejemplo, para la criptografía en la banca en línea.
Giorgio

1
La criptografía no es un concepto matemático abstracto. Es muy concreto: evitar que algunas personas comprendan sus comunicaciones con otros.
occulus

-2

Es como el modo org para los bancos.

Me doy cuenta de que es vago, pero dijiste que querías una respuesta práctica ...

Las categorías tienen que ver con la dualidad (o al menos así es como lo veo) debido al axioma de elección, por lo que personalmente diría que sería una forma tonta de inducir un sistema de tipos unificado, aunque un tipo en sí mismo (una instancia de un tipo) es básicamente una categoría.

Los cálculos lambda simplemente escritos no tienen un sistema de tipos axiomáticos, por lo que se dice que son la base de la teoría de tipos. Esto es diferente de los cálculos lambda que usan un sistema de tipo apropiado.

El cálculo lambda simplemente tipado se normaliza fuertemente y, aunque la coincidencia de tipos es bastante aburrida, la lógica es sólida.

Además, el cálculo lambda de tipo infinito / dependiente (o puramente mecanografiado) no se normaliza correctamente, ya que tiene un tipo para todos los tipos, que es básicamente un sistema de tipos codificado por la iglesia.

Las categorías están en todas partes, pero por naturaleza son casi imposibles de ver de inmediato.


1
"Es como el modo org para los bancos". Me reí entre dientes, pero no lo entiendo.
abstraído el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.