AW: Programmieren für Anfänger - Wie fange ich an?
Vielleicht ein kleiner Erfahrungsbericht:
Ich habe mit der Programmiersprache Java (studiumsbedingt) angefangen, das wurde von der FH so vorgegeben – denke da werden sich viele wiederfinden. Im Nachgang fand ich Java als erste Programmiersprache gar nicht so verkehrt. Es empfiehlt sich (andere vor mir haben es ebenfalls bereits erwähnt), direkt mit einer Entwicklungsumgebung wie z.B. Eclipse für Java zu beginnen, anstatt Programme im Notepad zu schreiben. Es gibt etliche Tutorials, und das erste „Hello World“ Programm ist fix erstellt und ausführbar. Dass mal was nicht klappt, und das tut es auf Anhieb meistens nie, daran muss man sich einfach gewöhnen. Anfangs muss man auch erst mal die Elemente der Sprachsyntax wie Anweisungen, Variablen, Schleifen, Bedingungen…. Kennenlernen – die gibt es nämlich in jeder Programmiersprache. Nach einigen Tutorials war das höchste der Gefühle, dass ich kleine Rechtecke in einem kleinen Eingabefenster ausgegeben oder Zahlenfolgen erzeugt und rausgeschrieben habe. Es gibt genug kleine Tutorials mit immer schwerer werdendem Schwierigkeitsgrad, einfach mal googlen!
Während dem Studium hat mir das Buch „Java ist auch eine Insel“ enorm geholfen – es geht zwar oft unglaublich ins Detail, aber zum Nachschlagen ist es allemal eine gute Hilfe. Wenn ich was nicht verstanden hatte oder ich zu einem Thema mehr wissen wollte, in dem Buch stand es garantiert…natürlich gab es dennoch viele schwarze Flecken am Java-Horizont, insbesondere wenn die Entwicklungsumgebung mal nicht so wollte - es wurde bereits der berühmte „classpath“ erwähnt. Man tappt anfangs generell oft im Dunkeln, weil die modernen IDEs (Entwicklungsumgebungen) so viel können mit zig Funktionen, und man eigentlich als Anfänger nur ein Bruchteil benötigt…davon nicht abschrecken lassen! Nach dem anfänglichen Kennenlernen der Sprache dann der nächste Meilenstein: mit einer IDE kann ich mein Programm an einer von mir gewählten Stelle anhalten und Anweisung für Anweisung weiter ausführen, das sogenannte Debugging. Ich kann den aktuellen Zustand betrachten, dies ist z.B. sinnvoll, um einen Fehler zu finden. (Ich verbringe einen Großteil meiner Arbeitszeit mit dem Debuggen, teilweise sucht man Stunden, um einen Fehler zu finden!)
Zurück zu den Sprachen: ich habe im späteren Studium in .NET entwickeln müssen, d.h. Programmiersprache C#, Entwicklungsumgebung Microsoft Visual Studio Express. Nun stellt man schnell fest, dass man doch etwas kann, denn in C# sieht alles sehr ähnlich aus und funktioniert auch sehr ähnlich. Sogar das erst erlernte Debugging gelingt ohne große Umstellung... C# als erste Sprache kann ich also auch empfehlen. Ein Pluspunkt MS Visual Studio: Programme mit grafischer Oberfläche waren „zu meiner Zeit“ viel einfacher und komfortabler im Visual Studio erstellt, ohne noch irgendwelche Plugins etc. suchen zu müssen. Per WYSIWYG-Oberfläche hat man sich also ziemlich schnell ein paar Buttons, Eingabefelder etc. in ein Fenster gepackt und war „fertig“.
Ich finde es auch nicht verkehrt, mit einer objektorientierten Sprache zu beginnen – mittlerweile kann man sogar in der SAP-Sprache ABAP objektorientiert entwickeln. Sicherlich wird man OOP nicht auf Anhieb verstehen und so verinnerlichen, wie jemand der seit Jahren damit arbeitet und die Möglichkeiten ausschöpft. Allerdings denke ich, dass man zumindest mit grobem Wissen über (abstrakte) Klassen, und (Statische) Methoden und Interfaces schon ein gutes Stück weit kommt.
Meiner Meinung nach kommt nun die spannendste Phase: man beherrscht die Sprachsyntax grob und findet sich in der IDE zurecht – bisher konnte man nur kleine Java-Programme schreiben, die in einem Fenster ausgeführt werden, weit entfernt von einer schicken grafischen Oberfläche. Wer mit einer anderen Programmiersprache angefangen hat, wird sicher ähnlichen Stand haben. Folgendes ist mir damals durch den Kopf gegangen: „Außerdem würde ich gerne mal Informationen abspeichern können, z.B. in eine Textdatei, in ein XML (und zwar korrekt und „wohlgeformt“, sodass ich diese ohne Fehler auch irgendwann wieder einlesen kann!)“. Oder „Mein Programm soll mit anderen Programmen/Diensten/was auch immer kommunizieren können, z.B. über das http-Protokoll. Die meisten Apps auf den Smartphones tun dies z.B., da sie ja irgendwie die Daten vom Server bekommen müssen“. „Und ein sauberes Fehlerhandling wäre auch nicht verkehrt, denn mein Programm darf nicht jedes Mal abstürzen, sondern sollte die Aktion abbrechen und dies dem User mitteilen“. Und und und….jetzt lernt man „eigentlich“ erst die Programmiersprache richtig kennen. Nicht bezüglich der Syntax, sondern vom „Sprachumfang“. Jede der populären Programmiersprachen bietet bereits viele Funktionalitäten, die ich durch Aufrufe/Nachrichten/Events/gerichtete Würfe von Zaunpfählen in meinem Code verwenden kann. „Ich muss nicht jedes Mal das Rad neu erfinden“. So kann man also – vorausgesetzt, man weiß, ob es so eine Funktion in Java (C#....) bereits gibt – wie sie heißt – und wie man diese Funktion füttern muss („welche Parameter muss ich übergeben?“). Das oben angesprochene Buch zeigt einem schon eine ganz gute Vielfalt, was out-of-the-box möglich ist. Achtung Spoiler: oftmals googelt man sich das Zeug auch zusammen, und landet meistens eh auf stackoverflow.com, wo ein User dies GARANTIERT auch schon mal wissen wollte – und wenn es gut läuft, ist auch noch ein Beispiel gepostet für STRG+C, V
Man beginnt, sich kleinere Projekte zu überlegen. Klassiker: „Movie-Database“. Wenn man dran bleibt, wird man besser, und verwendet schon viele Sachen aus dem einen Programm in seinem nächsten. Tjoa, simple as that (oder auch nicht). Beispiel aus meinen Anfängen: ich hatte irgendwann ne ganz schöne Ansammlung von kleinen „Showcases“. Kleinstprogramme, die oftmals in einer einzigen Source „irgendwas“ machen. Der eine schreibt etwas Beispieltext in eine Textdatei. Mehr nicht. Der nächste erzeugt einen Thread (nebenläufiges Programm), der sich irgendwann in meinem Hauptthread meldet. Wenn sich dieser meldet, wird eine Ausgabe erzeugt. Hab ich irgendwann später ein Programm eine Funktion einbauen wollen, hab ich mich gern bei meinen Showcases bedient
Ich habe gerade noch einmal die Beiträge vor mir überflogen (wo insgesamt viel Richtiges imho drin steht). Ein Hinweis noch: ich habe zu meiner Schulzeit mal versucht, mich mit HTML, CCS und Co anzufreunden. „Mal ne kleine Webseite bauen“. Ich habs gehasst
, waren mir damals zu viele unterschiedliche Konzepte auf einmal, schätze ich. Mittlerweile habe ich auch ein paar Apps entwickelt, sowohl für Android (Java) als auch iOS (Objective C), letzteres schon paar Jahre her. Find ich ebenfalls für den Einstieg vielleicht etwas überfordernd, obwohl Apps „cool“ sind. Wer z.B. schon etwas fit ist mit Java, kann mal den Exkurs zu einer Android App wagen, ich persönlich hätte wohl aufgegeben wenn Apps mein Einstieg sein sollten.
My two cents