Murks des Tages: Programmiersprachenrankings

Immer wieder werden Rankings erstellt, in denen Programmiersprachen miteinander verglichen werden.

Problem der Vergleichbarkeit – Von Äpfeln und Birnen

Es gibt z. B. Programmiersprachen, die mehr fürs Web (JS, PHP, .NET (ASP.NET)) bzw. für Clientprogramme (.NET, Java) oder für ganz andere Zwecke (z. B. R für Statistiken) gedacht sind. Jedoch werden in Rankings alle diese Sprachen in einen Topf geworfen und miteinander verglichen. Woran die Sprachen verglichen werden? An ihrer Quantität. Dazu später mehr. Ein ganz extremes Beispiel: Im gleichen Ranking werden indirekt C, C++ und Tex miteinander verglichen. Man vergleicht (objektorientierte) Programmiersprachen mit einem Textsatzsystem. Muss man noch mehr dazu sagen? Welche Aussagekraft hat dieser Vergleich? ### Problem der unterschiedlichen Projektziele

Nun gehe ich mal davon aus, in einem Ranking werden nur Programmiersprachen miteinander verglichen, die eine ähnliche Zielsetzung aufweisen. Z. B. JavaScript via Node.js, PHP und ASP.NET (.NET).

Die Wahl einer Programmiersprache für ein Projekt hat mehrere Gründe. Das kann sowohl die Zielinfrastruktur, vorhandene Kenntnisse der Entwickler oder auch Budgetfrage sein. Ein Beispiel: Eine Firma X hat ihre gesamte Infrastruktur auf Windows Server laufen. Die Wahrscheinlichkeit, dass die Firma bereits mit .NET (ASP.NET) gearbeitet hat, ist durchaus möglich. Will die Firma jetzt eine Webanwendung entwickeln, so könnte es durchaus möglich sein, dass die Firma sich für .NET entscheidet. Hätte die Firma weniger auf Windows gesetzt und stattdessen Linux im Einsatz, so wäre die Wahl wohl kaum auf .NET basierte Lösungen gefallen. Eine kleine Veränderung an den Parametern, so fällt die Wahl höchstwahrscheinlich ganz anders aus als zuvor. > Und bevor jetzt einer meckert: ASP.NET vNext bzw. der .NET Core, der ja auch auf Linux läuft habe ich für das Beispiel jetzt nicht beachtet. Gehen wir für das Beispiel einfach von der Situation vor ca. 1 Jahr aus.

Quantität vor Qualität

Bei öffentlich verfügbaren Datenquellen wird z. T. auch die Aktivität der Repositories ausgewertet. Bin ich an einem Projekt besonders aktiv, nur weil mir die Programmiersprache besonders gefällt? Nein. Ich arbeitet dran, weil mir das Projekt gefällt. Die Programmiersprache ist dabei, wenn überhaupt, sekundär. In einem Großteil der Rankings wird jedoch primär ausgewertet, wie viele Projekte mit der Programmiersprache X entwickelt werden. Viele Projekte teilen sich in mehrere Unterprojekte auf, wodurch hier die Frage zu stellen ist, wie gezählt wird. Zählt man einfach nur die Anzahl der Projekte (Repositories) mit der Sprache X, so wird auch nur ein Projekt, dass sich in Unterprojekte splittet, das Ergebnis verfälschen, sofern die Unterprojekte in der gleichen Sprache entwickelt werden. ### tl;dr

Die Aussagekraft von Programmiersprachenrankings ist mit einem Fragezeichen zu versehen. Nicht zuletzt wegen: – Programmiersprachen mit unterschiedlichen Zielsetzungen werden indirekt miteinander verglichen (z. B. C, C++ vs Tex)

  • Vergleich häufig nur in der Quantität
  • Problem der Zählweisen (Unterprojekte)
  • Wahl der Programmiersprache von diversen Umgebungsparametern abhängig (Budget, vorhandene Kenntnisse, Systemumgebung)

    Die einzige Aussagekraft eines solchen Rankings ist die quantitative Verteilung der Programmiersprachen. Aber sollte man eine Programmiersprache nur daran bewerten, wie häufig sie genutzt wird?