65 votos

Relacionados con la Categoría de la Teoría a la Teoría del Lenguaje de Programación

Me pregunto cuál es la relación de la categoría de la teoría a la programación de la teoría del lenguaje.

He estado leyendo algunos libros sobre la categoría de la teoría y la teoría de topos, pero si pasa alguien sabe lo de las conexiones y me sería muy útil, ya que me daría una razón para continuar este esfuerzo fuertemente, y saber dónde buscar.

Motivación: actualmente estoy investigando de licenciatura y posgrado de la enseñanza de las matemáticas, específicamente en la enseñanza de la programación a las matemáticas graduados/o industriales. Estoy jugando con la idea de que si yo juego a los matemáticos fortalezas mejor puedo enseñar programación y serán mejores programadores, y de lo que aprenden les será útil. Estoy en el proceso (etapas muy tempranas) de escribir un libro de texto sobre el tema.

85voto

Steven Murawski Puntos 6665

El más obvio relación a la categoría de la teoría es que tenemos una categoría que consta de los tipos de objetos y funciones como flechas. Hemos identidad de funciones y se puede componer funciones con la habitual axiomas holding (con varias salvedades). Eso es sólo el punto de partida.

Un lugar en el que empieza a ser más profundo es cuando se consideran funciones polimórficas. Un polimórficos función es esencialmente una familia de funciones, parametrizarse por tipos. O categóricamente, una familia de flechas, parametrizarse a través de los objetos. Esto es similar a lo que una transformación natural. Mediante la introducción de algunas restricciones razonables nos encontramos con que una gran clase de funciones polimórficas son, de hecho, natural de transformaciones y mucha de la categoría de la teoría se aplica ahora. El estándar de ejemplos para dar aquí son libres de teoremas.

Categoría de la teoría también mallas muy bien con la noción de un "interfaz" en la programación. Categoría de la teoría nos anima a no mirar lo que un objeto está hecho, pero cómo interactúa con otros objetos, y en sí mismo. Mediante la separación de una interfaz de una aplicación de un programador no necesita saber nada acerca de la implementación. De manera similar categoría anima a pensar acerca de los objetos hasta el isomorfismo - no es precisamente lo que diferencia a nuestros grupos están hechos, sólo importa lo que las operaciones en nuestros grupos. Categoría de la teoría capta con precisión este concepto de interfaz.

También hay una hermosa relación entre la pura escribió cálculo lambda y cartesiana categorías cerradas. Cualquier expresión en el cálculo puede ser interpretado como la composición de las funciones estándar que vienen con un CCC: como la proyección sobre los factores de un producto, o la función de evaluación. Así, las expresiones lambda puede ser interpretado como aplicable a cualquier CCC. En otras palabras, el cálculo lambda es un lenguaje interno para los Ccc. Esto es explicado en Lambek y Scott. Esto significa que la teoría de la Ccc está profundamente incrustado en Haskell, es decir, debido a Haskell es esencialmente pura escribió cálculo lambda con un montón de extensiones.

Otro ejemplo es la manera estructuralmente recursing sobre recursiva tipos de datos pueden ser muy bien descrito en términos de la inicial de los objetos en categorías de F-álgebras. Usted puede encontrar algunos de los detalles aquí.

Y un último ejemplo: dualising (en el sentido categórico) definiciones resulta ser muy útil en los lenguajes de programación mundo. Por ejemplo, en el párrafo anterior mencioné estructurales de la recursividad. Dualising esto le da a las nociones de F-coalgebras y vigilado recursividad y conduce a una bonita manera de trabajar con infinita',' tipos de datos tales como arroyos. Trabajar con secuencias es complicado, porque ¿cómo se puede proteger contra inadvertidamente tratando de recorrer toda la longitud de una secuencia causando un bucle infinito? La adecuada doble de recursividad estructural conduce a una poderosa manera de lidiar con los arroyos que está garantizado para ser portado bien. Bart Jacobs, por ejemplo, tiene muchos buenos trabajos en esta área.

19voto

Aissen Puntos 131

Una gran cantidad de trabajo que se ha hecho en esta área. Como se mencionó anteriormente, no es un elemento esencial de la correspondencia entre los $\lambda$-cálculo y Cerrado Cartesiano Categorías. Moggi el trabajo seminal de las Nociones de Cálculos y Mónadas desarrollado una forma unificada de tratar muchos computacional efectos. Esto, por supuesto, inspirado Haskell enfoque actual para tratar con IO, el Estado, la Simultaneidad y así sucesivamente. El enfoque dual, Comonadic Nociones de Cálculo por Tarmo Uustalu y Varmo Vene, captura de otras nociones, como la corriente de base de cálculo. Las clases y los lenguajes orientados a objetos puede ser modelado utilizando coalgebra (también mencionado anteriormente). Una referencia general a la coalgebraic enfoque es Universal Coalgebra: Una Teoría de Sistemas por Jan Rutten, y artículos que muestran cómo se aplican a los lenguajes orientados a objetos incluyen el Razonamiento acerca de las Clases en los Lenguajes Orientados a Objetos: Modelos Lógicos y Herramientas y Coalgebraic Razonamiento acerca de las Clases en los Lenguajes Orientados a Objetos por Bart Jacobs y sus colegas. Aunque estos están destinados en el razonamiento acerca de los programas, que dan una semántica para la relevante de los lenguajes de programación a lo largo del camino.

18voto

8voto

csmba Puntos 2440

Lambek & Scott, "Introducción a las de orden superior categórica lógica" es un libro clásico sobre el tema.

¿Qué idioma (investigar?) enseñar a estos estudiantes de matemáticas? En mi humilde opinión Haskell es más fácil de aprender que cerrar-a-la-metal idiomas para matemáticamente mentalidad de las personas sin experiencia previa en programación.

0voto

Rog Puntos 121

Báez' el artículo, la discusión y el Manin del artículo son interesantes para usted.

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