Como estudiante de primer año entrante a quien le gustaría investigar en física, ¿qué habilidades informáticas debo aprender?

Las lecciones más importantes que aprendí al enseñar Física Computacional durante unos años fueron:

  1. Cualesquiera que sean las aplicaciones, herramientas, lenguajes o entornos de programación específicos que aprenda a usar este año, es probable que sean irrelevantes para sus actividades informáticas principales el próximo año, ya que las nuevas modas y los nuevos avances están llegando a un ritmo cada vez más acelerado. (Consulte la ley de Moore.) Hay excepciones ( LaTeX ha demostrado un notable poder de permanencia, y nunca debe perder el contacto con la línea de comando [vea el artículo clásico de Neal Stephenson en su sitio web CRYPTONOMICO N]) pero la regla sigue siendo, ” Aprenda cómo aprender “porque todo lo demás que aprendas pronto será irrelevante. Incluso antes de que el último lenguaje ultrafresco y súper poderoso se vuelva obsoleto, el grupo al que se unirá el próximo verano usará algo diferente, y / o su supervisor requerirá que encuentre errores en su antiguo código FORTRAN.
  2. A diferencia de la mayoría de los temas de física actuales, y contrario a lo que muchos informáticos pueden creer, por las razones descritas anteriormente, la computación no constituye una disciplina estática con principios cuidadosamente establecidos e inmutables sobre los que se construye cada capa sucesiva de comprensión. Cada avance profundo (como la Programación Orientada a Objetos) reescribiría completamente las reglas conceptuales, incluso si el último hardware todavía estuviera haciendo las mismas operaciones básicas … ¡y no lo es! Si la Computación Cuántica se implementa completamente, todo lo que crees que entiendes será barrido; y todo el dinero está apostando fuertemente por el control de calidad. Entonces, si realmente estás prestando atención y pensando en el futuro, nunca te engañarás creyendo que has tomado las decisiones correctas o dominado lo esencial de la Computación. Busque Zanshin: es su mejor esperanza.
  3. Por las razones anteriores, enseñar Física Computacional fue el trabajo más frustrante y difícil que he tenido; y la mayoría de mis alumnos sintieron lo mismo, porque me negué a decir alguna vez: ” Esta es la aplicación / herramienta / idioma / método que debes aprender primero y recordar mejor”.

Finalmente, algunas sugerencias derivadas de 53 años de experiencia en programación:

  • Trabaja en Linux . El resto son trampas patentadas que solo buscan su dependencia absoluta. Soy muy serio.
  • Mantenga sus propias copias de seguridad. Evita la nube. Recuerde lo que dijo Billie Holiday: “Dios bendiga al niño que tiene lo suyo”.
  • Independientemente del idioma que utilice, manténgalo lo más simple posible y documente todo de manera exhaustiva (preferiblemente como comentarios en el código) para que cualquier idiota pueda entender exactamente lo que ha hecho. (El año que viene probablemente serás ese idiota).

Las habilidades informáticas exactas dependen de los grupos de investigación con los que trabaje. Lo más probable es que esté trabajando con una base de código existente que podría estar en cualquier número de idiomas, desde Fortran a C a C ++ a Python a R a IDL a cualquier cantidad de posibilidades diferentes.

Sin saber en qué grupo o campo se encuentra, debe pensar en las habilidades que desea aprender. Los enumeraría como

  • Habilidades básicas de programación (Python / C ++ / Fortran)
  • Habilidades de programación numérica (Biblioteca científica GNU / Recetas numéricas / Mathematica)
  • Trazado (Mathematica / Matplotlib en Python / Matlab)
  • Estadísticas (R / Python / Mathematica)
  • Álgebra simbólica (Mathematica / Sage / MatLab)

Creo que el más fácil y posiblemente el más útil para una posible investigación es Plot Making. La creación de tramas es bastante tediosa porque se trata de asegurarse de que las figuras se vean bonitas y representen esa información con precisión. Esto será útil para una gran cantidad de trabajo científico y técnico, por lo que es muy importante mejorar pronto. Es realmente comunicación científica.

Las habilidades básicas de programación son bastante útiles, pero su capacidad para usarlas depende en gran medida del grupo de investigación con el que terminará. No todos los grupos consideran que esto sea importante o relevante; de ​​hecho, muy pocos grupos fuera del Experimento High Energy lo hacen (que tienen bases de código extensas).

La programación numérica puede ser realmente útil para grupos más pequeños en proyectos nuevos, particularmente en biofísica, materia condensada blanda.

La estadística es universalmente útil y se transforma en aprendizaje automático en el otro extremo. Requiere mucho fondo.

Finalmente, el álgebra simbólica es realmente útil para la física teórica. Mathematica es un programa poderoso que le permite hacer cálculos muy difíciles que van mucho más allá de lo que cualquier humano puede hacer.

Actualmente soy estudiante de física en la UCLA, y en este momento estoy investigando en la Universidad de Osaka. No tengo un fondo increíblemente grande en investigación, pero sugeriría también a Matlab, ya que eso es lo que usamos en mi laboratorio aquí para analizar datos, principalmente.

Creo que LateX también es una buena idea.