¿Cómo escribo código de forma segura en mis propias 'palabras' y no plagio?

18

Entiendo bastante bien el plagio y la paráfrasis cuando se trata de escribir un trabajo de investigación, pero esas áreas equivalentes en la programación me parecen extrañas. He buscado los temas en línea, y sorprendentemente no hay tanto material sobre el tema como uno hubiera esperado.

Al escribir código y tener que implementar algo que nunca he implementado antes, me conectaré en línea para buscar un ejemplo. Intento leer la documentación de antemano, pero a veces me resulta difícil seguirla. Entonces, si eso falla, buscaré el tema en línea y se me presentarán docenas de ejemplos (ya sea en el blog personal de alguien o en un sitio de preguntas y respuestas como SO). Ahora generalmente se me presentan 5-10 líneas de código. Tengo y NUNCA copiaré y pegaré eso en mi propio código, pero todavía me preocupa copiarlo literalmente. Me resulta difícil volver a redactar una determinada pieza de código, especialmente cuando solo hay tantas maneras de hacerlo. Me aseguro de cambiar el nombre de las variables, cambiar el formato, etc., pero ¿es esto suficiente?

Siempre quise entender este tema, pero ahora que estoy trabajando con un nuevo idioma y en un entorno corporativo, creo que es especialmente pertinente. Si alguien pudiera explicar o vincular a una buena explicación en otro lugar, lo agradecería mucho.

tl; dr No entiendo cuánto tiene que cambiar y reformular 5-10 fragmentos de código que se encuentran en línea para evitar el plagio. ¿Qué pasa si hay muy poco que puedas cambiar?

Ixrec
fuente
Si tiene que pensar activamente en evitar el plagio, algo está mal con el sistema. Claro, nunca deberías copiar algo, pero no debería tener que pensarlo.
Anto
1
@anto, creo que entiendo lo que significa el OP. OP ha tomado algún código de algún lugar, quiere usarlo o integrarlo con algún trabajo que está haciendo. mi sugerencia, para que el OP se haga cargo de manera creíble de algo obtenido en otro lugar es (1) aprenderlo / comprenderlo, (2) mejorar el código tanto funcionalmente (refactorización) como cosméticamente (nombres de símbolos mejores y más consistentes) y (3) ejecutarlo dentro de su propio proyecto. He hecho esto con este algoritmo de deslizamiento rápido rápido (O (log2 (N)). Mi código es mío, pero aprendí el alg de otro lado.
Robert Bristow-Johnson
Si bien entiendo que la pregunta es más amplia, este enlace puede ser relevante: ¿Puedo usar legalmente el código que encontré en un foro?
John Wu

Respuestas:

30

El plagio no es lo mismo que la infracción de derechos de autor. El plagio es pasar el trabajo de otra persona como propio. Es posible cometer una infracción de derechos de autor sin plagiar:

// The following code is lifted, without permission, from Windows 2000.
// Copyright © 2000 Company-metonymous-with-Redmond.
// ...

y es posible cometer plagio sin infracción de derechos de autor:

/* I wrote this function. */
int sqlite3Strlen30(const char *z){
  const char *z2 = z;
  if( z==0 ) return 0;
  while( *z2 ){ z2++; }
  return 0x3fffffff & (int)(z2 - z);
}

(levantado de un motor de base de datos SQL sin servidor de dominio público)

Para evitar el plagio, podría considerar citar su fuente. Aquí hay un ejemplo (de los cuales hay muchos) de PostgreSQL :

/* datebsearch()
 * Binary search -- from Knuth (6.2.1) Algorithm B.  Special case like this
 * is WAY faster than the generic bsearch().
 */
static const datetkn *
datebsearch(const char *key, const datetkn *base, int nel)
Joey Adams
fuente
4

Usar tutores / tutoriales no es plagio. Si copiara la respuesta de otra persona aquí, eso sería plagio. Si me vinculó a él, mostrando una cita, eso no sería plagio.

Verifique que su fuente permita el (re) uso (licencia, permiso por escrito). Creo que (es necesario verificar) cualquier cosa en SO implícitamente será dominio de pub (o elementos comunes creativos, compartir por igual, etc.) o realmente no podría funcionar. (¿De qué sirve obtener una respuesta que sabes que no puedes usar?)

En resumen, siento que tal vez no entiendes el plagio tan bien, a menos que las definiciones difieran enormemente en el campo académico.

Mi regla general: use todas las respuestas que simplemente aceleren los resultados que estaba obteniendo de todos modos. Sin embargo, si encuentra una muestra que funciona mágicamente pero realmente no sabe cómo (o por qué) está cruzando la línea de la ética.

Sobre el tema de modificar pequeños fragmentos, argumentaría lo contrario; cómo integraría pequeños fragmentos en su código sin reorganizar: las posibilidades de que encajara son bastante escasas y tengo una opinión bastante sólida sobre cómo debería ser mi código. Tal vez te falta esa 'opinión' (léase: experiencia) y sugiero escribir más código para ganar confianza. Otra técnica para ganar experiencia es leer una respuesta, y luego ir y aplicarla sin acceder a ningún código de muestra . Cometerá errores, pero también aprenderá lo suficiente para

  • reproducirlo la próxima vez
  • tener confianza sobre si entiendes el código
  • sentirse bien contigo mismo

Enviado desde mi HTC; por favor, comete un error tipográfico o dos

sehe
fuente
Las publicaciones de SO tienen licencia como CC-BY-SA 3.0 (desplácese hasta la parte inferior de la página), por lo que si alguien escribe una solución completa para su problema, solo puede copiarlo literalmente si menciona al autor y su el código se publica bajo la misma licencia (o no se publica en absoluto). Pero como usted dice, ese tipo de codificación de copiar y pegar es una mala práctica en primer lugar.
5gon12eder
4

Si cambia y reformula el código solo para evitar el plagio, solo (intenta) evitar la detección de plagio. Todo depende de qué código copie. Una posibilidad es valorar un fragmento de código dado como una guía útil con originalidad creativa limitada o como una práctica común que nadie puede reclamar como autor. La otra posibilidad es valorarlo lo suficientemente importante como para dar crédito. Puede dar crédito en varios niveles, desde un simple comentario de código hasta convertir su código en una bifurcación / rama oficial del código original. En resumen, se trata menos de lo que puede hacer, sino de cuán original considera el código y cómo otorga crédito si es necesario. El plagio no es copiar sino copiar sin dar crédito.

Jakob
fuente
1

Te sugiero que uses cualquier fuente que puedas encontrar para descubrir cómo resolver un problema. Y una vez que lo haya resuelto, elimina todas estas fuentes de la pantalla y escribe su propia solución.

A menos que tenga una memoria fotográfica y copie una de las soluciones existentes, esto resuelve el problema de plagio y / o infracción de derechos de autor. También lo ayuda al obligarlo a comprender realmente el problema.

Puede ir un poco más allá: la mayoría de las soluciones que encuentra en Internet tienen una falla u otra. El hecho de que esté en Internet no significa que sea perfecto. Averigua lo que no es del todo correcto y arréglalo. De esa manera, obtendrá una mejor comprensión, tendrá un mejor código y definitivamente evitará cualquier acusación de infracción de copyright o plagio.

gnasher729
fuente
0

Si no está codificando en un entorno académico, ¿por qué debería preocuparse por el plagio? En un entorno profesional, solo importa si plagia a otros empleados de su empresa. El plagio se trata de quién recibe crédito. En cualquier caso, la solución al plagio es simple: cualquier cosa que tome, dé crédito al autor original. Si era de una página web, incluya la URL. Esto le beneficia, porque si tiene alguna pregunta, es posible que pueda encontrar la fuente original nuevamente.

Si su pregunta es realmente sobre infracción de derechos de autor, recuerde que los derechos de autor no cubren aspectos funcionales. Solo cubre opciones creativas donde hay una gran cantidad de opciones igualmente útiles. Si no puede cambiar fácilmente el código sin romper la funcionalidad, entonces no es algo que cubra los derechos de autor (bajo la regla de fusión o scènes à faire).

David Schwartz
fuente