Code lesen & verstehen, aber nicht schreiben können

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MoeSk1llZ
User
Beiträge: 3
Registriert: Freitag 9. Februar 2024, 12:22

Hallo liebe Community,

ich habe letztes Jahr das Programmieren begonnen und habe Spaß daran. Ich verstehe Code, kann ihn auch lesen & zum Teil programmieren.
Nur wenn es jetzt um komplexere Programme geht, habe ich Schwierigkeiten diese zu schreiben. Ich bin erst seit 5 Monaten dabei, und absolviere
einen geprüften Informatiker über die SGD Fernschule, was echt spaß macht. Nur bei jedem neuen Programm grübel ich, und werfe mir vor wieso ich das noch nicht schreiben kann. Fühlt jemand ebenfalls so, und oder kann seine Erfahrungen dazu teilen ? :)

LG Moe
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Zunächst allgemein gesagt: Programmieren heißt auch, ein Problem in Teilprobleme aufzuteilen und dem Ganzen damit eine leichter zu beherrschende Struktur zu geben. Nach 5 Monaten Kurs hast du sicherlich auch schon die objektorientiere Programmierung kennengelernt. Zwar sind Klassen kein Allheilmittel und man hat in Python-Programmen eher so Mischformen mit Klassen und Funktionen gleichzeitig. Aber die Dinger helfen halt, wenn korrekt angewendet, beim Erzeugen von der angesprochenen Struktur.

Irgendwann ist man dann soweit, dass man bei nicht allzu komplexen Problemen die Lösung schon mehr oder weniger im Kopf hat. Ich behaupte mal, dass es noch weitaus mehr Leute hier gibt, die das Programm dann runter schreiben können und es nicht selten schon beim ersten Versuch zum Laufen kriegen. Dann kommt meist noch etwas Refactoring dazu, damit es vorzeigbar ist und ggf. das Abdecken bestimmter Randfälle im Code.

Was ich sagen will: Das ist im Endeffekt alles Übungssache. Kannst du vielleicht beschreiben, wo genau du die Schwierigkeiten bei dir siehst und wo du in Zukunft hin möchtest? Man muss ja nicht alles können (ist irgendwo auch unrealistisch), aber entmutigen lassen sollte man sich natürlich auch nicht.
MoeSk1llZ hat geschrieben: Freitag 9. Februar 2024, 12:39 Nur wenn es jetzt um komplexere Programme geht, habe ich Schwierigkeiten diese zu schreiben.
Ich weiß, was du meinst. Du musst quasi so tun als würdest du mehrere Programme nebeneinander schreiben und diese dann sinnvoll zusammenfügen. Das löst man in Abhängigkeit von der Größenordnung des nötigen Code mit Funktionen oder Klassen oder Modulen. Und die kommunizieren dann über Argumente miteinander.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Programmieren ist im Lernstadium halt "learning by doing". Dazu gehört dann auch, dass man Code wegwirft und neu anfängt. Weil man es halt (inzwischen) besser weiß.

Was auch hilft ist hier Code oder zusammenhängende Codeabschnitte zu posten, Kritik abholen und besser machen. Was auch hilft ist hier in anderen Threads mitlesen und evtl. gelerntes in den eigenen Code einzubauen.

Gruß, noisefloor
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@MoeSk1llZ
Wie sieht denn so ein typisches Programm bei dir aus? Steckt da (fast) alles in der Hauptfunktion (falls überhaupt Funktionen verwendet werden) oder wie müssen wir uns das vorstellen? Du hast jetzt den "Mimimi Part" hinter dir, nun kläre uns mal bitte über deinen aktuellen Stand auf, sofern du konstruktive Hilfe wünschst. ;)
MoeSk1llZ
User
Beiträge: 3
Registriert: Freitag 9. Februar 2024, 12:22

Ich schreibe schon code mit Funktionen und lerne auch gerade Klassen kennen, und durch das schreiben/programmieren lerne ich es auch immer mehr. Mein Problem ist sozusagen das zerlegen in kleinere Puzzleteile, und diese zum Ende zusammen zufügen. Tatsächlich kann ich kleinere Sachen schon so aus dem Kopf erstellen, aber wenn es um größere Lösungen geht, ist es eher so das ich mich überfordert fühle und nicht wüsste wo ich beginnen soll - Was am besten zur Lösung führen würde und wie die Umsetzung stattfindet - Puzzleteile erstellen und zusammenfügen (denke auch das dies durch trial & error besser wird).
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MoeSk1llZ: Zwei übliche ”Sollbruchstellen” sind Eingabe, Verarbeitung, und Ausgabe zu trennen, und wenn man etwas für viele Datensätze gleich machen muss, das Verarbeiten *eines* Datensatzes einzeln zu machen und dann diese Funktion oder Methode auf alle Datensätze anzuwenden.

Eine weitere Methode die Datenverarbeitung zu strukturieren ist es Datensätze als Datenströme zu sehen die irgendwo generiert werden (Iterator, Generator, Generatorfunktion), wo man Daten herausfiltern kann (`filter()`), Datensätze transformieren (`map()`), und aggregieren kann (`itertools.reduce()`). Neben den genannten Funktionen gibt es in den `itertools` und `more_itertools` Modulen noch eine Menge allgemeiner Werkzeuge die man mit relativ einfachen selbst geschriebenen Funktionen zur Lösung von allen möglichen Problemen verwenden kann.

Unit-Tests können auch hilfreich sein Code zu strukturieren, weil man sich dann Gedanken um Testbarkeit macht, was verhindert das man zu viel oder Sachen die eigentlich nicht zusammengehören, in Funktionen/Methoden steckt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
snafu
User
Beiträge: 6742
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@MoeSk1llZ
Du könntest dich bei Interesse ja mal an https://adventofcode.com/ probieren. Du wärst jetzt im Februar zwar etwas spät dran damit, aber die Aufgaben von allen Tagen sind trotzdem verfügbar. Die Programmiersprache ist dabei frei wählbar bzw. nicht relevant, da AOC die Lösung nur als "kodierte" Zahl erwartet. Hier im Forum war das in den letzten Jahren recht beliebt und es gibt dazu auch einen Thread, wo die Lösungsansätze diskutiert werden und einige Komplettlösungen reingestellt wurden. Vielleicht ist das ja was für dich.

Also keine Ahnung, ob dich das zusätzlich zu deinem Kurs interessiert bzw. ob du die nötige Zeit dazu hast. Im Endeffekt kann man aber auch nur zweimal die Woche oder so eine Aufgabe dort lösen. Auch hier gibt es keine Vorgaben von der Seite und ein Advents-Feeling kommt jetzt ja sowieso nicht mehr auf. ;)
imonbln
User
Beiträge: 149
Registriert: Freitag 3. Dezember 2021, 17:07

Du programmierst seit 5 Monaten, da ist es völlig normal, komplexe Programme noch nicht hinzubekommen, nicht umsonst studieren viele Informatik mehrere Jahre.
Mir hat am Anfang meiner Karriere geholfen, Programme als eine Art Gebrauchsanweisung zu verstehen und zu überlegen, wie würde ich die Aufgabe einem Freund erklären, der sich damit nicht auskennt. In deinem Stadium ist Programmieren noch einfache Programme schreiben.
Wenn du willst, such dir Source Code von anderen und versuche denn zu erweiterten. Das lehrt ungemein, zu sehen wie andere Probleme lösen. Außerdem ist das auch eine Fähigkeit, die man oft im Beruf braucht, da man meistens den Quellcode von anderen anpassen muss.

Zudem gibt des in der Programmierung das Zauberwort MVP (minimum viable product). Die Idee ist einfach anzufangen, Feedback einzusammeln und peu à peu komplexer zu werden, indem man schrittweise Features zum bestehenden Programm hinzufügt, auch wenn das hin und wieder ein Refactoring erfordert.
MoeSk1llZ
User
Beiträge: 3
Registriert: Freitag 9. Februar 2024, 12:22

Erstmal vielen dank für alle Antworten & Tipps, weiß ich sehr zu schätzen. Ihr habt mir ein wenig Motivation gegeben ^^
Ich werde natürlich weiter machen und einfach fleißig lernen & programmieren.

Wie Imonbln schon sagte "MVP - minimal viable product". Einfach machen und Feedback + Erfahrung sammeln.
Antworten