¿Cuál es el mejor lenguaje de programación que un estudiante de matemáticas (Interesado en Teoría de Gráficos) debería aprender, asumiendo que no tiene experiencia previa con la programación? ¿Por qué? Si es así, ¿cuáles son los recursos a los que debe referirse?

Haskell es una excelente opción, especialmente porque es una muy buena opción para alguien con una mentalidad matemática. Ofrece un modelo de programación más natural para alguien acostumbrado al pensamiento matemático de alto nivel que el modelo imperativo estándar utilizado por muchos otros lenguajes (como Python).

Haskell también tiene una cultura y comunidad bastante inclinadas matemáticamente. ¡No tenemos miedo de usar abstracciones matemáticas para hacer nuestras bibliotecas más simples, más elegantes y más generales! Si mira a su alrededor, podrá encontrar aplicaciones interesantes de temas que conoce (como el álgebra abstracta utilizada para mejorar los algoritmos de aprendizaje automático), nuevas perspectivas sobre ideas familiares (como el álgebra lineal en términos de espacios vectoriales libres) y quizás algunos campos. de matemáticas todavía no estás familiarizado (¿te gusta la teoría de categorías?).

Sin embargo, algunas personas creen que Haskell y la programación funcional no son adecuadas para hablar de algoritmos de grafos. Y, de hecho, esto ha sido tradicionalmente difícil. Felizmente, ese problema ha sido resuelto! De hecho, Haskell ahora tiene algunas facilidades para escribir algoritmos de gráficos realmente elegantes en forma de la “biblioteca de gráficos funcionales”, basada en una abstracción llamada “gráficos inductivos”. Al escribir un poco mi propia bocina, escribí una introducción a los gráficos inductivos en mi blog, que creo que es un mejor lugar para comenzar que el artículo que describe los gráficos inductivos. Regrese a estos artículos una vez que esté familiarizado con los conceptos básicos de Haskell y haya practicado un poco con ellos (creo que bastan unas pocas semanas, creo).

Puede probar Haskell de inmediato en Try Haskell, directamente en su navegador. Tiene un mini tutorial que puedes seguir. Después de eso, hay algunos libros en línea disponibles gratuitamente, como Learn You a Haskell for Great Good! y el Real World Haskell de O’Reilly es bueno para principiantes . Aparte de esto, encontré que “Write Yourself a Scheme in 48 Hours” es un tutorial realmente útil, es lo que me ayudó a superar la joroba inicial para escribir programas de Haskell. Además de esto, siempre puedes aprovechar la comunidad extremadamente amigable de Haskell. Es bastante fácil obtener ayuda en StackOverflow o #haskell en freenode IRC.

Esquema o Haskell. Especialmente para la teoría de grafos. Usted tiene una ventaja sobre la mayoría de los programadores en que ya puede pensar matemáticamente. Comience con un estilo funcional de programación: le servirá bien.

Tanto Scheme como Haskell soportan un estilo matemático de pensamiento y programación: definiciones recursivas de las estructuras y funciones de los datos. Haskell admite la evaluación perezosa para permitirle expresar infinitos recursivos fácilmente. El esquema es mucho más fácil de aprender que Haskell y permite más libertad de expresión. El esquema también puede proporcionar una evaluación perezosa (si usas Racket está incorporado, o puedes hacer tu propio si lo necesitas).

HaskellWiki es el mejor lugar para comenzar con Haskell y The Racket Language es un buen lugar para comenzar con la implementación del esquema de Racket.

¿Sage está al mismo nivel que Mathematica o Matlab para la teoría de gráficos y la visualización de gráficos?

De hecho, ya se formuló una pregunta general sobre Sage frente a otro software, y la respuesta principal decía: “Si está haciendo teoría de gráficos o teoría de números serios, ni siquiera debería hacer la pregunta de qué paquete usar. “ Es decir, si estás haciendo teoría de grafos, o teoría de números serios, Sage es el ganador por mucho. Esto fue comparando a Sage con todos los otros sistemas de álgebra computacional. Entonces, creo que la respuesta es que Sage es el mejor programa de teoría de grafos que existe. Y, está mejorando todo el tiempo.

En cuanto a la visualización, sí, los gráficos Sage son gráficos extremadamente buenos. Si los guarda en un PDF, puede ampliar todo lo que quiera (no exagero) y aún serán gráficos nítidos y claros. Y, hay un editor de gráficos que te permite dibujar gráficos y mover los vértices y agregar vértices y bordes y cosas así. Sin mencionar, hay muchos gráficos integrados.

Sistema de software matemático SageMath – Sage
Nathann COHEN

Si está buscando una plataforma para codificar y resolver problemas de teoría de grafos, pruebe SAGE ( http://www.sagemath.org/ ), aunque técnicamente no es un lenguaje de programación. Es bastante fácil de aprender, es de código abierto, es eminentemente poderoso y cubre muchas otras áreas de las matemáticas y no solo la teoría de los gráficos. Si está escribiendo fragmentos de código de complejidad razonable para ayudar con las exploraciones teóricas, entonces SAGE es probablemente su mejor apuesta.

Si estás buscando específicamente un lenguaje de programación, sugeriría Python. Es fácil de aprender, fácil y divertido de codificar, bastante potente, y tiene un montón de bibliotecas de matemáticas y ciencias disponibles.

Las herramientas de reescritura de gráficos generalmente ofrecen lenguajes basados ​​en la coincidencia de patrones para especificar / codificar cambios de Gráficos; ese es un enfoque más directo y visual para la programación de gráficos que un lenguaje de programación tradicional. Ver reescritura de gráficos para más información; Algunas herramientas ofrecen además la programación imperativa tradicional.

Recomiendo encarecidamente Python. Se considera un buen primer idioma, es bastante fácil de aprender, simple pero poderoso.
Uno de sus puntos fuertes es que son grandes bibliotecas de terceros. Puedes encontrar una biblioteca de python para casi cualquier cosa.
Dado su interés por la teoría de grafos, sugeriría consultar SciPy.org – SciPy.org