18 votos

¿Cómo distribuir la fuente de los programas utilizados en un trabajo?

He escrito un artículo, que incluye un apéndice en el que se explica cómo obtener pruebas numéricas del resultado del artículo. Ahora el cálculo funciona esencialmente como sigue:

  • Crea una matriz tridiagonal grande.
  • Calcula sus valores propios.
  • Calcula la diferencia de los valores propios consecutivos y la devuelve.

La implementación de un algoritmo de este tipo es bastante sencilla, pero para poder analizar matrices grandes, empecé a utilizar algoritmos de un paquete llamado LAPACK que resultó ser más rápido que los algoritmos normales de Matlab. (No soy especialista, así que no estoy muy seguro de lo que ocurre).

Tengo curiosidad por saber si se debe proporcionar el código fuente de un cálculo de este tipo y, en caso afirmativo, de qué forma. Se me ocurren las siguientes opciones:

  • Pseudocódigo (como arriba)
  • Matlab simplificado, que funciona con cualquier instalación de matlab, pero es demasiado lento para hacer realmente los cálculos.
  • El código real, que la mayoría de la gente no podrá hacer funcionar sin cierto esfuerzo.

También tengo curiosidad por saber si se debería incluir algún tipo de código fuente en el documento y, en caso afirmativo, de qué forma. O qué ha hecho la gente en tal caso...

El código simplificado está disponible en: http://math.rice.edu/~hk7/ftp/matlab_code/SkewSpecDense.m

No he puesto el código real en línea, porque requiere paquetes externos, y no estoy seguro de lo fácil que es instalarlos...

3voto

Jawa Puntos 267

Publica el código, preferiblemente en algún lugar relativamente permanente. (ArXiv, Google code, github, sourceforge o una página departamental permanente).

Publicar el código fuente real, aunque sea difícil de ejecutar o entender, es la única real esperar que alguien reproduzca exactamente lo que usted ha hecho. También, es posible que el enfoque es corrent, pero la aplicación tiene errores. Hay manera de saber esto a partir de pseudocódigo.

Claro, si tienes tiempo, un apéndice que contenga pseudocódigo está bien, pero como nadie realmente corre pseudocódigo, es posible que algo se pierda en la traducción de sus fuentes al pseudocódigo.

De los tres, creo que el código simplificado es el que más trabajo da a cambio de menos beneficios. Mucho trabajo, y no mucha ganancia potencial (¿realmente vas a verificar que es correcto, y da los mismos resultados que tu código real?) Todas las desventajas del pseudocódigo, pero sin claridad.

2voto

Chad Miller Puntos 783

Al menos en el caso de los algoritmos numéricos, presentarlos y conseguir que se acepten en ACM Transactions on Mathematical Software (en inglés) garantiza que el código se reproduzca tanto en el sitio de ACM como en las distintas réplicas de Netlib .


Añadido mucho más tarde:

Hoy en día, recomendaría crear un GitHub o BitBucket (o cualquiera que sea su sitio preferido de alojamiento de gestión de fuentes), coloque allí su código y luego incluya un enlace al mismo en su artículo o preimpresión.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X