Que tipos de programação requerem teoria prática de categorias?

8

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".

Alexander Gruber
fonte
2
Eu acho que um dos melhores (mas não é fácil se você é novo para FP) explicações sobre as razões pelas quais categoria pensamento teórico na programação é altamente benéfico é stackoverflow.com/questions/16015020/... :
Erik Kaplun
2
Este é um bom trecho: "[...] apenas um padrão comum em matemática que foi" fatorado ", assim como fazemos com o código. assim por diante - todos seguem um padrão semelhante, de modo que o abstraíram. A vantagem de fazer isso é a mesma da programação: cria provas reutilizáveis ​​e facilita certos tipos de raciocínio ".
precisa saber é o seguinte
"suave" e conceitual. Eu não tenho coragem de votar para encerrar a pergunta pessoalmente, porque eu meio que gosto disso, mas se você quisesse, sim, poderia sinalizar a migração. Provavelmente, é mais fácil excluí-lo e perguntar aos programadores.
precisa saber é o seguinte
1
@MichaelPetrotta Vou sinalizar para que os comentários de Erik não sejam perdidos.

Respostas:

3

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 .

michl
fonte
"Com todo o respeito, acho que essa é uma expectativa irreal.": Por quê? Existem outros exemplos de aplicações muito práticas de conceitos matemáticos abstratos, por exemplo, para criptografia no banco on-line.
Giorgio
1
Criptografia não é um conceito matemático abstrato. É muito concreto: impedir que algumas pessoas entendam suas comunicações para outras.
Occulus 22/09
-2

É 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.

James F.
fonte
1
"É como o modo organizacional para bancos". Eu ri, mas não entendi.
abstraída