¿Qué lenguajes de programación sería útil que supiera un físico? [cerrado]

Desde el punto de vista de un físico y el tipo de problemas que le gustaría que resolviera un programa de computadora, ¿cuáles son los lenguajes de programación esenciales que un físico debería saber?

Sé C++ y he trabajado en ROOT. También he encontrado que Mathematica es silencioso y esencial, sin embargo, desde que cambié a una máquina Linux, he estado probando Sage, que también es bueno, aunque no silencioso al mismo nivel en este momento. Descubrí que C ++ es realmente rápido, eficiente y más adecuado para cosas como las simulaciones de Monte Carlo. Sin embargo, parece que scimpy también es bastante popular. ¿Valdría la pena invertir tiempo en aprender Python, es decir, tendría ganancias significativas?

También encuentro muy atractivo el concepto de lenguajes de programación funcionales. Creo que los físicos, a diferencia de muchos programadores, están más inclinados a pensar de esta manera que de forma iterativa. Haskell parece un buen candidato y también he oído que es ideal para simular algoritmos cuánticos en máquinas clásicas. ¿Alguien está familiarizado con eso?

Además, ¿qué pasa con los lenguajes de secuencias de comandos? No conozco ninguno de esos, excepto la navegación básica de directorios en bash. ¿Hay alguna utilidad en Perl y lo que sea que esté disponible (sé poco sobre esto)

¿Es posible que pueda obtener información útil de Prácticas para programar en un entorno científico? en Desbordamiento de pila.
Me parece sobre el tema. El OP quiere información específicamente de los físicos. Sin embargo, prefiero que las preguntas no pregunten tantas cosas diferentes a la vez. (Aparte: si está usando SAGE, ya está usando Python).
MATLAB es más o menos esencial como plataforma de creación de prototipos y C/C++ ciertamente si desea realizar cálculos numéricos más personalizados en su investigación.
Approximist ha abierto un tema en meta para discutir el estado correcto de esta pregunta. Por favor salta.
El idioma que necesitas aprender realmente depende de lo que quieras hacer con él. No hay suficiente información en su pregunta para obtener una respuesta.
@dmckee Después de pensarlo un poco, ya no apelo el cierre. He agregado mi perspectiva en la meta publicación .
Fortran, por supuesto!!!

Respuestas (1)

En física computacional (y otras disciplinas computacionales), no se presta suficiente atención (la mayor parte del tiempo) a los problemas de reproducibilidad y se presta demasiada atención a la velocidad de ejecución. La principal ventaja de los lenguajes "alfabetizados" como Python es que es bastante fácil escribir código legible, fácilmente documentable y comprobable, y hacerlo rápidamente. Eso hace que sea más probable que el código sea "correcto", y más probable que otros puedan entender lo que ha hecho (requisitos básicos en el trabajo experimental). Como mínimo, python y otros lenguajes de alto nivel como este son excelentes para crear prototipos de algoritmos antes de dedicar el esfuerzo a ajustar C ++ o código fortran, y para muchas tareas en las que la velocidad de ejecución no importa en absoluto, uno también podría hacerlo. todo el trabajo "literalmente".

Consulte el proyecto Software Carpentry (http://software-carpentry.org/) para obtener más información sobre computación científica, reproducibilidad y Python.

Stack Overflow tiene algunos comentarios sobre el tema de la reproducibilidad en Reproducibilidad en la programación científica .