it-swarm-eu.dev

Wie schreibe ich sicher Code in meinen eigenen "Worten" und plagiiere nicht?

Ich verstehe Plagiate und Paraphrasierungen ziemlich gut, wenn es darum geht, eine Forschungsarbeit zu schreiben, aber diese äquivalenten Bereiche in der Programmierung scheinen mir fremd zu sein. Ich habe die Themen online nachgeschlagen, und überraschenderweise gibt es nicht so viel Material zu diesem Thema, wie man erwartet hätte.

Wenn ich Code schreibe und etwas implementieren muss, das ich noch nie zuvor implementiert habe, gehe ich online, um nach einem Beispiel zu suchen. Ich versuche, die Dokumentation vorher durchzulesen, aber manchmal finde ich es schwierig, sie zu befolgen. Wenn dies fehlschlägt, werde ich online nach dem Thema suchen und Dutzende von Beispielen erhalten (sei es in einem persönlichen Blog oder auf einer Q & A-Site wie SO). Jetzt werden mir normalerweise 5-10 Codezeilen angezeigt. Ich habe und werde das NIEMALS kopieren und in meinen eigenen Code einfügen, aber ich mache mir immer noch Sorgen, es wörtlich zu kopieren. Es fällt mir schwer, einen bestimmten Code neu zu formulieren, insbesondere wenn es nur so viele Möglichkeiten gibt, dies zu tun. Ich stelle sicher, dass Variablen umbenannt, Formatierungen geändert usw. werden - aber reicht das aus?

Ich wollte dieses Thema schon immer verstehen, aber jetzt, da ich mit einer neuen Sprache und in einem Unternehmensumfeld arbeite, denke ich, dass es besonders relevant ist. Wenn jemand anderswo eine gute Erklärung erklären oder verlinken könnte, würde ich das sehr schätzen!

tl; dr Ich verstehe nicht, wie viel Sie ändern und 5-10 online gefundene Codefragmente umformulieren müssen, um Plagiate zu vermeiden. Was ist, wenn Sie nur sehr wenig ändern können?

18
Anonymous

Plagiat ist nicht dasselbe wie Urheberrechtsverletzung. Plagiat gibt die Arbeit eines anderen als Ihre eigene weiter. Es ist möglich, Urheberrechtsverletzungen zu begehen, ohne zu plagiieren:

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

und es ist möglich, Plagiate ohne Urheberrechtsverletzung zu begehen:

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

(aus einem gemeinfreien serverlosen SQL-Datenbankmodul entfernt)

Um Plagiate zu vermeiden, können Sie Ihre Quelle angeben. Hier ist ein Beispiel (von dem es viele gibt) von 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)
30
Joey Adams

Die Verwendung von Tutoren/Tutorials ist kein Plagiat. Wenn ich die Antwort eines anderen hier kopieren würde, wäre das Plagiat. Wenn ich mit einem Zitat darauf verlinken würde, wäre das kein Plagiat.

Überprüfen Sie, ob Ihre Quelle die (Wieder-) Verwendung zulässt (Lizenz, schriftliche Genehmigung). Ich denke, dass (muss überprüft werden) alles auf SO wird implizit eine Pub-Domain sein (oder Creative Commons, gleichermaßen teilen usw.) oder es würde nicht wirklich funktionieren können. (Was nützt es, eine zu bekommen Antwort, von der du weißt, dass du sie nicht verwenden kannst)

Kurz gesagt, ich habe das Gefühl, dass Sie Plagiate vielleicht nicht so gut verstehen, es sei denn, die Definitionen unterscheiden sich im Bereich der Akademiker stark?

Meine Faustregel: Verwenden Sie alle Antworten, die lediglich die Ergebnisse beschleunigen, die Sie ohnehin erhalten haben. Wenn Sie jedoch ein Beispiel finden, das magisch funktioniert, aber Sie wirklich nicht wissen, wie (oder warum) Sie die Ethikgrenze überschreiten.

Beim Modifizieren kleiner Schnipsel würde ich das Gegenteil argumentieren; Wie würden Sie kleine Schnipsel in Ihren Code integrieren ohne Reorganisation: Die Chancen, dass es hineinpasst, sind ziemlich gering und ich habe eine ziemlich starke Meinung darüber, wie mein Code aussehen sollte. Vielleicht fehlt Ihnen diese 'Meinung' (sprich: Erfahrung) und ich schlage vor, mehr Code zu schreiben, um Vertrauen zu gewinnen. Eine andere Technik, um Erfahrungen zu sammeln, besteht darin, eine Antwort zu lesen und sie dann anzuwenden ohne auf einen Beispielcode zuzugreifen. Sie werden Fehler machen, aber Sie werden auch genug lernen, um

  • reproduziere es das nächste Mal
  • vertrauen Sie darauf, ob Sie den Code verstehen
  • fühle dich gut mit dir

gesendet von meinem HTC; Bitte gönnen Sie sich ein oder zwei Tippfehler

4
sehe

Wenn Sie den Code nur ändern und umformulieren, um Plagiate zu vermeiden, vermeiden Sie nur die Erkennung von Plagiaten. Es hängt alles davon ab, welchen Code Sie kopieren. Eine Möglichkeit besteht darin, ein bestimmtes Code-Snippet nur als hilfreichen Leitfaden mit begrenzter kreativer Originalität oder als gängige Praxis zu bewerten, bei der niemand die Urheberschaft beanspruchen kann. Die andere Möglichkeit besteht darin, es wichtig genug zu bewerten, um Kredit zu geben. Sie können auf mehreren Ebenen Gutschriften vergeben, von einem einfachen Codekommentar bis hin zu einer offiziellen Abzweigung/Verzweigung des ursprünglichen Codes. Zusammenfassend geht es weniger darum, was Sie tun können, sondern darum, wie originell Sie den Code betrachten und wie Sie bei Bedarf Kredit geben. Plagiat ist nicht Kopieren, sondern Kopieren ohne Anerkennung.

4
Jakob

Ich würde vorschlagen, dass Sie alle Quellen verwenden, die Sie finden können, um herauszufinden, wie Sie ein Problem lösen können. Und sobald Sie es herausgefunden haben, entfernen Sie alle diese Quellen vom Bildschirm und schreiben Ihre eigene Lösung.

Sofern Sie nicht über ein fotografisches Gedächtnis verfügen und eine der vorhandenen Lösungen kopieren, wird das Problem von Plagiaten und/oder Urheberrechtsverletzungen gelöst. Es hilft Ihnen auch, indem es Sie zwingt, das Problem tatsächlich zu verstehen.

Sie können noch einen kleinen Schritt weiter gehen: Die meisten Lösungen, die Sie im Internet finden, weisen den einen oder anderen Fehler auf. Nur weil es im Internet ist, heißt das nicht, dass es perfekt ist. Finden Sie heraus, was nicht ganz richtig ist, und beheben Sie es. Auf diese Weise erhalten Sie ein besseres Verständnis, haben einen besseren Code und definitiv vermeiden Sie jegliche Anschuldigung wegen Urheberrechtsverletzung oder Plagiat.

1
gnasher729

Wenn Sie nicht in einem akademischen Umfeld programmieren, warum sollten Sie sich dann über Plagiate Sorgen machen? In einem professionellen Umfeld ist es nur wichtig, wenn Sie andere Mitarbeiter in Ihrem Unternehmen plagiieren. Bei Plagiaten geht es darum, wer Kredit bekommt. In jedem Fall ist die Lösung für Plagiate einfach - alles, was Sie nehmen, geben Sie dem ursprünglichen Autor Anerkennung. Wenn es von einer Webseite stammt, geben Sie die URL an. Dies kommt Ihnen zugute, denn wenn Sie Fragen haben, können Sie möglicherweise die Originalquelle wiederfinden.

Wenn Ihre Frage wirklich eine Urheberrechtsverletzung betrifft, denken Sie daran, dass das Urheberrecht keine funktionalen Aspekte abdeckt. Es werden nur kreative Entscheidungen behandelt, bei denen es eine sehr große Anzahl gleichermaßen nützlicher Entscheidungen gibt. Wenn Sie den Code nicht einfach ändern können, ohne die Funktionalität zu beeinträchtigen, ist dies nicht urheberrechtlich geschützt (gemäß der Fusions- oder Scènes-à-Faire-Regel).

0
David Schwartz