Los buenos programadores copian, los grandes programadores roban

Solo copiar el código puede ser peligroso. Sin embargo, esto se puede decir sobre muchos otros aspectos en el desarrollo de software, siempre que se manejen sin cuidado. En esta publicación discutiré temas como:

  • ¿Qué significa copiar código en el desarrollo de software?
  • ¿Qué significa el robo de código correcto?
  • ¿Cuáles son los peligros de la copia incorrecta?

Para los programadores no es un secreto que el código de muestra que se publica como respuesta a las preguntas aquí en Stack Overflow a menudo termina en la versión final de los programas. Tal vez hiciste una pregunta y te enviaron un diagrama de ciclo ideal en tu respuesta for. Tal vez encontró una gran respuesta, en la que había una pieza de código c async awaitque era adecuada para su aplicación.

El último libro de programación que necesitarás:

imagen


Cuando me encontré con un tweet que hablaba sobre los beneficios del robo, me preguntaba si copiar el código podría ser beneficioso.


Tenga en cuenta que no estoy a favor de que copie indiscriminadamente el código de nuestra sección de preguntas y respuestas. A veces puede tener problemas debido a esto. Pero, como nuestro invitado nos mostró en el podcast Anna Lytical, este enfoque se puede utilizar para desarrollar rápidamente prototipos funcionales.

Si copia ejemplos de código, deje un enlace a la licencia. Dependiendo de la última vez que se editó el código en Stack Overflow, se licencia con una versión de la licencia Creative Commons. Los códigos más recientes están autorizados por CC BY-SA 4.0, a los que se requiere referencia.

Escriba el código una vez, póngalo a trabajar un millón de veces


Copiar código de Stack Overflow es una forma de plagio, es decir, duplicación de código de uno o más proyectos y su reutilización. Mirando a qué programador pregunta, pero puede resultar que en su trabajo del 5 al 10 o incluso del 7 al 23 por ciento del código se copia de alguna otra fuente. Si los préstamos se hacen correctamente o no, ya es una cuestión de discusión.

Independientemente del porcentaje de endeudamiento real en proyectos individuales, podemos decir con certeza que la duplicación de código es extremadamente común. El código repetitivo es un código que se repite regularmente a lo largo del proyecto. Es probable que los programadores no lo escriban cada vez. Bibliotecas como Lombok hacen posible reducir la necesidad de escribir una repetitiva, pero el hecho sigue siendo:

  • Siempre habrá partes del código que deberán aparecer una y otra vez a lo largo del proyecto.

Y

  • Debido al hecho de que estas partes probablemente aún necesiten pequeños cambios, estos fragmentos de código no pueden eliminarse en una función o dependencia separada.

Hablando de dependencias, podemos mencionar bibliotecas y dependencias externas, que son una forma efectiva de reutilizar la funcionalidad del código sin copiarlo. Funciona casi como copiar código, con la única diferencia de que, en este caso, usted no es responsable de mantener el funcionamiento de la parte copiada del código. Demonios, ahora la mayor parte de Internet se ejecuta en varias plataformas y bibliotecas de complementos que simplifican el desarrollo. Reutilizar el código en las bibliotecas es increíblemente efectivo, ya que permite que cada biblioteca haga una cosa y aún así hacerlo bien. Y a diferencia de la forma en que se deben indicar todas las fuentes al escribir obras en la comunidad científica, muchas de estas bibliotecas no necesitan nada de su parte para indicarque programe utilizando el código de otra persona o que utilice el código de otra persona como base.

El Administrador de paquetes JavaScript de npm lleva esto al extremo. Puede instalar pequeñas bibliotecas de una sola función ( algunas del tamaño de una línea de código ) en su proyecto a través de la línea de comandos. Puede adquirir cualquiera de los más de un millón de paquetes gratuitos de código abierto y comenzar a incorporar características en su aplicación.

Por supuesto, como cualquier enfoque, este método también tiene un signo menos. Después de instalar el paquete, pierde algo de control sobre el código. Algunos atacantes crearon paquetes realmente útiles, esperaron hasta que obtuvieron un nivel de descarga decente y luego modificaron el código para robar billeteras bitcoin. Debemos rendir homenaje al personal de npm, ya que logran repeler rápidamente tales ataques. Sin embargo, cuantas más dependencias externas tenga, más área de ataque imagina.

Incluso las respuestas de desbordamiento de pila no están protegidas contra la duplicación de código. Un investigador independiente encontró varias respuestas a Stack Overflow en las que el código se copió de otras fuentes. Se encontró una pieza de código Java en más de 40 respuestas.

Buenos artistas copian grandes artistas roban


En el mundo del arte, el robo también es parte de la creación de grandes creaciones. Recuerdo cómo fui al Museo Van Gogh en Amsterdam y vi sus primeros trabajos allí. Me quedé impactado. Pero entonces no sabía que, de hecho, esas pinturas estaban inspiradas en la pintura japonesa y el grabado en madera (grabado en madera) . Lo que pensé que era un estilo único para su época, en realidad era parte de la historia del desarrollo, pero no el que estaba pensando. En lugar de seguir el camino de desarrollo que los artistas daneses ya habían tomado, Van Gogh usó las ideas de los grabados japoneses que encontró en París (utilizó las ideas de composición de edificios y el estilo de pinceladas) y las combinó en sus obras.

A Picasso se le atribuye el dicho: "Los buenos artistas copian, los grandes artistas roban". El propio Picasso sacó muchas ideas del arte africano y polinesio y las combinó con sus bocetos. La idea del robo en sí es incorrecta. De hecho, llamar al trabajo de otra persona suyo es plagio. Lo prestado todavía le pertenece a otra persona. Copias el estilo y aún pertenece al propietario. Sin embargo, para robar, debes hacer tuya esta idea. Declararse el creador de la idea de alguien es pedir prestado. Pero Picasso tenía en mente que necesitaba entender y tejer la idea en su trabajo para "robarla". Steve Jobs amaba esta cita , y Apple tuvo éxito bajo su liderazgo porque robaron ideas, las combinaron y las mejoraron.

Cuando copia el código, corre el riesgo de simplemente pedirlo prestado. El código prestado se coloca completamente en el proyecto si está bien incrustado y no causa errores, pero puede contener errores o puede ser creado por ciberdelincuentes con la posibilidad de usarlos para sus fines, lo que no sabrá. El número de riesgos asociados con el código copiado incorrectamente (o copiado como enmendado) es enorme. De hecho, las quejas de código duplicado pueden rastrear al plagio. Si no comprende el código, es probable que deje huecos en la protección de lo que originalmente se suponía que era solo una demostración del concepto. Incluso el código más copiado en Stack Overflow no está privado de un error .

Por otro lado, cuando robas código, definitivamente sabes lo que hace. Su núcleo y sus características se ajustan a su propio código. Si puede volver a escribirlo desde la memoria, esta es una señal de que el código se ha robado correctamente. Esto significa que la modificación del código le ha dado más que solo una copia. Ella te dio algo nuevo y original.
Entonces sí, roba el código. Tómelo, comprenda y aplique en sus proyectos. Haz lo tuyo. Puede ganar experiencia, mejorar sus proyectos y tal vez incluso su currículum (también conocido como ctrl + C ctrl + V). Pero si copia sin una comprensión absoluta del código recién descubierto y lo que hace, corre el riesgo de empeorar su propio código.



imagen
Aprenda los detalles de cómo obtener una profesión solicitada desde cero o subir de nivel en habilidades y salario tomando los cursos en línea de SkillFactory:





All Articles