Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

02.08.2012, 18:25

Eure Meinung zu Copy/Paste

Hallo Leute,
der Titel kann vielleicht ein bisschen irreführend sein. Mit Copy/Paste meine ich nicht das hirnlose kopieren von Quelltexten, die man bei Google findet, sondern sich mit dem Quelltext auseinanderzusetzen, ihn zu verstehen und dann zu verwenden.
Ein Beispiel: Ich hab mir gerade den Wiki-Eintrag zu Gamestates durchgelesen. Unten ist ein Beispiel-Code, den man verwenden kann. Obwohl ich alles verstanden habe, wäre ich wohl nicht imstande diesen Code eigenständig so performant und logisch zu programmieren, da ich noch nicht so erfahren bin. Wenn ich den Code jetzt aber so wie er ist verwende (und höchstens hier und da noch Anpassungen mache), kommt es mir aber dennoch so vor, als hätte ich etwas geklaut. Trotzdem möchte ich nicht ständig auf meinen mehr schlechten als rechten (zwar selbst entworfenen, aber ziemlich unpraktischen) Methoden zur Umgehung eines solchen Problems beruhen, sondern mich weiterentwickeln und schauen, wie andere das lösen.
Da stecke ich dann immer so ein bisschen in einer Zwickmühle :P

Wie ist eure Ansicht darauf?


Mfg,

Akktta
Diese Angaben sind (wie immer) ohne Gewähr :D

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

02.08.2012, 18:32

Ich mache sowas manchmal um Zeit zu sparen.
Aber normalerweise nur, wenn ich denke, dass ich es auch selber hinbekommen hätte.
Manche Sachen sind halt keine Herausforderung, sondern nur mühsame Tipparbeit.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

02.08.2012, 20:29

Ich finde das verwenden von Code vollkommen Ok, auch wenn er Grösstenteils kopiert ist (sofern es die Lizenz gestattet). Dass man das in gleichem Masse selbst hinbekommt ist manchmal eher unwahrscheinlich und da finde ich es auch Ok, wenn man die Idee (wenn auch nicht jedes Detail) des Codes verstanden hat.

Etwas, was ich z.B immer mal wieder kopiere sind die diversen Pixel Algorithmen hier. Auch wenn ich wohl relativ schnell eine in den meisten Fällen brauchbare Variante selbst hinhauen kann sind die erprobten eben doch besser, weil sie auch Fälle abdecken, die man im ersten Moment nicht bedenkt. Da kann man sich die Arbeit sparen und sich den wichtigen Dingen zuwenden. :)

Was du auch nicht unterschätzen darfst ist, dass du mit dem lesen/bearbeiten des fremden Codes auch etwas lernst und nach einer Weile könntest du das selbst auch von alleine. Sich da am Anfang den Kopf zu zerbrechen muss nicht sein (gleichzeitig aber nicht die Ambition verlieren das verstehen zu wollen, was du benutzt!).

4

02.08.2012, 21:55

Also ich kopiere generell keinen Code, ohne ihn bis ins Detail durchzugehen und zu verstehen. Genau das, was du gesagt hast, drakon, meine ich auch: ich könnte eine Version hinbekommen, aber die wäre möglicherweise schlechter als seit längerem erprobte und immer wieder verbesserte Methoden, die ich bloß nicht kenne :D Und wenn man dann einmal den Code gesehen hat, ist es schwierig ihn "auf eigene Weise" selbst zu schreiben :P

Mit dem Lernen hast du vollkommen recht: wie soll man besser werden, wenn man nichts besseres sieht? :)

Danke für eure Meinungen!

MfG,

Akktta
Diese Angaben sind (wie immer) ohne Gewähr :D

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

03.08.2012, 06:56

Ich baue meist alles selbst, aber wenn es darum geht gewisse Standard-Lösungen nachzubauen, die es schon zu Hauf in anderen Libraries gibt (Mersenne-Twister, LibOGG, GUI-Komponenten), dann übernehme ich diese auch ab und an mal, einfach weil es schon da ist und unnötig viel Zeit kosten würde es selbst nochmal nachzubauen. Dass solche Sachen für mich dann zu komplex oder nicht verständlichen wären, das ist wohl eher nicht der Fall. Es geht dabei rein um Zeitersparnis.

Man sollte aber definitiv nicht einfach blind irgendwelche Code-Stücke kopieren (DX-Initialisierung, Fenster-Initialisierung und Texturen laden sind die typischen Anfänger-Beispiele), ohne sie verstanden zu haben. Das ist einer der größten Fehler, die man machen kann und halte ich für absolutes No-Go.
Eine Ausnahme gibt es mMn: Verschlüsselungs-Algorithmen. Diese sind komplex genug und da scheitert schon so mancher an der mathematischen Theorie des Algorithmus, vom Algo selbst mal ganz abgesehen. Da nimmt man dann halt eine Lib und dann funktioniert AES, Blowfish & Co eben und gut (ich hatte Kryptologie auf der Uni und habe da super abgeschnitten, weiß also trotzdem, was die wie tun ;-)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

6

03.08.2012, 09:45

Hallo,

ich denke genau so wie du. Ich bin da aber zu einen Kompromiss gekommen! Ich kopiere den Code nicht 1:1, sondern ich lese ihn sorgfältig, um ihn zu verstehen und dann nehme ich nur die Teile, die für mein Problem relevant sind. Denn selbst wenn man den code nur stupide abtippt, hat man trotzdem noch einen Lernerfolg und vielleicht kann man es dann beim nächsten mal selber machen.

Ich weiß auch nicht warum einen Entwicker so etwas quält, denn ein Handwerker baut sich sein Werkzeug auch nicht selber und ein Maurer kann eine Mauer setzen, weil er das Wissen von Generationen einfach wiederverwendet.

Gruß

Fb

7

03.08.2012, 12:19

Solange die Lizenz es zulässt sehe ich kein Problem damit, Code zu kopieren. Allerdings stoße ich persönlich meist auf das Problem, dass kopierter Code sich nicht in das Design des von mir selbst geschriebenen bereits existenten Codes einfügt. Damit alles Konsistent bleibt, schreibe ich oft einiges um und größere Segmente kopiere ich in aller Regel gar nicht. Paradebeispiel für kopierte Codesegmente sind auch bei mir eher in sich abgeschlossene Algorithmen, für die ich andernfalls eine große Menge Zeit investieren müsste.
Oft läuft es darauf hinaus, dass ich nur einzelne Funktionen oder einzelne Teile einer Funktion kopiere - und dann an meine eigenen Bedürfnisse anpasse. Sobald es um ganze Klassen oder Klassenkomplexe geht, bringt mir kopieren sowieso nicht besonders viel, denn schließlich brauche ich nicht "irgendeine" Lösung, sondern eine die zu meinem Projekt und meinen Anforderungen passt - und das mache ich dann doch lieber selbst.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

03.08.2012, 14:14

Genau. Wenn ich etwas kopiere, dann passe ich es an meinen Code-Stil an, z.B. Einrückung, Variablenbenennung etc.
Die Hemmschwelle ist hier deutlich höher als beim Verwenden einer externen abgeschlossenen Library.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

05.08.2012, 21:35

Von externen Libs sollte man meiner Meinung nach ruhig Gebrauch machen. Ich für meinen Fall habe eine längere Zeit lang alles selbst machen wollen. Dabei sieht man halt viel, braucht aber für alles ewig. Wenn mich heute etwas interessiert, versuche ich zu verstehen wie es abläuft und baue es dann selbst. Wenn ich nur Funktionalität benötige, dann greife ich gern auch fertige Libs zurück. Wenn es nur um Codesegmente geht gehe ich verschieden vor. Zuerst mal lese ich mir alles durch. Wenn ich dann denke, ich habe die Thematik dahinter so weit verstanden dass ich es nachbauen kann, dann mache ich das einfach. Wenn ich merke, ich hab nicht jede Einzelheit im Kopf (was nun mal oft der Fall ist und eigentlich auch ganz normal ist), dann setze ich mich hin, überfliege den Code noch mal und gehe danach Zeile für Zeile durch. Dann gucke ich was ich davon benötige und wie ich es in mein Konzept einfügen kann. Irgendwann funktioniert dann normal alles grob. Dann wird noch mal drüber gearbeitet und spätestens dann sollte es vernünftig eingebettet sein. Oft schleichen sich halt einfach am Anfang stellen ein, die eigentlich nicht optimal gelöst sind oder nicht 100% ins Design passen und die wollen ausgebessert werden. Man muss sich halt nur ein bisschen Zeit nehmen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige