Pregunta

Pensé que intenté preguntar en So, pero no parecía el lugar apropiado. Creo que los sitios fuente como Google Code, GitHub, SourceForge ... han jugado un papel importante en la historia de la programación. Sin embargo, descubrí que hay otra cosa mala en este tipo de sitios y es que puede simplemente "copiar" el código de casi cualquier persona, sin saber si es buena (probada) fuente o no.

Esta línea de pensamiento me ha llevado a creer que los sitios web del código fuente tienden a llevar a muchos desarrolladores (probablemente sin experiencia) a copiar/pegar cantidades masivas de código, que encuentro mal.

Realmente no sé cómo enfocar bien la pregunta, pero el pensamiento básico sería:

¿Esta bien? Es de código abierto contribuyendo a eso o solo estoy viendo fantasmas ...

Espero que la gente se interese porque creo que este es un tema importante.

¿Fue útil?

Solución

La correlación no implica causalidad. Los desarrolladores copian/pegan el código que no entienden porque son malos desarrolladores. La disponibilidad de dicho código no se vuelve mala para los buenos desarrolladores.

Si no hubiera proyectos de código abierto, todavía habría publicaciones en el foro con fragmentos de código o libros de programación con ejemplos. Así que volvemos a mi primer párrafo: los malos desarrolladores encontrarán una manera de ser malo en escribir código. La culpa de copiar y pegar código recae en los desarrolladores que lo hacen, no con los repositorios del código fuente.

Otros consejos

No creo que muchos desarrolladores copien pasta de grandes proyectos de código abierto. Es demasiado trabajo encontrar el lugar correcto en miles de líneas de códigos, y podría ser diferente (al menos para un mal desarrollador) averiguar qué parte copiar. Prefieren copiar fragmentos pequeños que se encuentran en foros, artículos, ejemplos, etc., donde todo está bien preparado.

Para cada 100 programadores que simplemente copia/pasan el código sin saber lo que está haciendo, hay casi uno que no.

Antes del código de Google et similia Hubo fragmentos en toda la web que la gente copiaba/pegaba, por lo que realmente no veo que el problema sea relacionado con este tipo de sitios.

¿No es uno de los grandes principios de codificar "no reinventar la rueda"?

Si copia el código malo y no aprende de él, entonces es su mal. Si copia un gran código y aprende de él, entonces es un buen programador que está muy bien.

Mi opinión es que hay buenos proyectos de código abierto y malos proyectos de código abierto. La disponibilidad de buenos proyectos de código abierto que se pueden encontrar en sitios como Git Hub permiten el tipo de programador para principiantes que algún día terminará como un buen programador para tener una fuente casi interminable de buen código para mirar y estudiar y (si se desea ) Copiar. La cuestión es que el tipo de persona que termina como un buen programador es casi incapaz de copiar y pegar código. Quieren mirarlo y desarmarlo y modificar y comprender qué lo hace bueno y qué podría mejorarlo y qué lo empeoraría. Para cuando terminen Es su código Y entienden cómo funciona.

Hace que sea más conveniente que los malos programadores sean malos programadores, pero ¿y qué? Es como el defecto en JavaScript donde

i = 1

crea una variable global i y

var i = 1

crea una variable local adecuada. Esto hace posible detectar el código de mierda en un segundo por todas las variables globales inadvertidas que se encuentran en todo el lugar1. El hecho de que sea más fácil copiar y pegar proyectos juntos significa que es más fácil detectar el código de mierda porque estará lleno del tipo de extremidades vestigiales que se adaptaron a las condiciones de las que proviene y no con las condiciones en las que actualmente está viviendo.

1 La falta de variables globales no implica que el código sea bueno, pero es una señal prometedora

Todos tienen algún tipo de motivación para liberar su código de una manera que permita a otras personas usarlo, modificarlo y redistribuirlo.

Algunas de las razones:

  • Sientes que el código es útil y sería útil para otros
  • Siente que la idea es útil, y espera que las personas más experimentadas refinen la implementación.
  • Está obligado por una licencia para divulgar el código para ejecutables binarios modificados que distribuyó
  • Espera que la disponibilidad del código ayude a impulsar su negocio

Otras razones, por supuesto, entran en juego, o tal vez una combinación de razones. Su pregunta parece depender de una suposición de que el código publicado en la naturaleza debería Sea de calidad mínima, lo que creo que es demasiado idealista.

Además, creo que más resultados de codificación de 'copiar y pegar' de leer un 'tutorial' que alguien publicó en un blog con fragmentos, no de alguien que se tomó el tiempo para extraer a Github para encontrar algo que podría resolver un problema. Sin embargo, el uso de ejemplos de una guía de "inicio rápido" de cinco años que compró en una librería usada podría ser igualmente peligroso.

Los buenos programadores evitan los errores que los programadores sin experiencia tienden a cometer, ese siempre será el caso. A menudo aprendes a evitar estas trampas cayendo en ellas.

Al principio no hay una definición exacta de buen código. Puede tomar dos partes de buen código y combinarlos, y obtener un código malo. Solo porque los estilos de código sean diferentes.

Bad programador Copy Paste Bad Code, escriba el código malo.

Buen código de copia de programador buen código, escriba un buen código. El buen programador no pegará el código malo.

Pero el código abierto nos da una gran oportunidad, no escribir el mismo código una y otra vez, pero

Esta pregunta es imposible de responder.

Sin embargo, si está preguntando con respecto a usted mismo, por ejemplo, "hace la presencia de código disponible gratuitamente que resuelve problemas con los que estoy tratando, me convierte en un desarrollador más descuidado o peor", entonces hay una solución muy simple y colaborativa para su ansiedad.

Encuentre un proyecto que use, apoye o encuentre interesante, y vea si puede involucrarse con él. Escriba algún código, escriba algunos casos de prueba o proporcione alguna documentación. Independientemente de lo que termines haciendo, trabajarás y evaluarás el código que estás usando, y ayudando a un proyecto que admite.

El código abierto tiende a una buena codificación, ya que no puede ocultar su código malo detrás de una aplicación de trabajo, debe codificar bien, de lo contrario está fuera del juego. Comprender y copiar/pegar un buen código no empeora al desarrollador (no confunda con la copia/pegado en lugar de hacer un diseño adecuado). Y, como se mencionó en otra respuesta, un mal programador encontrará otras formas de producir un código malo si no había códigos de origen disponibles.

Theodore Sturgeon dijo que "el 90% de todo es crud" y eso se aplica al software de código abierto tanto como cualquier otra cosa. Hay muchos, muchos proyectos en SourceForge que son un vertedero de un código inacabado de una o dos personas, y no pasó nada desde la primera carga.

Eso no significa que el software de código abierto sea intrínsecamente malo o de menor calidad. Buenos proyectos tienen más alto calidad porque

  • Si no se le paga en dinero, la recompensa que está ganando es el respeto de sus colaboradores
  • Todos pueden ver tu trabajo
  • Las versiones se liberan cuando están listos, no porque algunos imperativos comerciales las obligue a ser liberadas a medias

Si está evaluando el software de código abierto que puede adoptar, desea averiguar si hay una comunidad lo suficientemente grande, por lo que si los desarrolladores actuales no lo pueden o no lo respalden, habrá suficiente interés y demanda en formas alternativas de mantenerlo y desarrollarlo. Haría la misma pregunta sobre el software comercial.

Me gustaría destacar el trabajo de la Fundación Apache Software para identificar proyectos prometedores de código abierto, darles recursos y ayudarlos a apoyarlos a través de una etapa de "incubadora" para que puedan desarrollar suficiente impulso para ser viables a largo plazo. Si bien, por supuesto, hay muchos otros excelentes proyectos de código abierto, si un proyecto ha logrado un estado de nivel superior ASF, puede tener cierta confianza sobre su calidad y viabilidad.

Licenciado bajo: CC-BY-SA con atribución
scroll top