Así que aquí hay un problema para ti.
Comencemos con un problema complejo de flujo de fluido. Oye, mira, aquí hay uno para tener en YouTube (las cosas comienzan a ponerse interesantes a la 1:30):
Un físico comienza eligiendo un modelo; en este caso, dinámica molecular. Ese modelo es una aproximación, pero como somos humanos, eso será inevitable.
- ¿Cuáles son algunos de los problemas de investigación más interesantes en los sistemas de recomendación?
- ¿Cómo empiezo a aprender informática distribuida?
- ¿Existe algún documento / tesis / investigación que demuestre que RegEx no debe usarse para el análisis HTML y que en su lugar debe usarse un analizador XML?
- ¿Cómo determino el número de funciones hash necesarias mientras hago LSH?
- ¿Quiénes son los informáticos más inspiradores y cómo se siente conocerlos?
Este modelo se implementa en un lenguaje de programación. Como las computadoras no hacen matemática real (recuerde que la aritmética de coma flotante no es asociativa), la implementación es una aproximación de la aproximación inicial.
El compilador toma este código y, utilizando un modelo de dibujos animados del sistema subyacente, compila el lenguaje de alto nivel en código máquina.
El código de máquina se ejecuta en (digamos) cien mil núcleos de procesador. Por lo tanto, no solo el rendimiento está limitado por lo bien que se usa la memoria caché y lo rápido que son las unidades vectoriales, también tiene un problema de que el retraso de la comunicación puede matar su rendimiento.
El físico recupera los resultados y dice “No, eso es demasiado lento, esto tiene que correr más rápido”.
El físico puede cambiar su modelo, pero entre el modelo y la ejecución se encuentra un lenguaje de alto nivel, un compilador, una arquitectura de procesador y la arquitectura de la supercomputadora. El físico puede solicitar ayuda de matemáticos aplicados, desarrolladores de software, expertos en compiladores, arquitectos de procesadores y personas de optimización de tiempo de ejecución, pero cualquier perturbación que hagan tendrá efectos tanto en el rendimiento de la máquina como (potencialmente) en el modelo físico en sí.
Todos los campos que enumeré son ingeniería muy aplicada. Como informático teórico, ¿cómo organizarías el mundo para que la física se traduzca en rendimiento de tal manera que las estrategias de optimización se vuelvan obvias para el físico?
En pocas palabras: diseñe un mejor lenguaje para simulaciones físicas masivamente paralelas.
(Si realmente quieres seguir con esto, envíame un mensaje y te daré algunos consejos sobre la literatura. Este es un problema increíblemente difícil, y esos son exactamente el tipo de problemas en los que los nuevos estudiantes deberían estar pensando).