Allgemeine Frage zum Programmieren lernen

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von wolfi_bayern.

    Allgemeine Frage zum Programmieren lernen

    Hallo,

    ich habe in der Schule Informatik und hatte in diesem Fach bisher immer 13 oder 14 Punkte. Allgemein macht mir das Programmieren sehr viel Spaß und ich möchte es später einmal zu meinem Beruf machen, da ich sowieso viel Zeit vor dem Computer verbringe und es mir einfach Spaß macht. Ich habe schon vor einigen Jahren angefangen mit C# und Java aber war einfach zu jung (oder zu blöd) und habe einfach nicht verstanden wie man lernen soll.
    Ich bin immer noch kompletter Anfänger und probiere zur Zeit mit VB rum. Gestern habe ich z.B. ein Programm für das Bubblesort Sortierverfahren geschrieben.

    Nun zu meiner Frage:
    Wie lernt man? Immer wenn ich etwas machen möchte, google ich es oder erstelle einen Thread. Nach einigem Erklären durch geduldige und freundliche User hier habe ich es dann verstanden aber im Endeffekt kopiere ich doch trotzdem nur den Code den ich gegeben bekomme. Das fühlt sich irgendwie ein bisschen wie Abschreiben an, aber andererseits verstehe ich auch einfach nicht wo man z.B. Codezeilen wie "TextBox1.Lines = TextBox1.Lines.Distinct().ToArray()" herbekommt ohne Abzuschreiben.
    Vielleicht lernt man ja wirklich auf diese Weise, ich wollte einfach mal nachfragen.

    Mit freundlichem Gruß
    naja - wenn du einen funktionierenden Code abgreifst ohne zu verstehen, warum der funktioniert - frag einfach nach.
    Im Forum antworten hat ja nur Sinn, wenn der Fragesteller was lernt - und bei nur Code einkopieren lernt er nix. Sondern der Antworter findet sich - wenn sich das wiederholst - unversehens in einer Rolle als "unbezahlter Auftrags-Krümel-programmierer" wieder.
    So verliert man ganz schnell die Lust zu antworten, insbesondere mit Codebeispielen.
    Was eiglich schade ist, denn Codebeispiele können unerhört lehrreich sein - wenn man denn lernen will.

    Hingegen bei Nachfragen zum Codebeispiel wird das Potential ja offensichtlich versucht zu nutzen.

    Aber das ist nur ein Weg zu lernen.
    Ich hab hier ein Sammelsurium (naja - es ist inzwischen schon ziemlich vollständig und durchdacht) an Lernstrategien zusammengestellt, teilweise aufeinander aufbauend, teilweise parallel zu betreiben - schaus dir mal an: Datenverarbeitungs-Vorraussetzungen
    Beim Programmieren Lernen ist aus meiner Sicht nicht das Ziel, am Ende alles selbstständig schreiben zu können, sondern zu ein solides Gefühl und Grundverständnis für das Thema zu haben und vor allem zu wissen, wo und wie man nach dem sucht, was man gerade braucht. So lange man noch relativ am Anfang des Lernprozesses ist, muss man natürlich viel mehr nachschauen - das ist absolut normal. Was du an diesem Punkt versuchen solltest, ist zu lernen, selbstständig zu suchen, sodass du, ohne selbst in Foren nachzufragen, zur Lösung kommst. Das im Internet nach Lösungen suchen ist etwas, was deine Entwicklerlaufbahn an allen Stationen begleiten wird - ich programmiere jetzt schon seit über 10 Jahren und google trotzdem ständig Sachen, weil es oft schneller geht, die Lösung von jemand anderem zu finden, als selbst eine eigene Lösung herauszuarbeiten - daran ist absolut nichts verwerflich, sondern es macht dich zu einem produktiveren Entwickler. Wichtig ist aber, dass du möglichst oft versuchst, zu verstehen, wie die Lösung funktioniert und wie man auf sie kommen könnte. Um dein Beispiel mal auseinander zu nehmen: Das Problem ist, dass du in einer TextBox alle doppelten Zeilen entfernen möchtest -> Was möchtest du verarbeiten? -> Textzeilen -> eine Auflistung von Strings, die jeweils eine Zeile darstellen -> Woher kriegst du die? -> Google ("https://gunnarpeipman.com/getting-distinct-values-from-arrays-through-net-framework-history/") -> TextBox.Lines. Zweites Problem: Wie kriege ich die Elemente aus diesem String-Array, die nur 1 Mal vorkommen? -> Google ("vb.net array unique elements") -> ​(...).Distinct().ToArray()
    Mit der Zeit, wenn du nach der Lösung zu einem (Teil-)Problem mehrmals gesucht hast, wirst du anfangen, dich an die Lösungen, die du schon gefunden hast, zu erinnern, und sie dann ohne nochmaliges Googeln anwenden zu können. Außerdem wirst du, wenn du wirklich versuchst, die gefundenen Lösungen zu verstehen, die Zusammenhänge und Logiken hinter dem Code finden und nach und nach immer mehr in der Lage sein, komplett eigenständig Lösungen für immer komplexere Probleme zu finden.
    Die erste Frage ist und bleibt: Wie beschaffe ich mir Informationen.
    Die zweite Frage ist: Wie kann ich beschaffte Informationen so ablegen, dass ich jederzeit darauf zugreifen kann.
    Ich rate jedem Neuling, sein Problem in disjunkte Teilprobleme zu zerlegen und diese in je einem neuen Projekt zu bearbeiten.
    Sinf alle Teillösungen erbracht, füge sie wiederum in einem neuen Projekt zusammen.
    So hast Du für jedes disjunkte Teilproblem ein Testprojekt erstellt, das Du bei der nächsten Gelegenheit wieder nutzen kannst.
    Kommentiere es sorgfältig und lege es ab, hier sollte es genügen, den Code einer Klasse aufzuheben nicht aber die Test-GUI mit einem Button und einem ListView.
    Dann aber solltest Du oben als Kommentar einfügen, welche Controls die GUI benötigt.
    Bearbeitest Du dieses Problem erneut, erstell eine Form mit besagten Controls, kopiere den Code hinein und (fast) feddich.
    Die eigentliche Form-Datei oder die Test-Klasse legst Du in Deiner privaten Snippet-Sammlung ab.
    Sortiere nach Themen und Controls und gib der Datei selbst einen sinnvollen Namen.
    Sollte der Name schon da sein, gib beiden Dateien bessere Namen oder eine laufende Nummer als Appendix.
    Meine Snippet-Sammlung umfasst ca. 2000 Ordner und Unterordner mit über 8000 Dateien. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vollzitat durch »Ansprache«-Funktion ersetzt ~VaporiZed

    @ErfinderDesRades
    Macht Sinn, alles klar, danke schau ich mir mal an.

    Edit: Ich kann irgendwie keine Antworten mehr verfassen, dabei wollte ich mich noch bei den anderen bedanken. Ich werde mir auch eine Snippet Sammlung erstellen. Danke für eure Hilfe.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Evtl. ist folgende Seite interessant... Vermutlich bist Du über "Hello World" schon drüber hinaus... aber da wird es eben nochmal von Anfang an erfklärt und man kann es direkt im Browser ausprobieren...

    docs.microsoft.com/en-us/learn/paths/csharp-first-steps/
    Der Beitrag wurde aus 100% wiederverwendbaren Elektronen erstellt!