Si tuviéramos la capacidad de hacer una simulación física del universo, ¿en qué lenguaje (s) de programación estaría escrito? ¿Por qué?

Illustris, u oficialmente “El Proyecto Illustris” es una gran simulación cosmológica de la formación de galaxias. En su sitio, los desarrolladores declararon que Illustris se creó utilizando un “código numérico de última generación y un modelo físico integral”. Entonces técnicamente ya existe.

Se basa en un código llamado “Arepo”, que fue escrito por Volker Springel, el mismo autor que el software cosmológico de simulación de N-cuerpo / SPH llamado GADGET en el Instituto Max Planck de Astrofísica.

A juzgar por su uso como investigación astrofísica, podría ser escrito por científicos sin (o con poca) capacidad de programación informática ; y significa que un lenguaje de programación de alto nivel “aún más alto” como MATLAB es el principal candidato dado a tales condiciones: un nivel de lenguaje de programación más alto es el más fácilmente comprensible para los no programadores . Sin embargo, aunque estos científicos saben exactamente qué hacer con sus programas, a menudo tienen estas características comunes:

  1. A menudo son indocumentados y están llenos de soluciones algorítmicas intuitivas, que a veces resultan bastante confusas para los ingenieros de software.
  2. El autor a menudo encuentra que las llamadas a procedimientos existentes no satisfacen sus necesidades, sin embargo, no está dispuesto a modificarlas para mantener la compatibilidad con versiones anteriores. En su lugar, se crea otra rutina que llama a algunas funciones subyacentes de una manera diferente. Como resultado, después de varias revisiones, se encuentran múltiples interfaces para los mismos bloques funcionales, lo que podría provocar serios problemas de rendimiento y / o fallas.

Como alternativa, se utiliza un lenguaje de “programación de bajo nivel”, y generalmente se clasifica dentro del lenguaje de programación de tercera generación (3GL). Esto permite al programador hacer que el código esté bien organizado y estructurado; usando convenciones de nombres de variables correctas y siga los estilos de codificación. Por lo tanto, el código se vuelve más legible y comprensible, lo que reduce la posibilidad de bloqueos y proporciona suficiente documentación al solucionar problemas técnicos durante la ejecución. Los científicos informáticos usaban comúnmente lenguaje de programación de bajo nivel como COBOL, FORTRAN y ALGOL para codificar cálculos complejos realizados en estaciones meteorológicas. El problema ahora es que este tipo de lenguajes de programación no son populares entre los ingenieros de software y los programadores , señalando que los lenguajes “híbrido humano-máquina”, como los de Pascal, ahora son obsoletos y a menudo no ofrecen la conveniencia de la portabilidad multiplataforma . Es por eso que no muchos programadores ahora están tratando con FORTRAN y sus innumerables plataformas.

La solución para estos problemas a menudo se logra mediante la incorporación de más ingenieros de software y / o programadores en el proyecto de codificación. Sin embargo, el desequilibrio de la composición del desarrollador del proyecto puede conducir a la incomprensión de los principios físicos detrás del algoritmo. Algunos errores informáticos que conducen a los resultados que están equivocados en muchos órdenes de magnitud de lo esperado no pueden ser detectados por un ingeniero de software porque para ellos es solo otro número. Esto puede ralentizar drásticamente el desarrollo.

La mejor alternativa sería la “programación de nivel medio”, es decir, una programación de alto nivel que tiene el “mejor de los dos mundos”, como C o C ++ , que ofrecen compatibilidad de portabilidad multiplataforma, proporcionan capacidades mejoradas de una interfaz similar a la humana para la facilidad de uso de los astrofísicos, mientras se mantiene la integridad estructural del código para el mantenimiento de los ingenieros de software. Los programas de simulación de universo ya existentes —Illustris Project y GADGET— mencionados anteriormente en esta respuesta usan C como su lenguaje de programación.

la gente ya ha trabajado mucho en este campo, también conocido como simulación cosmológica de N-boday y códigos semianalíticos de formación de galaxias como GADGET 1 y 2, código de hidrodinámica de partículas lisas AREPO. Estamos desarrollando nuestro propio código y te digo antes del lenguaje que necesitas un alto poder de cálculo, por ejemplo, un clúster de 3 terflops. Los científicos prefieren Fortran 95-98 y C porque su tiempo de ejecución es menor y muy rápido y potente.

Eso es un poco como preguntar de qué tipo de barro harías el transbordador espacial.