Bestandsaufnahme

Programmierer können sich heute zwischen mehr Programmiersprachen denn je entscheiden. Im praktischen Einsatz ist jedoch eine Konsolidierung zu beobachten. Im Zuge des Web-2.0-Hypes legen „Web“-Sprachen zu.

In Pocket speichern vorlesen Druckansicht 38 Kommentare lesen
Lesezeit: 12 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Im Jahr 2003 orakelte die Gartner Group, dass ab 2004 zwei Programmierplattformen 90 % des Weltmarktes an neuen Programmierprojekten unter sich aufteilen würden: Suns Java und Microsofts .Net. „Zur Mitte des Jahrzehnts werden Microsoft Dotnet und Java den Markt der Entwicklungsplattformen zu ungefähr gleichen Teilen dominieren“, meldete dazu die Computerzeitung im selben Jahr [1]. Mit Web 2.0 rechnete damals noch niemand.

Darüber, dass Gartner hier genau genommen Äpfel mit Birnen vergleicht, sei einmal großzügig hinweggesehen: Das Pendant zur Programmier- und Laufzeitumgebung .Net wäre JSE beziehungsweise JEE, die Entsprechung zu Java in der Microsoft-Welt in der Regel C#. Auch im Folgenden wird Java in dieser „Doppeldeutigkeit“ verwendet - es sollte aber aus dem jeweiligen Kontext hervorgehen, ob die Sprache oder die Programmierplattform gemeint ist.

Abseits der ewigen fundamentalistischen Auseinandersetzungen hat sich bei vielen Evaluationen in Unternehmen gezeigt, wie ähnlich Java und .Net sind. Beide Sprachen verfolgen einen universellen Ansatz, weil sie von Handy bis zum Server einsetzbar sind. Ihr Zwischensprachkonzept verhindert jedoch, dass sie auch noch in die fortwährende C/C++-Bastion der Treiberprogrammierung vorstoßen können. .Net hat sicherlich noch Schwächen beim Datenzugriff, kann aber auf dem Webserver Punkte gegenüber Java gutmachen. Doch da Sun und Microsoft kontinuierlich voneinander „abschreiben“, ist das nur eine Frage der Zeit.

Mehr Infos

Dabei waren .Net und Java trotz syntaktischer und architektonischer Ähnlichkeit aus zwei ganz verschiedenen Ecken angetreten: Java als eine Sprache für alle Plattformen und .Net als Plattform für alle Sprachen. Doch auch diese Trennung verschwimmt zusehends: Inzwischen bewegt sich .Net dank Novells Mono-Projekt mit aufrechtem Gang in der Pinguin-Welt, besonders seit mit Mono 1.2 nicht nur Webanwendungen, sondern auch Desktop-Oberflächen portierbar wurden. Und für Java gibt es inzwischen andere Programmiersprachen, die Java-Bytecode erzeugen können, zum Beispiel Ruby, Groovy, Ada, Basic, Tcl, C, Cobol, Prolog, Eiffel [4]. Unabhängig von der konkreten Sprachsyntax setzt sich das Konzept einer Zwischensprache (Java Bytecode bzw. Common Intermediate Language bei .Net) durch.

Für .Net existieren fünf Jahre nach dessen Erscheinen mehr als 45 verschiedene Programmiersprachen. Neben dem neuen, inzwischen bei der ISO standardisiertem C# und dem aufgebesserten Visual Basic findet man eine Variante von C++, „alte Tanten“ wie Fortran, Forth, Cobol, Eiffel und Smalltalk sowie Exoten wie Prolog, Lisp/Scheme und Haskell - nicht zu vergessen, dass man in der Syntax von Java, PHP oder Python .Net-Anwendungen erstellen kann. Trotz aller Sprachoptionen begegnet man in der Praxis eigentlich nur zwei .Net-Sprachen: C# und Visual Basic. Zu Migrationszwecken (für den Entwickler) und aus Imagegründen (für Microsoft) ist die Mehrsprachigkeit aber sicher gut.

Die aktuelle Version Visual Basic 8.0 ist zwar dem rein objektorientierten C# in fast allen Bereichen ebenbürtig (bis auf die fragwürdige Zeigerprogrammierung), doch Visual Basic leidet immer noch unter dem „GOTO-Ruf“ vergangener Tage. Nicht gerade zum Image der Sprache trägt zudem eine Gruppe „Ewiggestriger“ bei, die sich nicht damit abfinden wollten, dass Microsoft im März 2005 den Support für den Vorgänger Visual Basic 6.0 (VB6) eingestellt hat. Auf einer Website [5] fordern sie die Weiterentwicklung der alten, nicht .Net-basierten und nur halbherzig-objektorientierten Sprache unter dem Titel „VB.COM“. Das Aufbegehren ist aber in den letzten zwei Jahren deutlich leiser geworden, zumal ein Entgegenkommen von Microsoft hier nicht realistisch ist.

Nicht nur VB6-Entwickler, sondern auch die Nutzer von Gupta und Delphi migrieren in Scharen auf andere Sprachen, denn in beiden Fällen erwecken die Hersteller nicht mehr viel Vertrauen unter ihren einstigen Anhängern. Borland hat für die letzten Delphi-Versionen viel Schelte unter den Nutzern geerntet. Zu weiterem Misstrauen führte die im November 2006 erfolgte Ausgliederung von Delphi in die Firma CodeGear. Delphi-Entwickler tendieren stark zur Migration auf C# - vielleicht deswegen, weil Delphi und C# mit Anders Hejlsberg [6] den gleichen Vater haben. Migrationstendenzen haben darüber hinaus Nutzer von PowerBuilder und Visual Objects. Microsoft siebt bei den Randgruppen aus: Im März diesen Jahres kündigten die Redmonder an, dass sie die Weiterentwicklung von Visual Foxpro (VFP) der „Community“ überlassen [7].

Neben dem Verfall früherer Stars zeigen sich aber neue Sternchen am Himmel, allen voran die Programmiersprachen Python und Ruby (Ruby insbesondere durch die Webentwicklungsplattform Ruby on Rails). Beide wurden zwar schon vor mehr als 10 Jahren erfunden, erleben aber erst in den letzten Jahren einen großen Boom. Zuletzt überraschte der Softwareriese aus Redmond mit der Veröffentlichung eines eigenen, quelloffenen Python-Compilers (IronPython), der wie die meisten anderen Python-Implementierungen interaktiv mit direkter Ergebnisansicht verwendet werden kann. Entwicklungen wie die Windows PowerShell [2] und die für kommende Versionen von C# und Visual Basic angekündigten Spracherweiterungen [3] zeigen, dass dynamische Typisierung im Trend liegt. Python, Ruby, C# 3.0 und Visual Basic 9.0 sind gleichzeitig Multi-Paradigmen-Sprachen, die neben dem prozeduralen und objektorientiertem Programmieren Konstrukte des funktionalen Programmierens enthalten (zum Beispiel Lamdba Expressions).

Der Buchverlag O’Reilly wertet halbjährlich die von der Firma Nielsen erhobenen Buchverkäufe im US-Markt aus und stellt diese der Öffentlichkeit zur Verfügung [8]. Für den Teilbereich der Programmiersprachen zeigen die Auswertungsergebnisses des letzten Jahres folgende Trends:

  • Auf den ersten Blick ist Java weiterhin die meistverkaufte Programmiersprache in Büchern. Wenn man allerdings zu dem Marktanteil der Programmiersprache C# diejenigen Bücher hinzurechnet, die gleichzeitig sowohl VB.Net als auch C# behandeln (in der Abbildung als „.Net Languages“ bezeichnet), liegt C# vorne.
  • Die Abverkäufe von Java-Büchern sinken derzeit um 13 % jährlich. Verluste verzeichnet man zudem bei C/C++, (Visual) Basic und Perl.
  • Außerordentliche Zuwächse gab es bei Javascript (49 % im 4. Quartal 2006 im Vergleich zum Vorjahr) im Zuge des Web-2.0-Hypes sowie Python (37 %), Ruby (53 %), T-SQL (157 %) und - wie erwähnt - bei C# (14 % + 20 %).

Der O’Reilly-Programmiersprachenindex, Stand 4. Quartal 2006

Einen interessanten Vergleich anhand von Google-Daten findet man bei David N. Welton [9]. Er hat dabei für eine Auswahl von Programmiersprachen nicht nur die Anzahl der Treffer verglichen, sondern darüber hinaus ermittelt, wie viele Werbetreibende bereit sind, für ihre Auffindbarkeit über die Programmiersprachen zu zahlen. Bei der Anzahl der Treffer stehen Unix-Programmierung, PHP, Java, Windows-Programmierung und C auf den ersten fünf Rängen. Aus der Auswertung der Anzeigenaufwendungen könnte man schließen, dass sich derzeit mit C# bei Weitem das meiste Geld verdienen lässt. Abgeschlagen folgen C, C++ und PHP. Bei den Stellenanzeigen, die ebenfalls enthalten sind, führt SQL, gefolgt von C, Java, Unix und PHP.

Ein bekannter Maßstab für die Popularität von Programmiersprachen ist der TIOBE Programming Community Index [10], der monatlich aus Suchmaschinenergebnissen berechnet wird. Die Trefferanzahl ist natürlich kein Indikator für die tatsächliche Nutzungshäufigkeit. Dies verdeutlicht ein Wikipedia-Eintrag zur Position von .Net im Jahre 2004: „Obwohl technisch schon einige Jahre alt, steht der Marktanteil an .Net-Programmen immer noch in keinem Verhältnis zur Aufmerksamkeit in Medien und Entwicklergemeinde“ [11].

Ein aktueller Kandidat für eine derartige Überbewertung ist sicherlich auch die Programmiersprache „D“ (s. „To D or not to D“ auf Seite 68 in dieser Ausgabe), die im TIOBE Index im April 2007 bereits auf Platz 14 erscheint (s. Tabelle „TIOBE Programming Community Index“). Vielleicht liegt hier aber ein Auswertungsproblem vor, da zum Thema „D“ sicherlich etliche nicht-relevante Treffer erscheinen.

TIOBE - Programming Community Index
Position Position Delta Programmiersprache Ratings Delta
April 2007 April 2006 April 2007 April 2006
1 1 0 Java 18,360 % -2,92 %
2 2 0 C 14,937 % -2,75 %
3 3 0 C++ 10,718 % -0,18 %
4 4 0 PHP 8,639 % -2,24 %
5 5 0 (Visual) Basic 8,280 % -1,83 %
6 6 0 Perl 6,039 % 0,19 %
7 8 1 Python 3,814 % 1,05 %
8 7 -1 C# 3,551 % -0,40 %
9 9 0 JavaScript 3,137 % 1,57 %
10 17 7 Ruby 2,798 % 2,31 %
11 10 -1 Delphi 2,334 % 0,89 %
12 11 -1 SAS 2,201 % 0,77 %
13 12 -1 PL/SQL 1,892 % 0,88 %
14 19 5 D 1,515 % 1,03 %
15 25 10 ABAP 1,172 % 0,84 %
16 18 2 Ada 0,678 % 0,19 %
17 14 -3 Lisp/Scheme 0,676 % -0,05 %
18 16 -2 COBOL 0,651 % 0,13 %
19 26 7 Transact-SQL 0,622 % 0,30 %
20 20 0 Fortran 0,613 % 0,15 %

Könnte man die Marktzahlen nach Plattformen differenzieren, sähe man sicherlich deutliche Unterschiede zwischen Windows- und der Unix-/Linux-Welt. .Net/C# spielen - trotz Mono - bisher kaum eine Rolle bei der Entwicklung auf Nicht-Windows-Plattformen. Stattdessen sind hier Open-Source-Sprachen wie PHP, Perl, Ruby und Python viel stärker vertreten. PHP findet man auch häufiger auf Windows-Rechnern, wo zahlreiche Webprogrammierer Skripte entwickeln, die dann auf einem Linux-System beim Provider ausgeführt werden. Microsofts ASP.Net (vergleichbar mit dem Java-Web-Plattformen JSP, Servlets und JSF) muss hart um Marktanteile kämpfen, denn der Redmonder Webserver IIS ist bei den Hostern wenig verbreitet.

Nicht vergessen bei allen diesen Überlegungen und Statistiken darf man, dass sich die Aussagen im Wesentlichen auf neu produzierten Programmcode beziehen. Cobol, CICS und Co. haben weiterhin einen signifikanten Marktanteil bei den existierenden Anwendungen, die zurzeit und in unabsehbarer Zukunft noch zu pflegen sind. Heute entwickelt die IT darin prozentual gesehen aber nicht mehr so viele neue Anwendungen wie einst. Außerdem war in den Hochphasen dieser Sprachen das WWW noch nicht existent, sodass es zu diesen älteren Sprachen vergleichsweise wenig Webressourcen gibt.

Schaut man auf die deutschen Universitäten, scheint Java in den Vorlesungssälen klar zu dominieren. Die früheren Platzhirsche (Turbo) Pascal und Modula2 sind nur noch selten zu finden. Häufiger noch trifft man auf C++-Veranstaltungen. C# spielt bisher eine wesentlich geringere Rolle, auch wenn Microsoft sich über die MSDN Academic Alliance (MSDNAA) redlich bemüht, den Universitäten die eigene Produktpalette schmackhaft zu machen. Für einen Jahresbeitrag von rund 1000 Euro können Informatik-Fachbereiche eine Lizenz bei Microsoft erwerben, mit der nicht nur die Mitarbeiter des Fachbereichs und die Labore ausgestattet werden können, sondern auch alle Studierenden des Fachbereichs die Software mit nach Hause nehmen dürfen. Zu dem Angebot gehören sowohl die Entwicklungsumgebung Visual Studio, als auch das Betriebssystem und diverse Server-Produkte.

Dass ein Informatikstudium heute nicht mehr mit „Hello World“ beginnen muss, zeigt Bertrand Meier mit seinem „Inverted Curriculum“ [12]. Um die Studierenden von Anfang an an Wiederverwendung durch Softwarekomponenten heranzuführen, startet das erste Semester an der ETH Zürich mit einem Kurs, in dem die Studierenden vordefinierte Softwarekomponenten zu Anwendungen zusammensetzen und damit schnell zu Ergebnissen kommen sollen, die anderenorts erst im Hauptstudium erzielbar sind. Erst im Nachgang erhalten sie einen Einblick in die Innereien der Komponenten, die - wie könnte es bei Bertrand Meier anders sein - natürlich mit „seiner“ Sprache Eiffel entwickelt wurden.

An den Hochschulen kommen inzwischen immer mehr Erstsemester an, die in der Schule nicht nur LOGO, sondern auch C++ oder Java kennengelernt haben. Die Gesellschaft für Informatik plädiert für die Einführung von Informatik als Pflichtfach [13]. Dies gibt es bisher nur in Bayern, Mecklenburg-Vorpommern und Sachen. Schwierig scheint aber die Entscheidung, welche Programmierparadigmen man in der Schule vermitteln sollte [14].

Wenn man in vielen Softwareentwicklungs-Abteilungen herumkommt, bemerkt man eine zunehmende Stimmung gegen „Experimente“. Die Verantwortlichen fühlen sich wohler, wenn sie auf Programmiersprachen setzen, von denen sie annehmen können, dass es zum einen eine gute Werkzeugunterstützung dafür gibt, und zum anderen, dass es diese Sprache auch in 10 Jahren noch geben wird. Dies führt langfristig zu einer Konzentration auf wenige Sprachen. Andererseits könnten sich Sprachen wie Python und Ruby in Nischen behaupten, weil sie nicht wie Java und C# die eierlegende Wollmilchsau der Softwareentwicklung von der Armbanduhr bis zum Server-Cluster sein wollen und daher weniger komplex sind. Weitergehende Prophezeiungen sollen hier unterbleiben - darin haben sich schon andere geirrt.

Dr. Holger Schwichtenberg
unterstützt Entwickler mit seiner Firma www.IT-Visions.de, hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher zu Programmierthemen.

[1] Die Zukunft gehört Java und .Net; Computerzeitung; 3.4.2003

[2] Holger Schwichtenberg; Eingebettet; Systemadministration mit Microsofts PowerShell; iX Special 2/2007, S. 87

[3] Michael Stal; Vorpremiere; Die neuen Sprachelemente von C# 3.0; iX Special 2/2007, S. 147

In der Printausgabe finden Sie zwei weitere Artikel zum Thema "Programmieren heute", zur Weiterentwicklung des C++-Standards und zur Programmiersprache D.

Mehr Infos

iX-TRACT

  • Java und C# sind heute die führenden Universalprogrammiersprachen für neue Projekte.
  • Im Zuge des Web-2.0-Hypes gewinnen Javascript, PHP, Ruby und Python an Bedeutung.
  • An den Hochschulen dominiert Java.

(wm)