8 votos

Tipos, conjuntos y categorías

Estoy aprendiendo la teoría de las categorías y al principio Acabo de imaginarme una categoría como clase en la programación orientada a objetos: definición de tipos + métodos (morfismos). Sin embargo el autor que estoy leyendo utiliza mapas como A --f--> B y no te dice si f es pasar de la categoría A a la categoría B o si A y B están en la misma categoría. También utiliza conjuntos, lo que es más problemático si te preocupas por el significado de lo que estás haciendo.

Preguntas

¿Cómo son categorías diferente de establece ? ¿Y por qué no todo el mundo utiliza tipos en primer lugar?

Nota: La segunda pregunta es una tomadura de pelo, estudio Ingeniería Matemática pero también soy Desarrollador. En lenguajes de programación la noción de tipo se conoce muy bien, y uno de estos tipos es el Set y no tiene nada de especial. En matemáticas sin embargo, los conceptos su no sólo increíblemente dominante, tenía / tiene defectos mayores (paradojas).

7voto

jmans Puntos 3018

Las categorías se diferencian de los conjuntos en muchos aspectos. Una respuesta sería que los conjuntos son $0$ -y las categorías son $1$ -d. Para verlo, hay que tener en cuenta que un conjunto sólo tiene elementos que pueden considerarse entidades puntuales. Si hiciéramos un dibujo del conjunto $\{1,2,3,4\}$ dibujarías cuatro puntos y los marcarías en consecuencia. Si hicieras un dibujo del conjunto $\{dog, cat, alligator, piano\}$ , entonces volverás a dibujar cuatro puntos y los etiquetarás en consecuencia. En ese sentido los conjuntos son $0$ dimensional. Ahora bien, una categoría consiste en un conjunto (o una clase) de objetos, que de nuevo pueden considerarse entidades puntuales, pero también están los morfismos, o flechas. Una flecha, o morfismo, en una categoría puede dibujarse como una flecha que va de un objeto a otro. En este sentido, las categorías son $1$ -dimensional.

La analogía entre las clases en OOP y las categorías en matemáticas no es muy fuerte. Ciertamente, hay algunas cosas en común, pero no es una buena idea pensar que ambas nociones están muy relacionadas. En la programación orientada a objetos, una clase consta de datos y métodos. Los métodos utilizan y actúan sobre los datos. Cuando se define una categoría no existe tal división. Una categoría especifica los objetos y los morfismos, pero es incorrecto ver los objetos como datos y los morfismos como el uso o la acción sobre los datos. De hecho, es bien sabido que se puede prescindir completamente de los objetos, mientras que en una clase en OOP, los datos ciertamente no son redundantes. En una categoría, cada morfismo está ligado a un dominio y a un codominio. No actúa necesariamente sobre su dominio. De hecho, el dominio puede ser cualquier cosa, no necesariamente un conjunto, por lo que puede no haber nada sobre lo que actuar.

La confusión que menciona con $f:A\to B$ (o la notación que se utilice) no debería existir. En el contexto de las categorías, $f:A\to B$ siempre significa que $f$ es un morfismo en alguna categoría (entendida por el contexto) y el dominio de $f$ es $A$ mientras que el codominio es $B$ . Es posible que $A$ y $B$ son a su vez categorías, y $f$ es entonces también conocido como un functor. Esto está en consonancia con lo anterior, ya que hay una categoría de categorías y funtores.

La teoría de tipos no es lo mismo que la teoría de categorías. La teoría de tipos está mucho más relacionada con las clases en la programación orientada a objetos que las categorías. El paradigma de programación que es más categórico es la programación funcional, donde la teoría de tipos es también prominente. En la POO también se pueden adoptar ideas de programación funcional, y de hecho los funtores y las mónadas (que se pueden modelar en cualquier lenguaje de POO usando clases que se comportan de una determinada manera, y en la mayoría de los lenguajes funcionales se soportan directamente) están presentes en la programación.

En cuanto a los defectos de los decorados, no hay realmente ninguno, al menos ninguno que conozcamos. El protagonismo de los conjuntos en las matemáticas se debe simplemente a que proporciona un lenguaje muy cómodo y básico para hablar de prácticamente todas las matemáticas. Al fin y al cabo, ¿qué es más fundamental que un conjunto, un montón de cosas reunidas? Así, se puede esperar que cualquier cosa (casi) sea: un conjunto con.....

7voto

phani Puntos 36

Si quieres entender mejor la teoría de las categorías pensando en la informática, te sugiero que leas:

Asperti y Longo:

Categorías, tipos y estructuras: Una introducción a la teoría de las categorías para el informático en activo

que debería estar disponible en línea de forma gratuita

o

Pierce: Teoría básica de las categorías para informáticos

o

Barr/Wells: Teoría de categorías para la ciencia de la computación

De todos modos, si sólo quieres entender qué es una categoría y tener algo más que una sensación de la teoría, te sugiero que mires en Wikipedia

4voto

Giorgio Mossa Puntos 7801

Para empezar establece son objetos bastante diferentes de las categorías en el sentido de que son tipos de datos sin estructura, desde el punto de vista de la teoría de tipos los conjuntos son sólo tipos de datos con una relación de igualdad.

Categorías son un tipo de objetos completamente diferente, para empezar constan de dos tipos de objetos (objetos y morfismos/flechas) y tienen mucha más estructura: hay varias operaciones que los relacionan.

Por supuesto, se pueden tratar las categorías desde una perspectiva de teoría de tipos, y en dicha perspectiva se puede considerar una categoría como una instancia de una especificación para un tipo de datos abstracto.

Hay diferentes especificaciones para una categoría, una es la siguiente.

Una categoría $\mathbf C$ está dada por:

  • un tipo $\mathbf C_0$ cuyos términos se denominan objetos ;
  • un tipo $\mathbf C_1$ cuyos términos se denominan morfismos ;
  • dos operaciones $s,t \colon \mathbf C_1 \to \mathbf C_0$ que se llaman origen y destino respectivamente;
  • una operación $i \colon \mathbf C_0 \to \mathbf C_1$ llamado identidad
  • una operación parcial $\circ \colon \mathbf C_1 \times \mathbf C_1 \to \mathbf C_1$ llamada composición

estos datos deben satisfacer las siguientes propiedades:

  • por cada $f,g \in \mathbf C_1$ el compuesto $\circ(g,f)$ se define si y sólo si $t(f)=s(g)$ ;
  • cuando cada $f,g,h \in \mathbf C_1$ son morfismos tales que $s(h)=t(g)$ y $s(g)=t(f)$ entonces $h \circ (g \circ f)=(h \circ g) \circ f$ (nota que este compuesto se define porque la propiedad anterior);
  • por cada $X \in \mathbf C_0$ y cada $f,g \in \mathbf C_1$ tal que $s(f)=X$ y $t(g)=X$ tienes que $f \circ i(X)=f$ y $i(X) \circ g=g$ .

Esta especificación puede verse desde un punto de vista informático como un tipo de datos abstracto, una categoría es simplemente una instancia de este tipo de datos abstracto.

Espero que esto ayude.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X