Rankings zu Programmiersprachen und Plattformen

von Hubert Schmid vom 2013-04-14

Das Problem mit Rankings zu Programmiersprachen und technischen Plattformen ist, dass Verbreitung und Beliebtheit sehr spezifisch für unterschiedliche Einsatzbereiche sind – sei es nun zwischen Frontend- und Backend-Entwicklung, zwischen entlohnten und nicht entlohnten Projekten oder zwischen den unterschiedlichen Branchen. Besonders gut sichtbar werden solche Differenzen beim Vergleich bekannter Rankings wie TIOBE und RedMonk.

Auch das folgende Ranking ist nicht repräsentativ. Dennoch finde ich es interessant, da es eine ganz andere Reihenfolge als seine bekannten Vertreter aufweist. Die Daten basieren auf den Tags, die von den 177 Mentoren-Organisationen für Googles Summer-of-Code 2013 vergeben wurden. In der folgenden Aufstellung gebe ich lediglich an, wie viele Organisationen das entsprechende Tag angegeben haben, und verzichte bewusst auf eine Umrechnung in Prozentwerte, da der Grundwert nicht signifikant ist.

Programmiersprachen

Fast alle Organisationen haben Tags zu Programmiersprachen angegeben. Unter den Top 5 findet man die üblichen Vertreter – doch die Reihenfolge ist etwas ungewohnt. Ganz oben steht nämlich Python dicht gefolgt von C++. Die Programmiersprache Java, die in vielen Rankings weit oben wiederfindet, folgt dagegen erst mit deutlich sichtbarem Abstand.

Weit abgeschlagen folgen in der Liste noch die Programmiersprachen PHP, Ruby, Perl, Scala, C# und schließlich Objective-C. Die Windows-Programmiersprachen haben erwartungsgemäß bei Googles Summer-of-Code keinen guten Stand. Abgesehen davon sind die hinteren Ränge wenig überraschend – wobei man allerdings schon den Eindruck gewinnen kann, dass der Hype um PHP und Ruby deutlich nachlässt, und die beiden Sprachen an Akzeptanz verlieren.

Plattformen

Bei den technischen Plattformen ist das Feld überschaubar. Dominiert wird es von der Web-Plattformen, die 42 Organisationen angegeben haben. Mit großem Abstand folgen dicht aufeinander auf den Rängen die Android-Plattform für mobile Geräte sowie Linux für die Realisierung von Leistungen.

Weit abgeschlagen tauchen noch iOS, BSD und Windows auf. Das ist ein weiteres Indiz dafür, dass sich die Realisierung von Funktionalität auch weiterhin auf Web-Plattformen verlagert. Apples iOS wird anscheinend zur Nische, denn alle Organisationen mit iOS haben auch Android angegeben. Der schlechte Rang von Windows ist sicherlich in erster Linie auf die Zielgruppe von Googles Summer-of-Code zurückzuführen, wobei man aber schon gespannt sein darf, ob es Microsoft mit Windows gelingen wird, auch abseits des Desktops Fuß zu fassen.

Python

Nicht ohne Grund wurde Python so häufig von den Mentoren-Organisationen angegeben. Gerade unter Linux-Entwicklern ist diese Programmiersprache aufgrund der umfangreichen Bibliothek und der gelungenen Balance zwischen Funktionalität und Komplexität äußerst beliebt. Damit eignet sie sich sowohl für kleine Aufgaben zur Automatisierung und Auswertung als auch für große Anwendungen wie Trac und Dropbox. Als Beispiel verwende ich das Python-Skript, mit dem ich die häufigsten Tags aus der CSV-Datei zu Googles Summer-of-Code bestimmt habe.

#! /usr/bin/env python3 import collections, csv, re, sys alternatives = { 'css': ('web', ), 'html': ('web', ), 'html5': ('web', ), 'jquery': ('web', ), 'js': ('javascript', ), 'rails': ('ruby', 'web', ), } reader = csv.reader(sys.stdin) column = next(reader).index('Tags') counter = collections.Counter() for values in reader: tags = set(re.findall(r'[\w.+]+', values[column].lower())) tags.update(*(alternatives.get(tag, ()) for tag in tags)) counter += collections.Counter(tags) for tag, count in counter.most_common(100): print('{:3d} {!r}'.format(count, tag))

Fazit

Wie bereits erwähnt: Diese beiden Rankings sind wie viele andere nicht repräsentativ. Sie verdeutlichen vielmehr, dass Verbreitung und Beliebtheit sehr Zielgruppen-spezifisch sind. So fällt beispielsweise auf, dass in diesem Umfeld Microsoft-Technologien kaum vertreten sind, Java als Programmiersprache eine untergeordnete Rolle spielt und ein Schwerpunkt auf Web- und mobilen Anwendungen liegt. Umgekehrt kann man sagen: Zu fast jeder Technologie gibt es ein passendes Umfeld, und man sollte sich nicht zu sehr von allgemeinen Trends leiten lassen, wenn sie nicht in das eigene Umfeld passen.