Closed JJ closed 10 years ago
Cuando tengo que compartir código, normalmente subo el archivo sin compilar a una carpeta pública en la nube, que luego paso a las personas que quiero que le echen un ojo, evidentemente no suelo publicar código pues no estoy en un entorno de investigación, sino que son soluciones a problemas concretos de programas personales, que comparto en con algún amigo de un foro, no en entornos de investigación o académicos. Para resolver errores, uso la vieja técnica de las banderas, vamos que voy poniendo interruptores que me indican hasta que parte del código ha llegado la ejecución sin problema (típica popup window con un mensajito relativo a por donde va, que valor lleva tal variable. etc..), eso unido a la revisión del código y los algoritmos usados. Habitualmente he usado Eclipse, Netbeans, PowerBuilder, C++ y alguno del siglo pasado como Modula 2 o Pascal, he tocado algo de Matlabs, pero muy, muy poquito. Hace tiempo (cuando trabajaba de analista-programador) trabajaba en un equipo, en el que la división de tareas y la coordinación era vital, actualmente y desde hace algunos años, programo solo, o como mucho hago algún módulo para otro programa, pero casi autónomo, podemos decir que en los últimos 5 años, he trabajado como mucho un par de veces en un "equipo" y casi siempre solo. Los típicos programando, cuando trabajas solo, muchas veces tienes el fallo delante de tus narices y no lo ves, algo obvio para cualquier persona que no ha seguido tu hilo deductivo, la desesperación cuando te atascas en un problema y no consigues superarlo porque no ves la solución, al final cuando logras mirar con perspectiva y después de volver al principio muchas veces se suele solucionar. Cuando empecé a programar tenía la mala costumbre de picar código antes de realizar un análisis de lo que debía hacer (la ingeniería del software brillaba por su ausencia), los cabezazos contra muros y la experiencia, me hicieron darme cuenta que se fallaba menos cuando se tenía claro qué se debía de hacer y cómo, que era mejor perder una semana planteando los requisitos del programa, el qué debía de hacer, cómo debía de hacerlo, que ponerse a picar código e ir "completando" y "concretando" sobre la marcha. Otro problema que tiene el trabajar solo, es que muchas veces no comentas el código, porque crees que tu memoria es infalible, y a veces cuando vuelves sobre una parte antigua, te cuesta recordar el qué hacía exactamente y porqué lo hacía así.
El PowerBuilder es un invento del averno. El hermano mayor del Cobol.
Si tengo que compartir archivos como tal... dropbox o algún servidor externo. Si tengo que compartir proyectos, programas o código entonces subversion y así poder entre varias personas toquetear un mismo proyecto. Aún me acuerdo de lo que sufrimos con la ingeniería del software cuando dos personas tocaban el mismo fichero... que desastre... Para resolver errores, lo mejor es el debugger del entorno gráfico que esté usando y siempre y cuando el lenguaje de programación lo permita. Por ejemplo, en uno de los proyectos que uso actualmente trabaja con OpenCL, el cual, a excepción del SDK para Intel, para los demás no se puede depurar el código cuando éste está ejecutándose en un kernel. De todas formas, personalmente, si llega un momento en el que el error te quiebra la cabeza, escribir las trazas del programa, dibujos, anotaciones y demás en papel es lo mejor. Tardas la vida... pero siempre funciona. Respecto a los IDEs y lenguajes... son muchos ya los que he usado, pero más caña le meto a Netbeans, Eclipse y Microsoft Visual Studio, aunque este último no sea de libre distribución. Normalmente uso C, C++, Java, y de paso pues un montón más (CUDA, OpenCL, Perl, Python...). Suelo programar solo porque las situaciones así lo requieren, por lo que en cuanto a equipo pocos problemas me encuentro, aunque a veces discuto conmigo mismo jajaja!! ya que a veces la cago (Recuerdo cuando se me borró la única copia de unos datos importantes), pero en ese sentido me falta algo más de práctica. Aún así, al menos tengo la costumbre de comentar muy bien las líneas de código porque aunque sean para mí, no se sabe si algún día las necesitaré yo u otra persona.
@rotty11 la ventaja que tiene git es, precisamente, que es bastante mejor resolviendo conflictos que subversion; de hecho, la idea era sustituirlo
Yo dejé subversion después de que se cayera la forja de rediris varias veces :P Después empecé a usar git, pero como si fuera svn vamos. El pull, el push y poco más.
@seiya64 venga, pon la canción, Javi, que sé que estás deseando.
Canción para todos! https://www.youtube.com/watch?v=B17C60m9Iek :D
Realmente, hasta la fecha no me ha surgido la necesidad de compartir código en un entorno colaborativo "serio". Cuando he tenido que compartir código lo he hecho a lo "bruto", utilizando Dropbox o algo por el estilo. También utilizo Dropbox para hacer copias de seguridad de códigos. Esto me recuerda a lo que hago para llevar un histórico de versiones de códigos, que es (verguenza me da decirlo): cambiarle el nombre a los archivos involucrados o a las carpetas donde los guardo (aparte de subirlos, cómo no, a Dropbox). La verdad es que siempre he pensado que es muy cutre, pero me ha dado un poco de pereza buscar otras soluciones mejores. Para resolver errores lo que hago es, al igual que rotty11, utilizar el debugger que incorpora el entorno gráfico que esté usando. Los últimos proyectos en los que he programado han sido relativos a microcontroladores PIC, donde disponía de una herramienta magnífica, Pickit 3 In Circuit Debugger, que me permitía depurar el código en tiempo real sobre el microcontrolador en cuestión. En relación con estos proyectos he utilizado el entorno MPLAB de Microchip, programando en C CCS. Hace ya más tiempo utilizaba Netbeans y Eclipse para programar en Java. Durante los últimos 6 meses he programado mucho en LabVIEW. Hasta ahora casi siempre he programado solo. Como mucho, en alguna práctica de la carrera hemos programado en equipo, pero utilizábamos de nuevo cosas tan cutres como Dropbox... También procuro comentar extensamente el código, como si mi "yo futuro" fuera medio imbécil... la experiencia me dice que mi "yo futuro", una vez llega a ser mi "yo presente", bendice a mi "yo pasado" por esos comentarios.
@pablopaolus cualquier entorno en el que haya que programar es un entorno serio. Si no para otra cosa, simplemente para tener copia de seguridad de todo. Guay lo de los comentarios :+1: Nunca se recomendará lo suficiente la necesidad de usarlos.
A decir verdad, no siempre soy tan previsor con los comentarios... A veces, revisando el código, he tenido que poner cosas del tipo:
//When I wrote this, only God and I understood what I was doing
//Now, God only knows
Para compartir código llevo usando bastante tiempo git, aunque para documentos siempre he usado google drive. Dropbox lo uso más bien para tener las cosas que necesito accesibles y no tener que andar con pendrives al trabajo o a los sitios. En la carrera no usaba nada de esto porque no nos enseñan mucho de software libre...
AUNQUE
En una asignatura impartida por @JJ, llamada Arquitectura de Altas Prestaciones, usábamos code.google.com. Ahora ya se ha quedado bastante atrás con git, pero recuerdo que era bastante divertido :)
Programar suelo programar con lenguajes basados en scripts o en Java. Si es lo segundo, Eclipse, y si es lo primero... digamos que me estoy mudando a emacs y dejando las malas praxis :$
@pablopaolus :+1: Sí, eso pasa. Sin los comentarios. @unintendedbear En tu época no sé si usamos subversion; poco después nos pasamos a git
Sobre los comentarios, últimamente estoy teniendo por "buena práctica" escribir primero los comentarios diciendo "esto hace esto y se relaciona así y puede dar las siguientes excepciones y interacciona con este otro módulo aquí y será utilizado para tal cosa" y luego realmente escribir "el código".
Realmente ayuda a no hacer código espagueti y permite con una lectura rápida saber que hace tal módulo o función. Odios los comentarios ABSURDOS tipo:
#Declaro la variable
int a;
#Inicializo la variable
a = 2;
#Incremento la variable
a++;
Cada vez que alguien comenta algo que se puede leer mirando sencillamente el código, Cthulhu mata a un gatito.
Y ya de los nombres de variables, ni hablemos. ¡¡Que no cobran por usar más caracteres!!
Amen a lo de PWB, pero profesionalmente me he visto en la obligación de usarlo (actualmente no), y los comentarios me suscribo a lo de: "Escribir los comentarios como si tu yo futuro fuera imbécil", alguna vez me he sentido así viendo código escrito por mi unos añitos después (o semanas...) XD.
Sobre los comentarios hay una frase que dice que si el comentario no se corresponde con el código, los dos están equivocados. Por lo menos lo que dice @deantares es consistente.
En los desarrollos personales no he compartido código ya que han sido proyectos universitarios individuales,Los errores siempre los he resuelto con la sugerencias del editor utilizado o buscando ayuda en foros. el editore usado es: Microsoft visual basic 6 y microsoft visual studio
¿Qué usas para compartir código? ¿Para resolver errores? ¿Qué editores usas? ¿Qué lenguajes de programación? ¿Sueles programar solo o en colaboración? ¿Qué problemas sueles encontrarte?