Estoy haciendo un trabajo preliminar para investigar cómo DVCS (como Git, Hg, Bazar) puede ayudar en el proceso de programación científica, especialmente para estudiantes de posgrado. Creo que estoy en una posición bastante buena para esto, ya que he estado programando durante bastantes años y actualmente estoy comenzando un programa de maestría en ciencias naturales. El objetivo es tener una breve presentación sobre esto en un mes o dos.¿Cómo puede DVCS ayudar a la programación científica?
Por lo que veo, aparte de la ventaja obvia de control de código fuente, DVCS ofrece actualmente las siguientes mejoras en la vida diaria de un estudiante graduado:
ramificación:
Esta es la gran uno. A partir de la observación de las prácticas DVCS, está claro que la ramificación barata fomenta principalmente la experimentación de nuevas características. La programación científica es TODO acerca de la experimentación. Se pueden crear diferentes ramas para ajustar parámetros o algoritmos. Esto es especialmente importante porque la mayoría del código científico no ha visto una aota de refactorización a lo largo de su vida (la mayoría de los estudiantes de posgrado ni siquiera sabrá qué es), por lo que la posibilidad de ir a diferentes ramas traerá algún método a la locura típica. Compromisos rápidos también podría significar el uso de comentarios de compromiso como un sustituto para los cuadernos de laboratorio. Los resultados computacionales se pueden etiquetar a códigos hash de confirmación específicos para la investigación reproducible.
Empujar a los servidores:
Dado que la mayoría del código científica hoy en día se ejecute en una especie de un clúster, DVCS puede ser utilizado como una especie de Rsync más avanzada, que muchos ya lo están utilizando para impulsar la "producción" codificar a los clústeres de HPC. Esto se combina con ramificación para funcionar fácilmente múltiples versiones de código sin salir
Colaboración de papeles:
Necesito decir más? Los documentos que tienen varios autores se ejecutan exactamente como pequeños proyectos de código abierto. La colaboración en los artículos debe ser una coincidencia natural cuando todos los autores escriben en LaTex, con complicaciones adicionales si la escritura se hace en algo como Word. Aquí es donde los comentarios de compromiso podrían desempeñar un papel más importante.
Mi pregunta es, ¿qué crees que DVCS puede aportar para los programadores científicos? Veo muchas conversaciones para pasar al control de fuentes en la comunidad, pero la mayoría todavía está investigando a Subversion. De mis notas superficiales, parece que DVCS debería ser el paradigma de flujo de trabajo perfecto para los nuevos estudiantes de posgrado. ¿Está mi pensamiento defectuoso? ¿O la codificación científica simplemente está demasiado rezagada para que incluso haya escuchado de las herramientas DVCS?
relacionadas:
en realidad no relacionado con la programación, más acerca de cómo las personas pueden colaborar en la redacción de documentos? –
¿Qué es la programación científica? ¿Programación hecha por científicos, o programación en clusters grandes? He realizado una gran cantidad de programación científica en varios laboratorios, y la mayor parte no se realiza de forma colaborativa o en clusters. – mmr
@mmr: Me gustaría ir con "programación para simular experimentos y/o analizar conjuntos de datos", y su colaboración y clusteridad varían enormemente. (En mi disciplina, básicamente, cada proyecto involucra algún código desarrollado colaborativamente, y el análisis principal generalmente se ejecuta en un clúster). – dmckee