Comment puis-je écrire du code en toute sécurité dans mes propres «mots» et ne pas plagier?

18

Je comprends assez bien le plagiat et la paraphrase lorsqu'il s'agit de rédiger un document de recherche, mais ces domaines équivalents en programmation me semblent étrangers. J'ai consulté les sujets en ligne et, étonnamment, il n'y a pas autant de documents sur le sujet que l'on aurait pu s'y attendre.

Lorsque j'écris du code et que je dois implémenter quelque chose que je n'ai jamais implémenté auparavant, je vais en ligne pour chercher un exemple. J'essaie de lire la documentation au préalable, mais je trouve parfois difficile de suivre. Donc, si cela échoue, je rechercherai le sujet en ligne et je recevrai des dizaines d'exemples (qu'ils soient sur le blog personnel de quelqu'un ou sur un site de questions / réponses comme SO). Maintenant, on me présente généralement 5 à 10 lignes de code. Je n'ai jamais copié et collé cela dans mon propre code, mais je m'inquiète toujours de le copier mot pour mot. J'ai du mal à reformuler un certain morceau de code, surtout quand il y a seulement tant de façons de le faire. Je m'assure de renommer les variables, de changer le formatage, etc. - mais est-ce suffisant?

J'ai toujours voulu comprendre ce sujet, mais maintenant que je travaille avec une nouvelle langue et dans un environnement d'entreprise, je pense que c'est particulièrement pertinent. Si quelqu'un pouvait expliquer ou établir un lien vers une bonne explication ailleurs, j'apprécierais grandement cela!

tl; dr Je ne comprends pas combien vous devez changer et reformuler 5 à 10 extraits de code trouvés en ligne pour éviter le plagiat. Et s'il y a très peu de choses que vous pouvez changer?

Ixrec
la source
Si vous devez penser activement à éviter le plagiat, quelque chose ne va pas avec le système. Bien sûr, vous ne devriez jamais simplement copier quelque chose, mais il ne devrait pas avoir à y penser.
Anto
1
@anto, je pense que je comprends ce que signifie le PO. OP a récupéré du code quelque part, veut l'utiliser ou l'intégrer à du travail qu'il fait. ma suggestion, pour que l'OP s'approprie de façon crédible quelque chose obtenu ailleurs est de (1) l'apprendre / le comprendre, (2) améliorer le code à la fois fonctionnellement (refactoring) et cosmétiquement (noms de symboles meilleurs et plus cohérents) et (3) l'exécuter dans son propre projet. je l'ai fait avec cet algorithme de glissement max rapide (O (log2 (N)). Mon code est à moi, mais j'ai appris l'alg ailleurs
Robert Bristow-Johnson
Bien que je comprenne que la question est plus large, ce lien peut être pertinent: puis-je utiliser légalement le code que j'ai trouvé sur un forum?
John Wu

Réponses:

30

Le plagiat n'est pas la même chose que la violation du droit d'auteur. Le plagiat fait passer le travail de quelqu'un d'autre pour le vôtre. Il est possible de commettre une violation du droit d'auteur sans plagier:

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

et il est possible de commettre un plagiat sans violation du droit d'auteur:

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

(extrait d'un moteur de base de données SQL sans serveur du domaine public)

Pour éviter le plagiat, vous pouvez envisager de citer votre source. Voici un exemple (parmi eux nombreux) 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
la source
4

Utiliser des tuteurs / tutoriels n'est pas du plagiat. Si je copiais ici la réponse de quelqu'un d'autre, ce serait du plagiat. Si je m'y connectais, montrant une citation, ce ne serait pas du plagiat.

Vérifiez que votre source autorise la (ré) utilisation (licence, autorisation écrite). Je pense que (besoin de vérifier) ​​quoi que ce soit sur SO sera implicitement un domaine de pub (ou des communs créatifs, partager de la même manière, etc.) ou il ne pourrait pas vraiment fonctionner. (Quelle utilisation obtient une réponse que vous savez que vous ne pouvez pas utiliser)

En bref, je pense que vous ne comprenez peut-être pas très bien le plagiat, à moins que les définitions ne diffèrent énormément dans le domaine des universitaires?

Ma règle d'or: utilisez toutes les réponses qui accélèrent simplement les résultats que vous obteniez de toute façon. Cependant, si vous trouvez un échantillon qui fonctionne comme par magie, mais vous ne savez vraiment pas comment (ou pourquoi) vous franchissez la ligne d'éthique.

Au sujet de la modification de petits extraits, je dirais l'inverse; comment pourriez-vous intégrer de petits extraits dans votre code sans réorganiser: les chances qu'il y tienne sont assez minces et j'ai une opinion assez forte sur ce à quoi devrait ressembler mon code. Peut-être que vous manquez cette «opinion» (lire: expérience) et je suggère d'écrire plus de code pour gagner en confiance. Une autre technique pour acquérir de l'expérience consiste à lire une réponse, puis à l'appliquer sans accéder à aucun exemple de code . Vous ferez des erreurs, mais vous apprendrez aussi suffisamment pour

  • le reproduire la prochaine fois
  • avoir confiance si vous comprenez le code
  • Se sentir bien avec vous

Envoyé de mon HTC; merci de faire une faute de frappe ou deux

sehe
la source
Les publications SO sont sous licence CC-BY-SA 3.0 (faites défiler vers le bas de la page), donc si quelqu'un rédige une solution complète à votre problème, vous n'êtes autorisé à la copier textuellement que si vous mentionnez l'auteur et votre le code est publié sous la même licence (ou pas du tout publié). Mais comme vous le dites, ce type de codage copier-coller est une mauvaise pratique en premier lieu.
5gon12eder
4

Si vous modifiez et reformulez le code uniquement pour éviter le plagiat, vous évitez (essayez) de détecter le plagiat. Tout dépend du morceau de code que vous copiez. Une possibilité consiste à valoriser un extrait de code donné simplement comme un guide utile avec une originalité créative limitée ou comme une pratique courante que personne ne peut revendiquer la paternité. L'autre possibilité est de la valoriser suffisamment pour donner du crédit. Vous pouvez donner du crédit à plusieurs niveaux, d'un simple commentaire de code à faire de votre code une fourchette / branche officielle du code d'origine. En résumé, il s'agit moins de ce que vous pouvez faire, mais de la façon dont vous considérez le code original et de la façon dont vous accordez du crédit si nécessaire. Le plagiat ne consiste pas à copier mais à copier sans donner de crédit.

Jakob
la source
1

Je vous suggère d'utiliser toutes les sources que vous pouvez trouver pour trouver un moyen de résoudre un problème. Et une fois que vous avez compris, vous supprimez toutes ces sources de l'écran et écrivez votre propre solution.

Sauf si vous avez une mémoire photographique et copiez l'une des solutions existantes, cela résout le problème de plagiat et / ou de violation du droit d'auteur. Il vous aide également en vous forçant à réellement comprendre le problème.

Vous pouvez aller un peu plus loin: la plupart des solutions que vous trouvez sur Internet ont un défaut ou un autre. Ce n'est pas parce qu'il est sur Internet qu'il est parfait. Trouvez ce qui n'est pas tout à fait correct et corrigez-le. De cette façon, vous obtenez une meilleure compréhension, un meilleur code et évitez définitivement toute accusation de violation du droit d'auteur ou de plagiat.

gnasher729
la source
0

Si vous ne codez pas dans un environnement universitaire, pourquoi vous inquiéter du plagiat? Dans un environnement professionnel, cela n'a d'importance que si vous plagiez d'autres employés de votre entreprise. Le plagiat est de savoir qui obtient le crédit. En tout état de cause, la solution au plagiat est simple - tout ce que vous prenez, faites honneur à l'auteur d'origine. S'il s'agit d'une page Web, incluez l'URL. Cela vous profite, car si vous avez des questions, vous pourrez peut-être retrouver la source d'origine.

Si votre question concerne vraiment la violation du droit d'auteur, n'oubliez pas que le droit d'auteur ne couvre pas les aspects fonctionnels. Il ne couvre que les choix créatifs où il existe un très grand nombre de choix tout aussi utiles. Si vous ne pouvez pas facilement modifier le code sans casser la fonctionnalité, ce n'est pas quelque chose de protégé par le droit d'auteur (selon la règle de la fusion ou des scènes à faire).

David Schwartz
la source