Auf der Seite The speed, size and dependability of programming languages (via) werden die Ausführungsgeschwindigkeit und Programmgröße verschiedenster Programmiersprachen für verschiedenste Programmierprobleme miteinander verglichen (Wiki: LanguageFights) und aus diesen Werten die Zuverlässigkeit einer Programmiersprache abgeleitet. (Die dafür verwendeten Daten stammen von The Computer Language Benchmarks Game.)
Mit “Zuverlässigkeit” ist im Endeffekt die Variabilität der Programmiererfahrung gemeint: Bekommt man seine Anwendungen immer ähnlich klein und ähnlich schnell – oder kann man manche Probleme mit ganz wenig Code lösen, benötigt aber unter anderen Umständen unverhältnismäßig mehr Code bzw. ist eine Lösung schnell, eine andere langsam?
Beispielsweise legt die Grafik für OCaml (die sich am Anfang dieses Artikels befindet) mit ihrer Kreisform bei geringem Durchmesser eine hohe Zuverlässigkeit nahe. GNU C++ ist ebenfalls beeindruckend: immer schnell – jedoch mit stark variierender Sourcecodegröße.
Es tritt auch sehr deutlich zutage, wenn sich die Entwicklercommunity wenig um Performance schert: Python ist – in jeder Ausprägung – sehr langsam, aber der Code ist auch immer sehr klein.
Ein interessanter Fakt auf den im Artikel hingewiesen wird: Die Einführung funktionaler Funktionalitäten in eine Sprache ist nicht gleichbedeutend mit Geschwindigkeitseinbußen. Die Reife einer Sprachimplementierung entscheidet an erster Stelle über Laufzeitverhalten.
Einige Kuriosa: Java ist sehr schnell – fast so schnell wie C++ (im Bereich von “Faktor 3″) und schneller als C# (Mono). Die C++-Lösungen sind alle schneller als die in C geschriebenen.
Ein mir wichtiger Punkt ist festzuhalten, dass es eher leicht ist schnell zu sein, dass es aber schwierig zu sein scheint, die Codegröße klein zu halten. D.h. man kann durchaus schnellen Code produzieren, muss dazu aber unter Umständen durch einige Reifen springen. Das bedeutet für mich auch: ich bin auf der Suche nach einer Programmiersprache, die knackigen Code ermöglicht – die Geschwindigkeit wird mit der Zeit (und der Reife der Implementierung) kommen…
Der Artikel ist übrigens nicht nur interessant und aufschlussreich, sondern ist auch ein sehr schönes Beispiel von gutem Informationsdesign (Edward Tufte ist empfohlen).
Nachdem der Artikel erschienen war und ein reges Interesse an dieser Art von Auswertungen bekundet wurde, haben sich die Macher von The Computer Language Benchmarks Game entschieden selbst – und aktueller – diese grafischen Auswertungen anzubieten: Beispielsweise für die Benchmarks unter x64 Ubuntu : Intel® Q6600® quad-core (oder: dieselbe Maschine mit nur einem aktiven Kern).
Post a Comment