Jump to content

Programmierung verstehen oder nur Copy und Paste

Empfohlene Beiträge

Hallo,

ich bin im ersten Lehrjahr und beschäftige mich mit Webseiten und Java-Programmierung. Mich würde interessieren, wie eure Anfänge waren. Habt ihr Code einfach aus dem Internet kopiert und dann angepasst? Oder alles alleine entwickelt?

Also ich lerne, indem ich Bücher oder Videos mir anschaue und das dann nachprogrammiere.

Grüße,

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hi,

wichtig ist es zu verstehen. Copy Paste ist ok, wenn man weiß, was man da tut. D.h. wenn du dir einen Codeabschnitt kopierst, ist es dringend nötig, dass du ihn dann auch verstehst. Sonst bringt dich das nicht weiter...

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Am Anfang ist das nicht einfach. Man muss sich durchbeißen.

Meine erste Aufgabe an einem produktiven Programm war, dass ich eine Anpassung vornehmen sollte. Dafür musste ich erstmal verstehen, was das Teil macht. Habe am Anfang nur den Namen des Programmes bekommen. Ohne weitere Info. Es war total anstrengend. Aber nach ein paar Tagen hatte ich das Teil angepasst und alles war wunderbar.

Wenn ich jetzt Code lese, den ich nicht selber geschrieben habe, verstehe ich trotzdem, was da passiert. Und genau das ist das Ziel....

 

Und mir gefällt er auch :D

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

In den Schulungen haben wir mit einem leeren Editor begonnen, aber dann den Rahmen als Template hinterlegt. Im späteren Einsatz war es vorhandenen Code lesen, verstehen und sehr oft kopieren - von Kollegen, Mitazubis, Schulungsunterlagen und dem Internet. Frei tippen kommt dann mit der Zeit.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 35 Minuten schrieb mintmaroo:

Habt ihr Code einfach aus dem Internet kopiert und dann angepasst? Oder alles alleine entwickelt?

 

Grüße,

Teils, teils.

Der Text wird ein bisschen länger (ich bin ja auch schon eine alte Schachtel, und alte Schachteln reden bekanntlich viel), darum gliedere ich ihn mal.

 

HMTL

Ich habe vor ca. 17 Jahren angefangen, HTML 4.0 zu lernen. Die Sprache eignete sich DAMALS sehr gut zum "Copy and Paste", weil man ein direktes Feedback hat, sobald man die fertige Seite anschaut, und sich die ganzen eingebetteten Sachen noch sehr stark in Grenzen hielten. CSS, JavaScript und PHP waren damals noch nicht weit verbreitet. Was man bekam, wenn man eine Webseite lud, war zu 95% reines, sauberes HTML, nur Text und Code und bunte GIFs, in all seiner atemberaubenden Hässlichkeit und wie dafür geschaffen, kopiert und verändert zu werden - mit der Leichtigkeit, mit der man Papierschnipsel zu etwas neuem zusammenkleben kann. Dann kam das Web 2.0 und damit wurde die Sache zunehmend komplexer und verwirrender. Natürlich kann man heute immer noch per Copy + Paste HTML lernen (und PHP und CSS undundund), aber man muss mehr Müll aussortieren.

 

C und C++

Ich habe dann ein paar Jahre später just for fun C und etwas C++ gelernt und das hauptsächlich durch Videos, Bücher und Nachprogrammieren gemacht. Dabei habe ich C auch am Arduino angewendet. Copy + Paste mache ich immer noch, aber es genügt nicht, den Code zu kopieren - man muss ihn verstehen. Gerade in der Programmierung, wo es nicht immer ein direktes Feedback gibt. Wenn man vor einem konkreten Problem steht, ist es sinnvoller, sich fremde Codes anzuschauen, um zu lernen, wie andere das Problem gelöst haben. Dann kommt die Transferarbeit - man kann ein fremdes Programmierkonzept nicht immer in den eigenen Code 1:1 übertragen, sondern man sollte sich bei jeder Zeile Gedanken machen, was das Programm tut und ob das für das eigene Ziel sinnvoll ist. Nicht zuletzt muss man ja mitunter auch neue Bibliotheken einbauen, und dann macht es Sinn, sich anzuschauen, was da so alles drinsteht und was ein konkreter Befehl mit Verweis auf eine fremde Bibliothek überhaupt macht.

 

Java

Jetzt in der Ausbildung (FISI) lerne ich Java in der Berufsschule. Wir nehmen uns seeeehr viel Zeit - nach einem halben Jahr haben wir gerade mal ein bisschen Datentypen, Wasserfallmodell, "Hello World" und eine Einführung in OOP gemacht (na ja - zumindest Klassen- und Objektdiagramme). Wirklich programmiert im Sinne von EVA haben wir noch nicht. Das ist ein häufiges Phänomen der Programmierung im Frontalunterricht, denn das Tempo richtet sich meistens nach dem schwächsten Glied, und in jeder Berufsschulklasse und in jedem VHS-Kurs sitzen Leute, die wirklich nur Bahnhof verstehen (am schlimmsten sind die, die auch noch keinen Bock auf die Sache haben). Das fand ich in der Mittelstufe schon anstrengend, weil es die Leute, die besser mit der Programmierung zurecht kommen, ausbremst. Es ist aber auch verständlich, denn in der Berufsschule lernt man wirklich idiotensicher alle Grundlagen, und jeder kann mal in der Situation sein, nur Bahnhof zu verstehen. Das ist keine Schande.

Durch mein Vorwissen geht es mir in der Berufsschule zu langsam und ich lerne gerade in der Freizeit anhand eines Buches und vieler Webseiten im Internet. Ich bin ein starker Selbstlerntyp, darum geht das ganz gut. Ich wünschte nur, ich hätte mehr Zeit, um in der Freizeit zu programmieren. Nach 8-9 Stunden Arbeit ist es oft so, dass ich gar keine Lust mehr habe mich an den Computer zu setzen, und auf der Arbeit habe ich meistens keine Zeit, mir meine Lerngebiete selbst auszusuchen.

 

Fazit

Für mich hat reines Copy + Paste nur bedingt Sinn gemacht, wirklich gelernt habe ich dadurch weniger als durch das Studium fremder Quelltexte und das Hineindenken in die Probleme, die der Programmierer hatte, und die Lösungen, die er dafür fand. Programmierung ist kreative Arbeit, und wer immer nur kopiert, arbeitet nicht kreativ. Jeder Mensch hat seinen eigenen Lerntyp, ich bin ein starker Selbstlerntyp mit einer starken kreativen Ader (habe auch andere kreative Hobbys) und andere nicht, darum kann jeder getrost ignorieren, was ich schreibe. Ich würde aber zwei Sachen empfehlen:

1. Beim Lernen mittels Webseiten oder Büchern den Quellcode abtippen statt kopieren. Das ist mühsam und eventuell fehleranfällig, aber nur so setzt man sich mit dem Code wirklich intensiv auseinander. Es gibt keine Möglichkeit, ein Thema zu überspringen, indem man mal kurz probiert, ob der Code überhaupt funktioniert, und das Thema dann als "weiß ich, kann ich" für immer abzuhaken. Das geht in der Regel früher oder später nach hinten los. Es hängt auch damit zusammen, was biologisch gesehen passiert, wenn wir lernen. Lernen heißt nichts anderes als Synapsen neu zu verknüpfen. Wir müssen eine Sache etwa 1000-mal gemacht haben, bis wir sie sicher beherrschen. Einen Text lesen, abtippen und dann auf Fehler korrigieren ist wesentlich effektiver als nur Copy + Paste - wir verknüpfen die passenden Synapsen gleich dreimal hintereinander.

2. Egal ob man einen Quelltext jetzt kopiert oder selbst entwirft, ich empfehle, möglichst bald selbst kreativ zu werden. Programmierung ist eine kreative Tätigkeit, in der Probleme formuliert und Lösungen gefunden werden. Das kann man genauso lernen und üben, wie man eine Programmiersprache lernen kann. Wenn ich programmieren lerne, abstrahiere ich einen Quellcode zu einem neuen Quellcode. Beispielsweise schreibe ich, sobald das Kreisberechnungsbeispiel aus dem Buch funktioniert, es zu einem Dreiecksberechnungsprogramm um. Mein Ziel ist dann vielleicht, am Ende ein Programm mit einer GUI zu haben, in der man Dreiecke zeichnen kann und dabei automatisch Fläche, Winkel, ob das Dreieck gleichschenklig ist etc. ausgespuckt werden. Dahin ist es ein langer Weg mit vielen Steinen, über die man stolpern kann. Man muss das Ziel in viele kleine Unterziele aufteilen, um effektiv weiterzukommen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor einer Stunde schrieb jk86:

Jetzt in der Ausbildung (FISI) lerne ich Java in der Berufsschule. Wir nehmen uns seeeehr viel Zeit - nach einem halben Jahr haben wir gerade mal ein bisschen Datentypen, Wasserfallmodell, "Hello World" und eine Einführung in OOP gemacht (na ja - zumindest Klassen- und Objektdiagramme). Wirklich programmiert im Sinne von EVA haben wir noch nicht. 

EVA ... Oha! Den Begriff habe ich bestimmt schon seit 15 Jahren nicht mehr gehört. Ich wusste gar nicht, dass dieser überhaupt noch Verwendung findet ^^" Allerdings verstehe ich nicht, wie man nicht danach programmieren sollte. Das ist das Grundprinzip von Datenverarbeitung und findet eigentlich immer statt. Man bekommt ein Input, es wird verarbeitet und gibt etwas aus. Das EVA-Prinzip ist ja nicht mal auf die IT beschränkt, sondern gilt allgemein. So verläuft auch ein Gespräch unter zwei Menschen nach diesem Prinzip: Man bekommt Input (hört zu, was der andere sagt), verarbeitet es (zieht Rückschlüsse aus dem Gesagten) und gibt dann eine Ausgabe (man erwidert etwas). Wenn du also eine Methode in Java geschrieben hast, die ein Parameter entgegennimmt und ein Rückgabewert besitzt, ist das schon EVA.

vor 4 Stunden schrieb mintmaroo:

Habt ihr Code einfach aus dem Internet kopiert und dann angepasst?

Als ich mit dem Programmieren anfing, da gabs noch kein Internet. Da gabs Zeitschriften und Bücher mit seitenlangen Code zum Abtippen. :D

vor 4 Stunden schrieb stefan.macke:

Ich würde behaupten, dass Copy und Paste von StackOverflow auch den Alltag "fertiger" Entwickler bestimmt ;)

In einer Firma, wo ich mal gearbeitet habe, war der Code voll von StackOverflow-Snippets. Der Code war voll von Kommentaren, in denen StackOverflow-Links standen. Ich persönlich halte mich da sehr zurück. Ich suche zwar auch oft nach Lösungen von bestimmten Problemen aber ich nehme den Code nur als Inspiration, wie man die Probleme lösen könnte und versuche dann ein Code zu schreiben, der auch zu meinem Stil passt. Oftmals sind es aber eh nur Lösungen von trivialen Problemen, nach denen ich suche um eine elegante Lösung zu finden. StackOverflow dient für mich eher als Wissensdatenbank, um mal tiefer unter die Haube gucken zu können, um zu verstehen, was da eigentlich mit dem Code passiert.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 4 Minuten schrieb Whiz-zarD:

Als ich mit dem Programmieren anfing, da gabs noch kein Internet.

Pass bloß auf, sowas darfst du den heutigen Azubis nicht zu laut erzählen... nachher meinen die noch, wir sind damals noch auf Dinosaurieren zur Arbeit geritten. ;)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 21 Minuten schrieb Chief Wiggum:

nachher meinen die noch, wir sind damals noch auf Dinosaurieren zur Arbeit geritten. ;)

Du reitest doch heute noch auf deinem T-Rex zur Arbeit und jeder der frech ist, wird das Mittagessen deines Schoßdinos xD

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 9 Stunden schrieb KampfKatze:

Wenn man es ganz genau nimmt sollte man, wenn man am lernen ist, garnicht am PC lernen.
Einfach ein Blatt Papier nehmen und darauf "programmieren". Denn was man schreibt bleibt eben besser hängen wie wenn man auf der Tastatur irgendwelche Tasten drückt[...]

Das kann man so nicht verallgemeinern.

  • Fehler in der Syntax sieht man so nicht unbedingt. Beim Programmieren werden diese angezeigt. Zudem hat man nicht die Unterstützung mit Syntax Highlighting usw.
  • Man muss die Grundlagen (Befehle, Syntax, Logik) bereits kennen, um so etwas sinnvolles auf die Beine stellen zu können. Ansonsten muss man Pseudocode nehmen.
  • Es hängt vom Lerntyp ab, wie man am besten lernt. Der eine durchs schreiben, der andere durchs lesen, der nächste durchs gezeigt bekommen oder durch Videos, wieder wer anders braucht eine Kombination davon.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich finde, beides hat seine Berechtigung. Gerade zu Beginn.
Denn, ich habe die Erfahrung gemacht, dass man hin und wieder auch Dinge erst einmal "machen" muss, um sie anschließend zu verstehen. Da kann Copy/Paste schon hilfreich sein.

Wichtig ist jedoch, dass man das nicht zur Maxime erhebt und darüber vergisst, Hintergründe und Co. zu recherchieren.
Copy/Paste kann schnell Abhilfe schaffen und einen auch mal aus einer kreativen Sackgasse holen, aber mehr auch nicht.
Der Regelfall sollte weiterhin das klassische Lernen sein.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden


×