A teoria das categorias tem aplicações na ciência da computação teórica e obviamente é central para a matemática abstrata. Ouvi dizer que ele também tem aplicações práticas diretas em programação e desenvolvimento de software.
Para que tipo de programação é necessária a teoria prática das categorias? O que os programadores usam a teoria das categorias para realizar?
Observe o meu uso de "necessário" e "exigir" neste post. Percebo que, em certo sentido, a maioria dos programadores se beneficiará de ter experiência em diferentes tipos de teorias, mas estou procurando aplicações diretas onde o uso da teoria das categorias é essencial, ou seja, se você não conhecia a teoria das categorias, provavelmente não conseguiria. faça.
Além disso, gostaria de esclarecer que, com "que tipo de programação", espero menos uma resposta ampla, como "programação funcional", e mais aplicativos específicos, como "criação de software para bancos" ou "criação de sistemas operacionais".
fonte
Respostas:
A pergunta é sobre um conceito matemático abstrato (teoria das categorias), enquanto espera por uma resposta muito prática (aplicações específicas). Com todo o respeito, acho que essa é uma expectativa irrealista.
Conceitos matemáticos abstratos fazem parte dos fundamentos das linguagens de programação, não das aplicações. Por exemplo, os tipos de dados são fundamentais para a programação. Toda linguagem possui algum tipo de tipo de dados e implementa um sistema de tipos - estático ou dinâmico, forte ou fraco, explícito ou implícito, etc. No entanto, não há um padrão.
Portanto, muitos cientistas da computação tentaram usar a teoria das categorias para definir um sistema de tipos unificado . Veja, por exemplo, a Linguagem de programação categórica de Hagino (1987) e Charity (1996), depois ML (2003) e CAML, e Haskell , é claro, que define uma "categoria Haskell" de tipos, e as funções Haskell são morfismos nos tipos ...
É esse o caso porque a teoria dos tipos está intimamente relacionada à teoria das categorias . Para citar JL Bell: "As categorias podem ser vistas como teorias de tipos de um certo tipo ... Assim, a teoria dos tipos está muito mais relacionada à teoria das categorias do que à teoria dos conjuntos ... Grosso modo, uma categoria pode ser pensada. como uma teoria de tipos desprovida de sua sintaxe ". Foi demonstrado que, por exemplo, as categorias fechadas cartesianas correspondem ao λ-cálculo digitado e os monoides C correspondem ao λ-cálculo não tipado ...
Eu não acho que a teoria das categorias seja necessária para qualquer tipo de programação, mas é uma ferramenta muito útil no design e implementação de linguagens de programação, e esp. aqueles que são inerentemente matemáticos. É por isso que a Programação Funcional é frequentemente citada como uma programação categórica, e todas as linguagens de programação mencionadas acima são linguagens FP.
Uma introdução recomendada ao tópico é " Uma amostra da teoria das categorias para cientistas da computação " de BC Pierce (1988). Esta e outras informações úteis foram encontradas em uma discussão semelhante no mathoverflow .
fonte
É como o modo organizacional para bancos.
Sei que isso é vago, mas você disse que queria uma resposta prática.
As categorias têm tudo a ver com dualidade (ou pelo menos é assim que eu a vejo) por causa do axioma da escolha; então, pessoalmente, eu diria que seria uma maneira boba de induzir um sistema de tipos unificado, embora um tipo em si (uma instância de um tipo) é basicamente uma categoria.
Os cálculos lambda de digitação simples não têm um sistema de tipos axiomático, e é por isso que eles são considerados a base da teoria dos tipos. Isso é diferente dos cálculos lambda que usam um sistema de tipos adequado.
O cálculo lambda simplesmente digitado normaliza fortemente e, embora os tipos correspondentes sejam muito chatos, a lógica é sólida.
Além disso, o cálculo lambda com tipagem infinita / dependente (ou puramente digitado) não se normaliza adequadamente, pois possui um tipo para todos os tipos, que é basicamente um sistema de tipos codificado por igreja.
As categorias estão em toda parte, mas são, por natureza, quase impossíveis de ver imediatamente.
fonte