¿Cuál es el mejor lenguaje de programación para un matemático?

Lo que sea que sea útil.

Mathematica obviamente está dirigido a matemáticos y hace muchas cosas buenas bastante bien.

Matlab es útil, pero su principal punto de venta es el soporte de todas sus cajas de herramientas. La caja de herramientas simbólicas en particular lo pone más al día para las necesidades de un matemático de hacer cosas simbólicas y más abstractas, pero no representa una amenaza para Mathematica en ese frente. De lo contrario, hace cosas numéricas de manera bastante robusta, pero sin el control de nivel inferior que le gustaría en otros marcos (¿quiere ir a la aritmética de precisión cuádruple? Lo sentimos, eso no está incorporado; necesitará comprar un paquete de otra persona. ¿Desea una precisión arbitraria con la caja de herramientas simbólica? Puede tener eso, pero ¿tiene tiempo para ejecutar algo sustancial de esa manera?).

GAP es un lenguaje para la teoría de grupos. No puedo hablar mucho al respecto, ya que solo lo usé para identificar un grupo finito basado en algunos elementos generadores, pero tiene un propósito importante.

Maple está diseñado para usar la notación matemática tradicional y proporciona herramientas para cálculos numéricos y simbólicos.

MAGMA está desarrollado para álgebra computacional en grupos, anillos, campos y más.

Python ha visto un aumento en la popularidad en los últimos años, por una serie de buenas razones, incluido el soporte y la extensibilidad de la biblioteca.

Julia es más nueva y apunta al mismo mercado que Python para la informática científica / numérica. No puedo decir qué lo distingue especialmente, aparte de centrarse más en un mercado en particular.

Fortran sigue siendo un lugar para realizar cálculos numéricos rápidos. ¿Haciendo magnetohidrodinámica en dominios divertidos? ¡Familiarícese con un marco para la programación concurrente (OpenMP, por ejemplo), y empiece a trabajar! ¿Integrando EDO para aproximar soluciones a algún sistema? ¡Ni siquiera (necesariamente) necesitas concurrencia!

Los lenguajes familiares C tienen su lugar en aras de un gran control de bajo nivel, pero puede ser más difícil simplemente hacer y programar / programar matemáticas. ¡Hay una razón por la cual la gente ha inventado todos los idiomas y el software anterior!

Haskell y lenguajes funcionales similares / relacionados le permiten escribir código que se parece más a las matemáticas, pero requiere un gran cambio de mentalidad de todos los idiomas anteriores. Su naturaleza los hace adecuados para definir estructuras matemáticas abstractas de maneras bastante agradables, y variantes como Agda son específicamente útiles para la verificación de teoremas.

Otros idiomas que no he mencionado tal vez tengan sus propios pros y contras para hacer cosas matemáticas, pero no son tan comunes que se les ocurrieron de inmediato, o si lo hicieran, no sabría cómo se distinguen en la forma en que los matemáticos podría encontrar útil o interesante.

OK, Lisp, como un lenguaje funcional temprano, hace algunas cosas geniales, tiene un poderoso sistema macro y no distingue entre datos y código ejecutable de una manera matemáticamente interesante, pero no estoy seguro de que sea un excelente lugar para programar conceptos matemáticos (al menos, no necesariamente mejor que cualquier otro idioma).

No soy matemático, pero me daré cuenta de esto por lo que sé.

Para las matemáticas aplicadas (modelado y demás), creo que Python + SciPy / NumPy tiene más sentido, o MATLAB si está disponible. Si eres una persona que termina haciendo simulación de alto rendimiento, terminarás usando C y C ++, o quizás envuelvas algún código de C ++ con Python. (Alguien como Jan Christian Meyer podría entrar aquí y golpearme con una gran trucha por no incluir a Fortran, pero estoy tratando de hacer mi parte para asegurarme de que la próxima generación de técnicos no trate ese idioma … nunca. )

Los estadísticos probablemente también cuentan, y con eso probablemente también debería incluir a las personas de aprendizaje automático. R (o SAS si te sientes pretencioso o rico) parece ser la opción preferida para las cosas de estadísticas puras, y Python generalmente se usa para levantar objetos semipesados, ya que tiene algunas bibliotecas de ML realmente geniales, y por supuesto SciPy / NumPy.

La mayoría de las personas de matemática pura que conozco solo usan Mathematica, y a veces MATLAB, pero generalmente Mathematica es lo suficientemente rápido para ellos. La notación simbólica es probablemente su mayor atractivo.

Yo recomendaría Python. Es relativamente fácil de aprender para codificadores experimentados o nuevos. También es suficientemente “de alto nivel” para evitar preocupaciones sobre el manejo de la memoria y tiene estructuras de datos incorporadas extremadamente flexibles. También hay una gran cantidad de extensiones extremadamente útiles para el lenguaje (llamadas “bibliotecas”) que pueden proporcionar herramientas específicas de la aplicación.

  • Pro: las listas están indexadas desde 0 *

Alternativa: MatLab es un “lenguaje de programación” diseñado específicamente para hacer matemáticas. Personalmente, no me gusta mucho, pero no tengo suficiente experiencia para haber aprendido sus beneficios. **

  • Con: las listas están indexadas desde 1 *

* los índices representan compensaciones desde el comienzo de una lista, no el “enésimo elemento”. Es por eso que la mayoría de los lenguajes de programación comienzan listas desde 0 y los idiomas que comienzan desde 1 me fallan.

** Actualmente estoy presionando para ingresar a clases de ingeniería en mi universidad para dejar de enseñar matlab y enseñar python en su lugar.

Me gustaría señalar que un matemático “puro” probablemente no estaría usando un lenguaje de programación. Dicho esto, el mejor y más completo paquete de software utilizado por ingenieros y físicos es MATLAB, que ahora incluye Maple. Aparte de eso, Mathematica también es popular. Para los estadísticos, el lenguaje R es un estándar.

Sin duda, Haskell. Es un lenguaje funcional puro construido alrededor de los principios del cálculo lambda, y a menudo se usa para probar teoremas. No puedes obtener ninguna matemática más que eso. R es otra buena opción si te interesa hacer análisis estadísticos.

Ambas plataformas son gratuitas y de código abierto.

Coq, aunque no es un lenguaje de programación en el sentido tradicional, puede ser muy útil en la demostración de teoremas.

Señor / Señora, definitivamente diría que Julia es un lenguaje para la comunidad matemática: la mayoría de los ejemplos, incluso para funcionalidades de programación menores, se refieren a aplicaciones matemáticas complejas donde los simples mortales no entienden nada.

More Interesting

¿Cuál es la diferencia entre autómatas deterministas y no deterministas de estado finito?

¿Puedo ingresar una máquina Turing en otra máquina Turing? Si es así, ¿cómo? Y si no, ¿por qué?

Estoy tomando SL Maths para el Diploma IB, ¿sería esto suficiente para universidades como UCB, UCLA, GaTech for Computer Science?

¿Cuál es la forma más sencilla de explicar el problema P = NP?

¿Es la matemática pura esencial para la informática teórica?

¿Cuáles son algunos problemas realmente fáciles de explicar que en realidad son increíblemente difíciles de resolver?

Me equivoqué completamente en mi examen de Matemática discreta. ¿Todavía podré ir a la escuela de posgrado?

Cómo abordar problemas de cobertura de conjuntos en la programación de enteros

¿Qué libros de algoritmos y estructuras de datos tratan bien la recursividad?

¿Es importante tener una excelente comprensión de la informática teórica para convertirse en un mejor programador?

Si una solución correcta a la Hipótesis de Riemann, P = NP, o la Teoría de campo unificada se presentara de forma anónima, ¿cuántas personas podrían ser consideradas sospechosas?

¿Cómo resolverías (2 ^ 2 ^ a mod b)?

¿Se puede encontrar la intersección de dos listas en menos de tiempo lineal (las listas están ordenadas)?

¿Cuáles son los requisitos previos (matemáticos, de programación, etc.) que uno debe tener para convertirse en ingeniero de control?

¿Qué tan probable es que las computadoras alienígenas se basen en algo equivalente a un UTM?