Gute Programmierer kopieren, gute Programmierer stehlen

Das Kopieren des Codes kann gefährlich sein. Dies kann jedoch über viele andere Aspekte in der Softwareentwicklung gesagt werden, vorausgesetzt, sie werden nachlässig behandelt. In diesem Beitrag werde ich Themen diskutieren wie:

  • Was bedeutet das Kopieren von Code in der Softwareentwicklung?
  • Was bedeutet korrekter Codediebstahl?
  • Was sind die Gefahren eines falschen Kopierens?

Für Programmierer ist es kein Geheimnis, dass der Beispielcode, der hier auf Stack Overflow als Antwort auf Fragen veröffentlicht wird, häufig in der endgültigen Version von Programmen endet. Vielleicht haben Sie eine Frage gestellt, und sie haben Ihnen in Ihrer Antwort ein ideales Zyklusdiagramm geschickt for. Vielleicht haben Sie eine gute Antwort gefunden, in der es einen C-Code gab async await, der für Ihre Anwendung geeignet war.

Das letzte Programmierbuch, das Sie jemals brauchen werden:

Bild


Als ich auf einen Tweet stieß, der über die Vorteile von Diebstahl sprach, fragte ich mich, ob das Kopieren des Codes von Vorteil sein könnte.


Hinweis für Sie: Ich bin nicht dafür, dass Sie den Code wahllos aus unserem Abschnitt mit Fragen und Antworten kopieren. Manchmal können Sie deshalb Probleme haben. Wie unser Gast uns im Anna Lytical Podcast gezeigt hat, kann dieser Ansatz verwendet werden, um schnell funktionierende Prototypen zu entwickeln.

Wenn Sie Codebeispiele kopieren, hinterlassen Sie bitte einen Link zur Lizenz. Abhängig davon, wann der Code zuletzt bei Stack Overflow bearbeitet wurde, wird er mit einer Version der Creative Commons-Lizenz lizenziert. Die neuesten Codes werden von CC BY-SA 4.0 lizenziert, auf die verwiesen werden muss.

Schreiben Sie den Code einmal und lassen Sie ihn millionenfach funktionieren


Das Kopieren von Code aus dem Stapelüberlauf ist eine Form des Plagiats, dh das Duplizieren von Code aus einem oder mehreren Projekten und dessen Wiederverwendung. Wenn Sie sich ansehen, welchen Programmierer Sie fragen, kann sich herausstellen, dass in seiner Arbeit 5 bis 10 oder sogar 7 bis 23 Prozent des Codes aus einer anderen Quelle kopiert werden. Ob die Ausleihe korrekt erfolgt oder nicht, ist bereits eine Frage zur Diskussion.

Unabhängig vom tatsächlichen Prozentsatz der Ausleihe in einzelnen Projekten können wir mit Sicherheit sagen, dass Codeduplizierungen äußerst häufig sind. Boilerplate-Code ist Code, der während des gesamten Projekts regelmäßig wiederholt wird. Es ist wahrscheinlich, dass Programmierer es nicht jedes Mal selbst eingeben. Bibliotheken wie Lombok machen es möglich, die Notwendigkeit zu reduzieren, ein Boilerplate zu schreiben, aber die Tatsache bleibt:

  • Es wird immer Teile des Codes geben, die während des gesamten Projekts immer wieder erscheinen müssen.

UND

  • Aufgrund der Tatsache, dass diese Teile höchstwahrscheinlich noch kleine Änderungen benötigen, können diese Codefragmente nicht in eine separate Funktion oder Abhängigkeit entfernt werden.

In Bezug auf Abhängigkeiten können wir Bibliotheken und externe Abhängigkeiten erwähnen, die eine effektive Möglichkeit darstellen, Codefunktionen wiederzuverwenden, ohne sie zu kopieren. Es funktioniert fast wie das Kopieren von Code, mit dem einzigen Unterschied, dass Sie in diesem Fall nicht für die Aufrechterhaltung des Betriebs des kopierten Teils des Codes verantwortlich sind. Zur Hölle, jetzt läuft der größte Teil des Internets auf verschiedenen Plattformen und Plugin-Bibliotheken, die die Entwicklung vereinfachen. Die Wiederverwendung von Code in Bibliotheken ist unglaublich effektiv, da jede Bibliothek eine Sache tun kann und es trotzdem gut macht. Und im Gegensatz zu der Art und Weise, wie alle Quellen beim Schreiben von Werken in der wissenschaftlichen Gemeinschaft angegeben werden sollten, benötigen viele dieser Bibliotheken nichts von Ihrer Seite, um darauf hinzuweisendass Sie mit dem Code eines anderen programmieren oder dass Sie den Code eines anderen als Grundlage verwenden.

Der npm JavaScript Package Manager bringt dies auf das Äußerste. Sie können winzige Bibliotheken mit nur einer Funktion ( einige von der Größe einer Codezeile ) über die Befehlszeile in Ihr Projekt installieren . Sie können sich eines von über einer Million kostenlosen Open Source-Paketen schnappen und Funktionen in Ihre Anwendung einbetten.

Natürlich hat diese Methode wie jeder Ansatz auch ein Minus. Nach der Installation des Pakets verlieren Sie die Kontrolle über den Code. Einige Angreifer erstellten wirklich nützliche Pakete, warteten, bis sie eine anständige Download-Stufe erreicht hatten, und optimierten dann den Code , um Bitcoin-Geldbörsen zu stehlen. Wir müssen den npm-Mitarbeitern Tribut zollen, da sie es schaffen, solche Angriffe schnell abzuwehren. Je mehr externe Abhängigkeiten Sie haben, desto mehr Angriffsbereich stellen Sie sich vor.

Selbst Stapelüberlaufantworten sind nicht vor Codeduplizierungen geschützt. Ein unabhängiger Forscher fand mehrere Antworten auf Stack Overflow, in denen der Code aus anderen Quellen kopiert wurde. Ein Teil des Java-Codes wurde in über 40 Antworten gefunden.

Gute Künstler kopieren, große Künstler stehlen


In der Kunstwelt ist Diebstahl auch Teil der Schaffung großartiger Kreationen. Ich erinnere mich, wie ich ins Van Gogh Museum in Amsterdam ging und dort seine frühen Werke sah. Ich war schockiert. Aber dann wusste ich nicht, dass diese Bilder tatsächlich von japanischer Malerei und Holzschnitt (Holzschnitt) inspiriert waren . Was ich für einen für seine Zeit einzigartigen Stil hielt, war eigentlich Teil der Entwicklungsgeschichte, aber nicht der, an den ich dachte. Anstatt dem Entwicklungsweg zu folgen, den dänische Künstler bereits eingeschlagen hatten, verwendete Van Gogh die Ideen japanischer Drucke, die er in Paris gefunden hatte (er verwendete die Ideen der Gebäudekomposition und den Stil von Pinselstrichen) und kombinierte sie in seinen Arbeiten.

Picasso wird das Sprichwort zugeschrieben: "Gute Künstler kopieren, große Künstler stehlen." Picasso selbst hat viele Ideen aus der afrikanischen und polynesischen Kunst gezeichnet und mit seinen Skizzen kombiniert. Die Idee des Diebstahls selbst ist falsch. In der Tat ist es Plagiat, die Arbeit eines anderen als seine zu bezeichnen. Das geliehene Ding gehört noch jemand anderem. Sie kopieren den Stil und er gehört immer noch dem Eigentümer. Um jedoch zu stehlen, müssen Sie diese Idee zu Ihrer eigenen machen. Sich selbst zum Schöpfer einer Idee zu erklären, bedeutet, sich etwas auszuleihen. Aber Picasso hatte vor, dass er die Idee verstehen und in seine Arbeit einbinden musste, um sie zu „stehlen“. Steve Jobs war von diesem Zitat begeistert , und Apple war unter seiner Führung erfolgreich, weil sie Ideen gestohlen, kombiniert und verbessert haben.

Wenn Sie Code kopieren, laufen Sie Gefahr, ihn einfach auszuleihen. Der ausgeliehene Code wird vollständig in das Projekt eingefügt, wenn er gut eingebettet ist und keine Fehler verursacht. Er kann jedoch Fehler enthalten oder von Cyberkriminellen mit der Möglichkeit erstellt werden, sie für ihre Zwecke zu verwenden, von denen Sie nichts wissen. Die Anzahl der Risiken, die mit falsch kopiertem Code (oder in der geänderten Fassung) verbunden sind, ist enorm. In der Tat können Beschwerden über doppelten Code den Plagiat verfolgen. Wenn Sie den Code nicht verstehen, hinterlassen Sie wahrscheinlich Lücken im Schutz dessen, was ursprünglich nur als Demonstration des Konzepts gedacht war. Selbst der am häufigsten kopierte Code auf Stack Overflow wird nicht eines Fehlers beraubt .

Wenn Sie dagegen Code stehlen, wissen Sie definitiv, was er bewirkt. Sein Kern und seine Funktionen passen in Ihren eigenen Code. Wenn Sie es erneut aus dem Speicher schreiben können, ist dies ein Zeichen dafür, dass der Code korrekt gestohlen wurde. Dies bedeutet, dass Sie durch Code-Überarbeitung mehr als nur eine Kopie erhalten haben. Sie hat dir etwas Neues und Originelles gegeben.
Also ja, stiehl den Code. Nehmen Sie es, verstehen Sie und bewerben Sie sich in Ihren Projekten. Mach es zu deinem. Sie können Erfahrungen sammeln, Ihre Projekte verbessern und vielleicht sogar Ihren Lebenslauf (auch bekannt als Strg + C Strg + V). Wenn Sie jedoch kopieren, ohne den neu gefundenen Code und dessen Funktionsweise absolut zu verstehen, laufen Sie Gefahr, Ihren eigenen Code zu verschlechtern.



Bild
Erfahren Sie in SkillFactory-Onlinekursen, wie Sie einen begehrten Beruf von Grund auf neu erlernen oder Ihre Fähigkeiten und Ihr Gehalt verbessern können:





All Articles