Programmieren falsche herangehensweise?
Ich wollte schon immer Programmieren lernen und hatte bereit mit 14 meine ersten Erfahrungen mit JavaScript, mit 16 Python und aktuell habe ich mit Java begonnen. Ich hatte aber schon immer den Gedankengang gehabt das alle Programmierer bzw. wenn man sich einer nennen will das man das was man lernt und schreibt auch auswendig kann und anwenden kann. Jetzt ist mir aber mit Java aufgefallen das es einfach viel zu viel ist um alles auswendig zu lernen und öfters sehe ich memes wo der Job eines Programmierers gezeigt wird (Copy & Paste).
jetzt ist meine Frage ob Programmieren heißt verstehen zu können was dort steht und es erklären zu können oder auch noch zusätzlich es auswendig zu lernen?
5 Antworten
Ich glaube dass die meisten Programmierer nicht alles auswendig können. Selbst mein Infolehrer sagt selber dass er immer nachschauen muss und das nicht auswendig kann. Und wegen den Memes: natürlich kann man einfach nachschauen und einfügen, aber man muss auch verstehen was man da einfügt und das ganze so umformen können dass es passt.
Grundlagen auswendig lernen und den Rest nur verstehen? Also klar wird ja automatisch auswendig gelernt wenn man es oft nutzt aber um Programmieren zu können ist eigentlich nur das Verständnis wichtig nach den Grundlagen, habe ich das richtig verstanden?
Man kann nicht alles im Kopf behalten. Es ist ganz normal das selbst gestandene Programmierer bei seltener genutzten Methoden usw. "nachschauen" müssen.
Das bedeutet jedoch nicht blindes copy&paste. Man sollte schon wissen was eine Routine im einzelnen tut. Selbstverständlich braucht ein erfahrener Programmierer sich keine Gedanken machen wie man grundlegende Dinge erledigt. Es gibt aber auch Situationen wo ich bei häufig veröffentlichten Vorgehensweisen noch immer Optimierungsmöglichkeiten finde. Diesbezüglich scheinen doch viele Programmierer es vorzuziehen den bequemen Weg zu gehen. In der Regel ist das auch ok.
Ich hatte vor kurzem mit einer Problematik zu tun, bei der ich Millionen von Iterationen ausführen musste. Bei derartigen Sachen können sich Millisekunden zu Stunden oder gar Tagen an Rechenzeit summieren. Da sollte man schon das propagierte "Standardprozedere" hinterfragen. (Gewöhnlich geht es lediglich um ein paar Duzent Loops, da interessieren ein paar Millisekunden garnicht)
Du musst nicht alles auswendig können. Viel wichtiger ist es zu wissen wie es funktioniert und vor allem wo du die nötigen Dokumentationen findest.
Es macht keinen Sinn sich die Mühe zu machen zig SBI-Konstanten auswendig zu lernen. Warum auch, sowas braucht man eher selten. Aber wenn darum geht, das irgendwas an Desktopeinstellungen, der Maus, Tastatur "geschraubt" werden soll habe ich wenigstens im Hinterkopf: "da war doch was..." , "kann man mal Nachschauen" und Google weiß in der Regel noch bevor es mir recht bewusst ist, in welche Richtung meine "Bedürfnisse" gehen. (Wenn ich mal nicht online Suchen kann habe ich auch noch eine eigene Datensammlung mit Notizen zu Themen, an welchen ich bereits gearbeitet habe.
Das war jetzt nur ein Beispiel für ein sehr großes Datenstrukturen mit vielen Unterstrukturen, das mir aus der Hüfte eingefallen ist, weil ich die Schnittstelle gelegentlich für PowershellScripte missbrauche" .
...und es gibt Sachen von denen ich keine Ahnung habe, weil ich noch nie damit konfrontiert war. Da hilft nur Google.
Wichtiger als alles andere ist es, beim heutigen Umfang von APIs und Frameworks, zu wissen wie man seine bevorzugte Suchmaschine effizient "füttert" und mit wenigen Blicken die nutzbringensten Ergebnisse zu erkennen.
Basics lernen und der Rest läuft mit den Projekten.
Auswendig lernen an sich bringt quasi nichts heutzutage. Wenn man natürlich alles immer nur nachschlagen muss, wird es mühselig und nervig, aber das kommt normalerweise automatisch mit der Praxis - die essenziellen Sachen benutzt man so oft, dass man sie sowieso lernt und alles andere ist normalerweise nicht wichtig
Auswendig zu lernen gibt es da kaum was.
Was man (ohne ständig ein Handbuch konsultieren zu müssen) parat haben muss, ist nur das Wissen über grundlegende Strukturen und Wortsymbole der jeweils genutzten Programmiersprache.
Schon wer C# einigermaßen kennt (oder einfach nur C mit dem Klassenkonzept aus C++), wird fast sofort auch jede andere Programmiersprache nutzen können.
Also würdest du sagen das es darauf ankommt zu verstehen was man kopiert bzw. das man die Sprache versteht aber nicht das man sie auswendig lernt?