Programmiersprachen im Vergleich
| Übersetzung | OOP | Abstraktion | Syntax | Standardbibliothek | Geschichte | Merkmale | Verwendung | |
|---|---|---|---|---|---|---|---|---|
| Assembler | Compiler (Assembler) | nein | sehr sehr maschienennah (keine Abstraktion; Direktzugriff auf Register und Speicherstellen) | wenig Schlüsselwörter, viele Symbole; teilweise sehr abstrakt | nicht vorhanden | Urvater der Programmiersprachen | keine typische Programmiersprache; Programmierung direkt mit Maschinencodes. Sinn ist eine ergonomische Programmierung im untersten Level | Programmierung von Betriebssystemen; Optimierung von zeitkritischen Operationen (Inline-Assembler) |
| C | Compiler | nein | maschienennah (u.A. durch Inlineassembler, kein OOP); kein Garbage Collector | wenig Schlüsselwörter, viele Symbole; teilweise sehr abstrakt | sehr minimal | ursprünglich für Unix entwickelt, Vater vieler anderer Programmiersprachen (vorallem im Bezug auf den Syntax) | ziemlich umständlich in der Handhabung, besonders in der Systemprogrammierung Stärken | viele Betriebssysteme nutzen C; grundlegende Programme aller Unix-Systeme; viele (ältere) Programme |
| C++ | Compiler | ja | sehr unterschiedlich: sowohl maschienennah (Inlineassembler möglich), als auch sehr abstrakt (OOP und generische Programmierung); kein Garbage Collector | C-basierend | generisch; minimal | Weiterentwicklung von C, größtenteils mit C kompatibel. | sehr mächtig durch den weitgefächerten Abstraktionsbereich; eher umständlich in der Handhabung | Systemprogrammierung & Anwendungsprogrammierung |
| Python | Interpreter | ja | abstrakt | viele Schlüsselwörter, kaum Symbole; Einrückungen tragen Semantik; ergonomisch | sehr umfangreich | als Skriptsprache entworfen | Python-Module können auch mit C programmiert sein | Einsatz als Skriptsprache; Verwendung im Web |
| Java | Compiler/Bytecode-Interpreter | ja | sehr abstrakt (keine Systemfunktionen etc.) | C-basierend | sehr umfangreich | Ursprung als Betriebssystemumgebung mit virtueller CPU für verschiedene Einsatzzwecke; (u.A.) an C++ orientiert | sehr plattformunabhängig gehalten, benötigt eine virtuelle Maschine zur Ausführung | Java-Applets im Web; Handyprogramme; (kleinere) plattformunabhängige Desktopprogramme; Einsatz auf Webservern (JavaServer Pages, JSP) |
| C# | Compiler/Bytecode-Interpreter | ja | abstrakt; bietet im unsafe-Modus allerdings Systemfunktionen | C-basierend | umfangreich | Entwicklung aus C++; Konzepte aber auch (u.A.) von Java übernommen | theoretisch teil-plattforumunabhängig, allerdings beinahe nur Verwendung unter Windows, Ansätze zur Unsterstützung unter Linux existieren | Anwendungsprogrammierung |
In der Tabelle ist gut zu sehen, wo welche Sprachen ihre Stärken und wo sie ihre Schwächen haben. So hat jede Sprache ihr eigenes Anwendungsgebiet, indem sie am effizientesten eingesetzt werden kann.
Assembler wird heutzutage nahezu nie alleine eingesetzt, es ist einfach Blödsinn, ein ganzes Anwendungsprogramm mit Maschinencodes zu schreiben. Der Quelltext ist sehr schnell unübersichtlich, lange noch bevor ein Programm auch nur ansatzweise fertiggestellt ist. Ohne ausführlichste Kommentare ist es beinahe unmöglich, durch den Quelltext zu blicken. So ist Assembler vorallem den Betriebssystemprogrammierern vorbehalten, aber auch im Bereich der Mikrocontrollerprogrammierung ist Assembler oft noch die erste Wahl. Allerdings ist die Sprache auch optimal bei zeitkritischen Routinen einzusetzen. Beispielsweise Spieleprogrammierer werden die Möglichkeit schätzen, Assembleranweisungen direkt mit Inline-Assembler in C und C++ platzieren zu können bzw. ihre Assemblerroutinen zu ihrem Programm linken zu können.
Auch die Verwendung der Sprache C geht stark zurück, immer weniger Programme werden heutzutage mit C entwickelt, da C++ ähnlich maschinennah arbeiten kann und dennoch generische und objektorientierte Programmierung bietet. C wird wie der Assembler auch noch bei der Programmierung von Mikrocontrollern verwendet. Aber auch die Verwendung von C++ als Sprache für Anwendungsprogramme (vorallem unter Windows) geht langsam zurück, während C++ in anderen Bereich noch die beste Wahl bleibt und es in Zukunft wohl auch noch bleiben wird. Die Programmierung von leistungsfressenden Spielen ist mit C++ am besten möglich und vielbelastete Serverprogramme kommen auch oft aus der C++-Szene, ebenso wie C++ auch Gang und Gebe bei der Entwicklung von Treibern und Systemprogrammen ist.
Wenn aber sowohl C als auch C++ nach und nach weniger Einsatz in der Anwendungsprogrammierung finden, was wird sonst genutzt? In der Windowswelt ist hier C# ("C sharp") sicher einer der Hauptvertreter. Hier wurde versucht, die Vorteile von C++ und auch Java und weiteren Sprachen zu vereinen und die Nachteile außenvor zu lassen. Das Ergebnis war die .NET-Plattform aus dem Hause Microsoft mit der Headliner-Sprache C#. Die Laufzeitumgebung macht C# allerdings nicht unbedingt plattformabhängig, obwohl mit Hilfe des Mono-Projekts auch viele .NET-Programme auf Linux- und Unix-System laufen. Der Vorteil von C# ist sicherlich, dass es sehr auf Anwendungsprogrammierung ausgelegt ist. Hiermit lassen sich sehr schnell und effizient Programme entwickeln. Einer der größten Vorteile ist wohl die große Sammlung von Klassenbibliotheken (API), mit der z.B. eine GUI sehr einfach erstellt und vorallem schnell werden kann. Hier ist C++ im Nachteil.
Java hat parallelen zu C#. Zur Ausführung von Java-Programmen wird - ähnlich wie bei .NET - eine virtuelle Maschine benötigt, die den vorkompilierten Bytecode der Javaprogramme ausführt. Das Java-Konzept ist allerdings viel abstrakter gehalten als die .NET-Umgebung, so dass Java wirklich portabel ist. Nahezu jedes Java-Programm lässt sich auf einem beliebigen System ausführen und heutzutage unterstützt sogar fast jedes neuere Handy Java. Einbußen durch die Abstraktion sind wohl der Verlust der Verbindung zum System. Systemfunktionen sind nur sehr sehr begrenzt nutzbar. Somit ist Java vorallem für kleinere Anwendungsprogramme geeignet und die Wahl für Programmierer für mobile Geräte. Ab und zu findet man Java-Applikationen auch als Java-Applets auf Webseiten. Hier konnte siche Java aber nicht durchsetzen und meist wird Flash verwendet.
Zu guter Letzt steht die Sprache Python noch aus. Python unterscheidet sich etwas von den schon genannten Programmiersprachen, nicht nur der Syntax ist ein sehr außergewöhnlicher, auch handelt es sich hier um eine Interpretersprache. Python wurde als Skriptsprache entwickelt. Neuerdings hat die Sprache ein sehr großes Einsatzgebiet gefunden: Das Web. Immer öfter wird Python als Ersatz für PHP eingesetzt, Python bietet einige Vorteile, auch wenn am Anfang die Entwicklung kompliziert erscheint. Neben der Anwendung im Web wird Python natürlich auch im ursprünglichen Einsatzgebiet als Skriptsprache verwendung. Wo ein Shellskript schon längst nicht mehr ausreicht hilft, zeigt Python seine Stärken. Selbst in einem IRC-Chat trifft man nicht selten auf Python-Bots.
Natürlich handelt es sich bei diesem Vergleich von Programmiersprachen um eine nur sehr unvollständige Liste. Es gibt viele dutzend Programmiersprachen mehr, in der Auswahl sind nur ein paar wichtige genannt. Für verschiedene Einsatzzwecke gibt es teilweise noch ziemlich spezielle und exotische Sprachen. Es gibt sogar esoterische Programmiersprachen, die keinen praktischen Zweck haben, sondern eher aus Spaß entwickelt worden sind oder Lehrmittel darstellen sollen. Zum Beispiel ist eine Programmiersprache, in der Anweisungen nur mit einer Wahrscheinlichkeit von 90 % ausgeführt werden, alles andere als praktisch.
Post comment
Zum Kommentieren musst du angemeldet sein.

4 comments
PromyLOPh am Sept. 30, 2008 um 10:23 p.m.
PowerProgrammer am Oct. 2, 2008 um 9:23 p.m.
PromyLOPh am Oct. 4, 2008 um 2:47 p.m.
Lederyacke am Dec. 14, 2008 um 12:33 a.m.