Come scrivo in modo sicuro il codice con le mie "parole" e non plagio?


18

Comprendo il plagio e parafrasando abbastanza bene quando si tratta di scrivere un documento di ricerca, ma quelle aree equivalenti nella programmazione mi sembrano estranee. Ho cercato gli argomenti online e, sorprendentemente, non c'è tanto materiale sull'argomento come ci si aspetterebbe.

Quando scrivo codice e devo implementare qualcosa che non ho mai implementato prima, andrò online per cercare un esempio. Provo a leggere la documentazione in anticipo, ma a volte trovo difficile seguirlo. Quindi, se fallisce, cercherò l'argomento online e mi verranno presentati dozzine di esempi (se si trovano sul blog personale di qualcuno o su un sito di domande e risposte come SO). Ora di solito mi vengono presentate 5-10 righe di codice. Ho e non lo copierò MAI nel mio codice, ma mi preoccupo ancora di copiarlo alla lettera. Trovo difficile riformulare un certo codice, specialmente quando ci sono solo tanti modi per farlo. Mi assicuro di rinominare le variabili, cambiare la formattazione, ecc. - Ma è abbastanza?

Ho sempre voluto capire questo argomento, ma ora che sto lavorando con una nuova lingua e in un ambiente aziendale, penso che sia particolarmente pertinente. Se qualcuno potesse spiegare o collegare a una buona spiegazione altrove, lo apprezzerei molto!

tl; dr Non capisco quanto devi cambiare e riformulare 5-10 frammenti di codice trovati online per evitare il plagio. E se c'è davvero poco che puoi cambiare?


Se devi pensare attivamente di evitare il plagio, qualcosa non va nel sistema. Certo, non dovresti mai semplicemente copiare qualcosa, ma non dovresti pensarci.
Anto

1
@anto, penso di aver capito cosa significa OP. OP ha preso del codice da qualche parte, vuole usarlo o integrarlo con il lavoro che sta svolgendo. il mio suggerimento, affinché l'OP diventi credibilmente proprietario di qualcosa ottenuto altrove, è (1) apprenderlo / capirlo, (2) migliorare il codice sia dal punto di vista funzionale (refactoring) che estetico (nomi di simboli migliori e più coerenti) e (3) eseguirlo all'interno del proprio progetto. l'ho fatto con questo veloce algoritmo scorrevole (O (log2 (N)) max. Il mio codice è mio, ma ho imparato l'alg da qualche altra parte.
Robert Bristow-Johnson,

Mentre capisco che la domanda è più ampia, questo link può essere rilevante: posso usare legalmente il codice che ho trovato su un forum?
John Wu,

Risposte:


30

Il plagio non è lo stesso della violazione del copyright. Il plagio sta tramandando il lavoro di qualcun altro come il tuo. È possibile commettere una violazione del copyright senza plagiare:

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

ed è possibile commettere plagio senza violazione del copyright:

/* 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);
}

(estratto da un motore di database SQL serverless di dominio pubblico)

Per evitare il plagio, potresti considerare di citare la tua fonte. Ecco un esempio (di cui ce ne sono molti) di 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)

4

L'uso di tutor / tutorial non è plagio. Se dovessi copiare qui la risposta di qualcun altro, sarebbe un plagio. Se mi collegassi ad esso, mostrando una citazione, non sarebbe plagio.

Verifica che la tua fonte consenta il (ri) uso (licenza, permesso scritto). Penso che (è necessario controllare) qualsiasi cosa su SO sarà implicitamente dominio di pub (o commons creativi, condividi allo stesso modo ecc.) O non sarebbe davvero in grado di funzionare. (A che serve ricevere una risposta che sai di non poter usare)

In breve, sento che forse non capisci bene il plagio, a meno che le definizioni differiscano selvaggiamente nel campo accademico?

La mia regola empirica: utilizzare tutte le risposte che semplicemente accelerano i risultati che si stavano ottenendo comunque. Tuttavia, se trovi un campione che funziona magicamente ma in realtà non sai come (o perché) stai attraversando la linea etica.

A proposito della modifica di piccoli frammenti, direi l'inverso; come integreresti piccoli frammenti nel tuo codice senza riorganizzarli: le possibilità che si adattino sono piuttosto scarse e ho un'opinione abbastanza forte su come dovrebbe essere il mio codice. Forse ti manca quell'opinione (leggi: esperienza) e ti suggerisco di scrivere più codice per guadagnare sicurezza. Un'altra tecnica per acquisire esperienza è leggere una risposta, quindi andare e applicarla senza accedere ad alcun codice di esempio . Farai errori, ma imparerai anche abbastanza

  • riproducilo la prossima volta
  • ottenere la certezza se si capisce il codice
  • stare bene con te stesso

Inviato dal mio HTC; per favore concedi uno o due errori di battitura


I post SO sono concessi in licenza come CC-BY-SA 3.0 (scorrere fino alla fine della pagina) quindi se qualcuno scrive una soluzione completa per il tuo problema, ti è permesso copiarlo solo se menzioni l'autore e il tuo il codice è pubblicato con la stessa licenza (o non è affatto pubblicato). Ma come dici tu, quel tipo di codifica copia e incolla è in primo luogo una cattiva pratica.
5gon12eder,

4

Se modifichi e riformuli il codice solo per evitare il plagio, eviti solo (provi) di rilevare il plagio. Dipende tutto dal codice che copi. Una possibilità è quella di valutare un determinato frammento di codice come una guida utile con originalità creativa limitata o come pratica comune che nessuno può rivendicare la paternità. L'altra possibilità è di valutarlo abbastanza importante da dare credito. Puoi dare credito su più livelli, da un semplice commento di codice a rendere il tuo codice un fork / ramo ufficiale del codice originale. In sintesi è meno di ciò che puoi fare, ma di quanto originale consideri il codice e come dare credito se necessario. Il plagio non è copiare ma copiare senza dare credito.


1

Ti suggerirei di utilizzare qualsiasi fonte tu possa trovare per capire come risolvere un problema. E una volta capito, rimuovi tutte queste fonti dallo schermo e scrivi la tua soluzione.

A meno che tu non abbia una memoria fotografica e copi una delle soluzioni esistenti, questo risolve il problema del plagio e / o della violazione del copyright. Ti aiuta anche forzandoti a capire davvero il problema.

Puoi fare un ulteriore passo avanti: la maggior parte delle soluzioni che trovi su Internet ha un difetto o un altro. Solo perché è su Internet non significa che sia perfetto. Scopri cosa non è del tutto corretto e correggilo. In questo modo otterrai una migliore comprensione, un codice migliore ed eviterai sicuramente qualsiasi accusa di violazione del copyright o plagio.


0

Se non stai programmando in un ambiente accademico, perché dovresti preoccuparti del plagio? In un ambiente professionale, è importante solo se si plagiano altri dipendenti nella propria azienda. Il plagio riguarda chi ottiene credito. In ogni caso, la soluzione al plagio è semplice: qualsiasi cosa tu prenda, dai credito all'autore originale. Se proveniva da una pagina Web, includere l'URL. Questo ti avvantaggia, perché se hai qualche domanda, potresti essere in grado di ritrovare la fonte originale.

Se la tua domanda riguarda davvero la violazione del copyright, ricorda che il copyright non copre gli aspetti funzionali. Copre solo le scelte creative in cui esiste un numero molto elevato di scelte ugualmente utili. Se non riesci a modificare facilmente il codice senza interrompere la funzionalità, non è qualcosa che copre il copyright (in base alla regola di fusione o scènes à faire).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.