Wir haben einen Programmierkurs an der Universität und Kommilitonen stellen in unserer Facebook-Gruppe einige Programmierfragen. Ich zögere ein wenig, alle meine Programme zu teilen, besonders wenn es für eine der Aufgaben etwas Cooles ist, da diese von den TAs angeschaut werden und sie möglicherweise bemerken, dass jemand das gleiche Programm hat und anfängt, Fragen zu stellen, wo es herkommt von. Trotzdem möchte ich manchmal meinen Code weitergeben, um anderen zu helfen, aber ich möchte nicht, dass die Leute einfach meine Arbeit packen. (Klarstellung: Wir dürfen mit den Aufgaben zusammenarbeiten) Dies ist natürlich eine dünne Linie. Während ich einigen Menschen helfen möchte, befürchte ich, dass sie nicht die akademische Ehrlichkeit haben, den Code selbstständig umzuschreiben.
Die meisten meiner Kommilitonen sind in ihren Fähigkeiten nicht sehr fortgeschritten, daher würde ich sagen, dass ich meinen Namen in einer Base-64-codierten Zeichenfolge verstecke, die an einem diskreten Ort hergestellt wurde. Trotzdem kann es zu offensichtlich sein, dass eine zufällige Zeichenfolge herumsteht.
Welche Möglichkeiten gibt es, meinen Namen in einem Programm zu verbergen, ohne dass er verdächtig aussieht?
Ich habe bei CodeGolf gesehen, dass sie ASCII-Kunst zu anderen Dingen gemacht haben, wenn sie bewertet wurden. Gibt es ähnliche Strategien, die ich anwenden könnte? Die ideale Lösung wäre etwas, das wie etwas aussieht, das diskret hineinpasst, aber in Wirklichkeit die Funktion hat, zu beweisen, dass ich es von Anfang an codiert habe.
Klarstellung: (Entschuldigung, hätte das früher sagen sollen) Wir dürfen zusammenarbeiten, müssen aber den TAs unsere Programme erklären, um die Punkte zu bekommen. Es ist nur zur Befriedigung, einige Ostereier im Code eines anderen zu verstecken, wenn dieser ausläuft, zumal es verlockend sein kann, Programme auszutauschen, um zu überprüfen, ob die Antworten auf von ihnen verursachte Probleme gleichwertig sind usw. oder um zu sehen, wie andere das Problem lösen.
Antworten:
Verwenden Sie Ihre Signatur nicht in Ihrem Code, sondern in einem öffentlich zugänglichen Entwicklungsprotokoll.
Veröffentlichen Sie Ihren Code in einem öffentlichen Github-Repo. Fügen Sie einen Docblock mit Ihrem Namen in das Feld "Autor" ein. Auf diese Weise ist öffentlich bekannt, dass Sie der eigentliche Autor des Programms sind.
Dies kann nicht als "Verstecken" qualifiziert werden, aber meiner Meinung nach tut es dies. Wenn ein Schüler beschließt, Ihren Code zu kopieren, wird er denken, dass er nur seine Unterschrift gegen Ihre austauschen muss. Stellen Sie sich ihre Überraschung vor, wenn Sie öffentlich Beweise für ihr Fehlverhalten vorlegen. Um die Sache noch schlimmer zu machen, ist es online verfügbar. Sie können sogar ein Online-Tool wie Diffchecker verwenden , um zu demonstrieren, welche Teile Ihres Codes gestohlen wurden!
BEARBEITEN: wie in den Kommentaren erwähnt, sicher, dass Ihre Schule es ermöglicht, Ihre Arbeit auf diese Weise zu teilen! OP gab an, dass ihre Institution damit einverstanden ist, aber Ihre möglicherweise nicht!
quelle
"Da diese von den TAs geprüft werden und sie möglicherweise bemerken, dass jemand dasselbe Programm hat"
, hoffe ich, gehört es zu ihren Aufgaben, Betrug, Plagiat und andere Betrugsfälle aufzudecken und zu bestrafen.
Und die Arbeit anderer zu duplizieren und sie als deine eigene weiterzugeben, ist das, Betrug und Plagiat.
Ganz einfach: Überlassen Sie Ihre Arbeit nicht anderen. Helfen Sie ihnen, ihre eigenen zu schreiben, indem Sie ihnen Ideen zur Lösung von Problemen geben, und lassen Sie sie dann ihre eigene Codierung vornehmen.
quelle
Wie die obige Antwort, die ich mit etwas wie Github ermutige, um Ihre Entwicklung des Codes zu protokollieren, gibt es andere Methoden, die Sie verwenden könnten, um sich zu verstecken, wie z was ich dringend empfehlen würde.
Dies ist natürlich der Fall, wenn die gemeinsame Nutzung von Code dringend erforderlich ist. Was ist mit Pseudocode? oder wie "Ratschenfreak" feststellte, teile die Idee nicht die Umsetzung. (Dies ist sinnvoller für komplexeren Code)
quelle
Sie können auch einen der ältesten Tricks verwenden, um Nachrichten auszublenden. Lassen Sie den ersten Buchstaben jeder Variablen eine Nachricht ausblenden. Beispielsweise,
quelle
Ich denke, dass GitHub oder eine ähnliche Lösung in Ordnung ist, ABER es gibt zwei Dinge zu beachten:
quelle
Kartografen haben das gleiche Problem . Ein paar Techniken:
Führen Sie eine unwahrscheinliche Abweichung vom traditionellen Stil Ihrer Sprache ein, z
if (lefthand== righthand)
Verteile No-Ops in deinem Code, wenn sie Teil der von dir verwendeten Sprache sind.
lefthand = righthand;;
quelle
Vermeidung von Plagiaten in NICHT Ihrem Beruf als Student, das liegt ausschließlich in der Hand eines Ausbilders / TA.
Im Allgemeinen behandeln Schule als wäre es ein Closed-Source-Geschäft. Ihre Kommilitonen sind Kollegen für andere Arbeitgeber. Sie können keinen Code über einfache Liner und dergleichen hinaus freigeben und NIE ganze Klassen oder Projekte freigeben .
Das Verstecken von "Easter Eggs" im Code wird allgemein als unprofessionell angesehen. (Meinungen können hier abweichen)
Machen Sie keinen stinkenden Code zu Ihrer Unterschrift
Ihre "Signatur" oder wie Sie Ihren Code von anderen unterscheiden, sollte geschmackvoll sein und Ihren Code in keiner Weise "riechen". Aus diesem Grund rate ich dringend von Folgendem ab:
Wie schütze ich dann meinen Code ?!
Im Allgemeinen ist die Einschränkung der Verfügbarkeit der beste Weg, um Ihren Code zu schützen. Wenn Sie es nicht veröffentlichen und niemand Ihren Computer hackt, ist Ihr Code im Allgemeinen sicher. Sicher, es könnte dekompiliert, rückentwickelt usw. werden. An diesem Punkt ist es sowieso nicht so, als würde es dem Code entsprechen, der es generiert hat.
Ich möchte es veröffentlichen, aber verhindern, dass es plagiiert wird
Nur nein ... Auf jeden Fall könnte ein Plagiat durch unordentliche Zauberei in Ihrem Code auffallen, vorausgesetzt, er stellt seinen Code ebenfalls zur Verfügung ... und das werden sie auch nicht .
Es wird Sie auch schrecklich aussehen lassen, wenn andere Ihren Code durchsehen und gehen. "Was zum Teufel ist mit all den Tippfehlern und No-Ops?"
Aber ich möchte eine Codesignatur, etwas, das ich mir ansehen und sagen kann, dass ich das getan habe, ich war es, das gehört mir
Ehrlich gesagt, wenn Sie gut programmieren, sollte es im Allgemeinen nicht von jedem anderen Code in den Projekten zu unterscheiden sein, an denen Sie arbeiten. Sicher, es könnten Nuancen sein, die Ihnen zeigen, woran Sie gearbeitet haben, und welche Bob getan hat, aber diese sollten ziemlich mild sein.
Der einzige Zeitcode, der bei Gleichaltrigen auffällt, ist, wenn etwas neu ist und noch nie in Ihrem Kreis gemacht wurde, oder wenn es auf eine Weise riecht, die für Ihren Kreis einzigartig ist.
quelle
Da das Problem darin besteht, eine Signatur im Quellcode zu verstecken, wo
Eine interessante Variante der Steganographie .
Sie können keine Formatierung oder Leerzeichen verwenden, da dies von jeder kompetenten IDE trivial entfernt werden kann.
Das lässt wirklich nur die Benennung von Variablen und Funktionen zu. Sie können keine gemeinsame unterscheidende Teilzeichenfolge verwenden, da sie durch Suchen und Ersetzen zu leicht entfernt werden kann. Dadurch werden eindeutige und originelle Variablennamen verwendet, die einzeln entfernt werden müssten. Rechtschreibfehler und fremdsprachige Wörter sind gute Kandidaten.
Die Möglichkeiten für Kreativität sind grenzenlos!
Dann wird eine einfache Textverarbeitung zum Extrahieren und Vergleichen von Token die Plagiatoren schnell erkennen.
quelle
duozmos Vorschlag, noops zu verwenden, führt möglicherweise zu schlechten Noten für die Schlamperei, aber das könnte eine gute Sache sein, wenn Sie Code in einem Beispiel verwenden, der nicht wörtlich verwendet werden soll.
Das hat mich dazu inspiriert, über ein abwechselndes Signaturmuster von Tabulatoren und Leerzeichen in führenden und nachfolgenden Leerzeichen nachzudenken.
quelle
Ähnliches habe ich zuvor getan, um Variablen zu erstellen, die die gleichen Namen wie andere wichtige Variablen haben, deren Namen jedoch abhängig vom Texteditor abgelegt werden, sodass die Änderung nicht leicht erkennbar ist, oder um Buchstaben mit Akzenten zu verwenden. Rufen Sie mehrere Funktionen auf, an die Sie viele wichtige Variablen des Programms aus einer if-Anweisung senden, und verwenden Sie dabei Ihre Variablen, die niemals wahr sein werden, z. B. if (1eft == wrōng).
Sie sollten in der Lage sein, verschiedene Tutorials zum Thema 'Wie schreibe ich nicht wartbaren Code?' Zu finden, die hilfreich sein könnten.
quelle