Programmiersprachen für Ein-, Um- und Wiedereinsteiger

Programmiersprachen für Ein-, Um- und Wiedereinsteiger

Praxis & Tipps | Praxis

Bild: Andreas Martini

Unser Überblick zeigt, worauf es bei der Auswahl von Programmiersprachen ankommt und welche Sprachen einen Blick wert sein könnten.

Programmieren können ist großartig! Mit den eigenen Händen auf der Tastatur erschafft man nützliche Werkzeuge, beeindruckende Spielwelten oder lässt den Computer komplizierte Probleme lösen. Doch so schön es ist, Programmieren zu können, so mühsam ist es für Neulinge, es zu lernen.

Programmiersprachen sind leider immer ein Kompromiss – eine Übersetzungsschicht zwischen einer Sprache, die wir Menschen schreiben und verstehen können, und einer Sprache, mit der ein Prozessor klarkommt. Jede Programmiersprache geht ein wenig anders an diese Übersetzungsaufgabe heran.

Wer bereit ist, als absoluter Neuling mit dem Programmieren zu beginnen, wird auf der Suche nach einer geeigneten Programmiersprache von starken Meinungen erschlagen: „Fang unbedingt mit einer objektorientierten Sprache an“, raten die einen. „Nimm unbedingt eine stark typisierte Sprache“, sagen viele. Wieder andere haben konkrete Empfehlungen, welches die einzig wahre Sprache sei, die man lernen sollte – und welche auf keinen Fall.

Die Debatten werden in Büros und in Foren oft mit einem fast schon religiösen Eifer geführt, viele wollen ihre Sprache gern gegen jegliche Kritik verteidigen. Für Einsteiger sind diese Debatten aber überhaupt nicht hilfreich: Sie müssen befürchten, mit der Entscheidung für eine Programmiersprache eine fatale Entscheidung gegen eine andere, vielleicht viel bessere Sprache zu treffen. Ihnen sei gesagt, dass die erste Sprache ziemlich sicher nicht die letzte sein wird, die sie lernen. Wer sich nach den ersten Erfahrungen langfristig fürs Programmieren begeistern kann, wird irgendwann auch eine weitere Sprache ausprobieren und diese vergleichsweise zügig erlernen können. Nehmen Sie sich in der ersten Sprache die Zeit, ein paar Grundkonzepte wie Datentypen, Variablen und Klassen systematisch zu verinnerlichen – dann macht der Umstieg später mehr Spaß. Vieles wird Ihnen in anderen Sprachen ­erstaunlich vertraut vorkommen.

Bei der Wahl einer Program­mier­sprache sollte man sich nicht nur an einem Index orientieren.

Die oben aufgeführten Artikel sind entstanden, um Ihnen einen Wegweiser durch die Landschaft der Programmiersprachen zu liefern. Statt ideologische Diskussionen zu führen, charakterisieren wir knapp und so objektiv wie möglich viele unterschiedliche Programmiersprachen – inklusive einem kleinen Einblick in die Syntax der Sprache und einer Einordnung, für wen wir die Sprache empfehlen würden. Die Autoren haben alle bereits viel Zeit mit der Sprache verbracht, über die sie schreiben. Sie haben über sie geflucht, sind an ihr verzweifelt und haben sie irgendwann zu schätzen gelernt. Aus eigener Erfahrung kennen sie viele der Stärken und Schwächen und haben grammatikalische Veränderungen oft selbst miterlebt.

Diese Artikel richten sich aber ausdrücklich nicht nur an Einsteiger, die noch nie mit dem Programmieren in Berührung gekommen sind. Die Steckbriefe sollen auch erfahrene Entwickler und solche, die vor Jahren oder Jahrzehnten zuletzt vor einem Code-Editor saßen, dazu inspirieren, ihre bisherige Meinung über ihnen fremde Sprachen zu überdenken. Vielleicht entdecken Sie ja eine, die eines Ihrer Probleme ganz anders und viel effizienter lösen kann als Ihre Programmier-Muttersprache.

Auch ein Blick auf Artikel zu Sprachen, um die Sie bisher einen großen Bogen gemacht haben, kann sich lohnen – Programmiersprachen sind im steten Wandel und Ihre Überzeugungen von vor 15 Jahren sind meist nicht mehr aktuell.

Auf der Suche nach der „richtigen“ Sprache werfen viele einen Blick auf Rankings und Indizes. Bekanntester und häufig zitierter Vertreter ist der TIOBE-Index, der stumpf die Anzahl der Treffer für die Suchanfrage „<Name der Sprache> language“ in gängigen und weniger gängigen Suchmaschinen berücksichtigt. Dieser Index kann aber keine Auskunft darüber geben, wie beliebt, effizient oder nützlich eine Sprache ist – er sagt vor allem, wie viel schon darüber im Internet geschrieben wurde. Da ist es logisch, dass auf den Spitzenplätzen meist C und Java landen. Beide sind schon lange im Geschäft und immer noch aktiv im Einsatz.

Auch der PYPL-Index (PopularitY of Programming Language), der dem Namen nach die Popularität messen soll, misst in Wirklichkeit etwas anderes: Auch er nutzt Daten von Suchmaschinen, aber nicht die Anzahl der Treffer, sondern die Anzahl von Suchanfragen nach Tutorials, und basiert auf Google Trends. Je mehr Nutzer nach „<Name der Sprache> tutorial“ bei Google suchen, desto „beliebter“ wird die Sprache nach der Logik von PYPL. So landet dort aktuell Python auf Platz 1, C samt C++ nur auf Platz 6. Auch gegen dieses Ranking spricht eine Menge. Ist eine Sprache wirklich gut oder beliebt, weil viele Hilfesuchende bei Google nach Rat suchen, oder ist das vielleicht sogar ein Nachteil?

Programmieren ist weder sportlicher Wettkampf noch Religion, sondern ein Handwerk, und die Programmier­sprache ein Werkzeug.

All diese Rankings mögen ein nettes Gesprächsthema für die Kaffeeküche von Entwicklerbüros sein (als Alternative zu den Bundesliga-Ergebnissen vom Wochenende). Niemand sollte sich jedoch davon leiten lassen, wenn es um die Wahl einer Programmiersprache geht. Was man in diesen Rankings höchstens ablesen kann, sind auffällige Veränderungen über die Zeit – wenn eine Sprache plötzlich verstärkt in Suchmaschinen auftaucht, kann das darauf hindeuten, dass die Nutzerschaft gewachsen ist. Aber auch TIOBE musste schon 2004 zugeben, dass es da Verzerrungseffekte geben kann und ein plötzlicher Abstieg von Java schlicht durch eine Änderung im Google-Algorithmus zu klären war.

Beim Einsatz der Indizes gilt daher: Programmieren ist weder sportlicher Wettkampf noch Religion, sondern ein Handwerk. Die Programmiersprache ist das Werkzeug des Entwicklers zum Lösen von Problemen. Und ein Werkzeug muss nicht das meist-gegoogelte sein, sondern vor allem passen: zum Problem und auch zum Entwickler.

Bei der Entscheidungsfindung hilft es, sich darüber klar zu werden, welche Art von Projekten man mit der Sprache angehen will. Meist haben Sie ein konkretes Ziel im Kopf, wenn Sie beginnen. Das ist auch gut so – Einsteiger mit der vagen Idee, Programmieren zu lernen, nur um Programmieren zu können (zum Beispiel, weil das auf dem Arbeitsmarkt angeblich wichtig ist), steigen meist schnell frustriert aus.

Am besten gehen Sie mit einem konkreten Ziel an das Thema heran. Dann hält die Motivation, am Ball zu bleiben, deutlich länger. Das Ziel sollte so gewählt sein, dass Sie es mit dem aktuellen Wissen noch nicht erreichen können, nur so können Sie ja Neues lernen. Gleichzeitig darf es nicht utopisch sein – die Idee, einen Ersatz für den Linux-Kernel zu schreiben, wird scheitern.

Ein Terminplaner für die Familie kann ein gutes Projekt sein, vielleicht eine App, mit der man den Bestand des Vorratsschranks zu Hause überwachen kann, oder eine datenbankgestützte Verwaltung der Kaffeekasse im Büro. Je mehr potenzielle Nutzer Ihr erstes Projekt hat, desto besser ist das für die Motivation.

Wenn Sie Ihr erstes Projekt vor Augen haben, können Sie die Wahl der ersten Programmiersprache schon eingrenzen. Soll die Anwendung im Browser laufen? Planen Sie eine grafische Desktop- oder eine Kommandozeilen-Anwendung? Für Windows, Linux, macOS, iOS oder Android? Keine Programmiersprache ist für jede dieser Ideen gleichzeitig die perfekte Wahl und vieles fällt schnell durch das Raster.

Gerade Informatiker mit akademischer Ausbildung neigen dazu, eine Sprache vor allem nach ihren sprachlichen Kons­trukten zu bewerten. Wie gut ist das Vererbungskonzept, wie sauber wird mit Datentypen und Ausnahmen umgegangen und welche Kunststücke beherrscht der Compiler? Für Einsteiger sind solche Fragen dagegen eher unerheblich. Für sie steht eine verständliche Syntax im Vordergrund – in der Lernphase tippt man lieber drei Zeilen mehr Code als eine raffinierte Abkürzung, die man nicht mehr intuitiv lesen kann.

Eine Programmiersprache ist ohnehin mehr als die Summe ihrer sprachlichen Raffinessen und bemerkenswerten Compilertricks. Zu einer Sprache gehört auch eine Community, die Bibliotheken für Standardprobleme entwickelt und bei Fragen in Foren oder auf Stackoverflow.com weiterhilft. Auch die Community muss zu Ihrem Problem passen. In der PHP-Community findet man beispielsweise Hilfe zu fast allen erdenklichen Problemen rund um Webentwicklung, während zur Python-Community viele Spezialisten für KI oder Datenanalyse gehören.

Eine Programmiersprache und ihre Community müssen nicht nur zum Projekt, sondern auch zum Programmierer (oder Einsteiger) kompatibel sein. Nicht jeder geht zum Beispiel mit einem mathematischen Hintergrund an das Lernen einer Programmiersprache heran und das ist auch nicht nötig.

Wer Programmieren lernen will, um eine Notizanwendung für Android zu schreiben oder mit einem geisteswissenschaftlichen Hintergrund Textanalyse betreiben will, bricht eine Einführung in eine Programmiersprache vielleicht schnell ab, wenn in einem der ersten Beispiele Matrizen multipliziert werden – dem Autor der Einführung kam das dagegen wie ein einfaches und plausibles Beispiel vor. Schließlich ist das ja Grundstoff der naturwissenschaftlichen Disziplinen. Manchmal hilft es, einfach die Einstiegslektüre zu wechseln, bevor man eine Sprache gleich aufgibt.

Richtige und falsche, gute und schlechte Programmiersprachen gibt es also nicht. Daher haben wir uns bei der Auswahl nicht nur an Indizes orientiert, sondern Sprachen ausgewählt, die wir für relevant, lernwürdig und nützlich halten – für bestimmte Aufgaben und bestimmte Entwicklertypen. Das Spektrum der Sprachen ist dabei recht groß.

Viele der Sprachen haben eine große Nutzercommunity (C, Java, Python, PHP, JavaScript) oder sind beliebte Lehrsprachen in den Universitäten (Java und Python). Andere sind trotz kleiner Nutzergemeinde in der Auswahl gelandet, weil sie ein Teilproblem der Software-Entwicklung auf eine interessante Weise lösen – Haskell, Go und R.

Auch mit dabei sind Sprachen, die neue Wege gehen oder gerade dabei sind, vermeintlich alternativlose Sprachen zu verdrängen. So haben es etwa Kotlin, das im Android-Umfeld die Omnipräsenz von Java beendet hat, oder Scala, das als Java-Ersatz für Unternehmensanwendungen antritt, in diese Auswahl geschafft.

Die kurzen Charakterisierungen liefern neben Orientierung auch Anregungen, sich auf eine neue Welt einzulassen. Keine der vorgestellten Sprachen kostet für den Einstieg Geld – die Hürde zum Ausprobieren ist oft niedrig. Meist reicht schon ein einfacher Editor, um die ersten Zeilen Code zu schreiben.

Bei allem Bemühen, einen objektiven Überblick über lernenswerte Programmiersprachen zu liefern, wird nicht jeder mit unserer Darstellung zufrieden sein – jede Auswahl ist unvollständig und möglicherweise vermissen Sie eine Sprache, die Ihnen viele gute Dienste erwiesen hat. Vielleicht kommt eine Sprache aus Ihrer Sicht auch zu gut oder zu schlecht weg. Nutzen Sie gern das Forum zu diesem Artikel für eine sachliche Diskussion. Aber vergessen Sie dabei nicht: Es geht um Programmiersprachen, nicht um Religion oder Sport. Nutzen Sie die Zeit lieber, eine neue Sprache zu lernen, als über sie im Forum zu schimpfen. (jam)


Dieser Artikel stammt aus c't 13/2020.

Kommentare

Kommentare lesen (332 Beiträge)