Du möchtest Programmieren lernen, vielleicht um eigene Handy-Apps oder Webseiten bauen zu können? Dann stellt sich unweigerlich die Frage, mit welcher Sprache du am besten beginnen solltest.
Der Grund, wieso es überhaupt verschiedene Sprachen gibt, ist, dass jede Sprache ihre eigenen Vor- und Nachteile hat und auch Geschmäcker oft verschieden sind.
Manche Sprachen sind schneller, andere sind lesbarer, andere sind einfacher zu lernen. Es ist daher eine berechtigte Frage, welche Sprache man als Anfänger zuerst lernen sollte.
Motivation ist alles
Zu allererst sei jedoch gesagt, dass die größte Gefahr beim Einstieg in die Softwareentwicklung nicht die Wahl der falschen Programmiersprache ist, sondern das Risiko, dass du die Motivation verlierst.
Denn Programmierern zu lernen ist alles andere als einfach. Es dauert Jahre, bis man sich wirklich zurechtfindet. Du musst also eine hohe Ausdauer zeigen und das ist meist dann der Fall, wenn du Spaß an der Sache hast.
Überlege dir also erstmal ein Ziel, von dem du ausgehst, dass es dich langfristig motivieren kann. Wenn du Spieleentwicklung spannend findest, solltest du logischerweise eine Sprache wählen, die dafür auch geeignet ist und für die eine Community existiert, sodass es auch Foren gibt, in denen du Fragen stellen kannst.
Auch das Ökosystem ist wichtig
Auch sehr bedeutsam ist, dass du beim Programmieren immer auch Code benutzen wirst, den andere geschrieben haben. Möchtest du beispielsweise eine JPG-Datei einlesen, kannst du davon ausgehen, dass schon jemand den entsprechenden Code geschrieben hat, den du verwenden kannst. Diese Codemodule werden als Bibliotheken oder Libraries bezeichnet.
Das Ökosystem spielt also eine wichtige Rolle bei der Wahl der Programmiersprache. Generell gilt: Umso bekannter die Sprache, umso mehr Libraries gibt es. Sollte es keine Library für dein Problem geben, musst du den entsprechenden Code selbst schreiben, was viel Arbeitszeit kostet.
Die Sprache muss zu den Aufgaben passen
Man kann sagen, dass je nach Aufgabe eine andere Sprache optimal sein kann. Schreibt man beispielsweise einen Webbrowser, dann ist Performance sehr wichtig und man würde dementsprechend eine schnelle Sprache wählen, auch wenn das Entwickeln dort etwas länger dauern würde.
Schreibt man hingegen ein Programm, welches einmal täglich verschiedene Preise von Amazon herunterladen und analysieren soll, dann ist die Performance vermutlich eher unbedeutend; man würde eine produktive Sprache wählen, mit der man möglichst schnell das Programm schreiben kann.
Die Wahl der Sprache hängt also stark davon ab, was du erreichen möchtest.
Konkrete Empfehlungen nach Einsatzzweck
Um dir ein wenig bei der Entscheidung zu helfen, listen wir dir hier einige Einsatzzwecke und die dazu passenden Sprachen auf:
2D-Spieleentwicklung
Einfache 2D-Spiele lassen sich in nahezu jeder Sprache relativ leicht entwickeln. Letzten Endes werden lediglich Bilder auf dem Bildschirm ausgegeben. Für einfache Spiele ist z. B. Javascript im Webbrowser eine gute Option.
Möchtest du aber spezielle Features, wie eine Physiksimulation, benutzen, dann ist die Nutzung einer Game-Engine wie Unity empfehlenswert. Denn dann kannst du per Knopfdruck jedem Objekt physikalische Eigenschaften zuweisen und musst nicht die ganzen Physikberechnungen selbst programmieren.
Empfehlungen:
- einfache 2D-Spiele: Javascript im Webbrowser
- komplexe 2D-Spiele: C# mit Unity
3D-Spieleentwicklung
Ein eigenes 3D-Spiel dürfte für viele einer der großen Träume sein. Hierbei ist Folgendes zu bedenken: Die allermeisten großen Spiele werden nicht von Grund auf neu entwickelt, sondern basieren auf einer Game-Engine. Diese Game-Engine übernimmt vielfältige Aufgaben, wie das Laden von 3D-Modellen, Physikberechnung, Soundeffekte und vieles mehr.
Wenn du also eine fertige Engine verwendest, hast du mit den ganzen hardwarenahen Details quasi nichts zu tun. Du kannst dich also auf die eigentliche Spiellogik konzentrieren, also auf das, was dein Spiel ausmacht.
Wenn du jedoch mehr an den technischen Interna interessiert bist, kann es sinnvoll sein, keine fertige Engine zu benutzen, sondern das Spiel von Grund auf selbst zu entwickeln. Dies ist allerdings ein enormer Aufwand und nur zu empfehlen, wenn dich diese ganzen fundamentalen Details wirklich mehr interessieren, als die abstraktere Spiellogik.
Empfehlungen:
- 3D-Spiele mit Fokus auf die Spiellogik: C# unter Verwendung der Unity Engine
- 3D-Spiele von Grund auf entwickeln: C++ unter Verwendung der OpenGL API
Webseiten
Im einfachsten Fall ist eine Webseite eine HTML-Datei, die du in einem Texteditor erstellt und auf einen Server hochgeladen hast. Dieser Ansatz erlaubt jedoch keinerlei dynamische Funktionen, wie z. B. eine Kommentarfunktion, da die HTML-Datei selbst komplett statisch ist, also immer absolut gleich.
Um Webseiten interaktiver zu machen, ist es notwendig, auf dem Server ein Programm auszuführen, welches die HTML-Datei dynamisch erstellt, beispielsweise indem eine Datenbank nach Kommentaren abgefragt wird und diese dann in der HTML-Datei dargestellt werden.
Moderne Webseiten verfügen oftmals zusätzlich noch über Code, der nicht auf dem Server, sondern im Browser des Nutzers läuft. Dieser Code ist meist in Javascript geschrieben. Hiermit ist es dann z.B. möglich, Animationen auf der Seite anzuzeigen, oder auf die Kamera des Nutzers zuzugreifen.
Um also richtig gute Webseiten bauen zu können, musst du sowohl server- als auch clientseitige Entwicklung beherrschen. Für den Anfang ist es allerdings eher zu empfehlen, sich erstmal nur auf eine Seite zu konzentrieren und später dann den Rest zu lernen.
Empfehlungen für serverseitige Entwicklung:
Empfehlungen für clientseitige Entwicklung:
- Typescript mit React
Windows-Programme
Die Entwicklung klassischer Windows-Programme hat in den letzten Jahren an Popularität verloren, während Webseiten und Handy-Apps massiv zulegten. Trotzdem ist dies ein interessantes Feld mit vielen ausgereiften Programmierbibliotheken.
Der beste Einstieg dürfte C# unter Verwendung von Visual Studio sein. Hier bekommst du einen Editor, in dem du grafisch deine Nutzeroberfläche zusammenbauen kannst. C# ist außerdem eine relativ leicht zu erlernende Sprache, die sehr weit verbreitet ist.
Eine Alternative ist C++ mit Qt, wobei du hier mit dem Qt Designer ebenfalls grafisch deine Nutzeroberfläche bauen kannst. Allerdings ist C++ deutlich schwerer als C# zu erlernen.
Empfehlungen:
- C# mit Windows Forms (einfacher)
- C++ mit Qt (schwieriger)
Machine Learning
Im Bereich der künstlichen Intelligenz ist Python aktuell die am meisten genutzte Sprache. Viele wichtige Frameworks wie TensorFlow oder PyTorch sind primär auf Python ausgelegt.
Handy-Apps
Bei Handy-Apps gibt es grundsätzlich die offiziell von den Plattformen empfohlenen Sprachen. Das wären bei Android Java und Kotlin, und bei iOS Objective-C und Swift.
Es besteht jedoch auch die Möglichkeit, sogenannte Cross-Platform-Frameworks zu verwenden, womit du nicht direkt für ein mobiles System programmierst, sondern für mehrere zugleich. Deine App läuft also unter Android und iOS, allerdings können kleinere Anpassungen für die jeweilige Plattform erforderlich sein.
Hierbei werden dann auch andere Sprachen verwendet. Bekannte Cross-Platform-Frameworks sind React Native (verwendet Javascript), Xamarin (C#) und Flutter (Dart).
Empfehlungen:
- Android: Java oder Kotlin
- iOS: Swift
- Cross-Platform: Typescript + React Native
Handy-Games
Die Entwicklung von Handyspielen unterscheidet sich kaum von der Entwicklung von PC-Spielen. Die weiter oben genannten Empfehlungen für 2D und 3D-Entwicklung gelten also auch hier.
Schlusswort
Die Wahl der ersten Programmiersprache solltest du dir nicht zu schwer machen. Um Laufe der Zeit wirst du sowieso immer wieder neue Sprachen erlernen müssen. Und je mehr Erfahrung du hast, desto leichter fällt dies.
Also leg einfach los und wechsle die Sprache später, falls notwendig. Am wichtigsten ist, dass du langfristig am Ball bleibst. Auch wenn man am Anfang sehr langsam voran kommt, wird man nach einigen Jahren erstaunliches leisten können.