Dipl. User mit summa cum laude
Welche Programmiersprache nehme ich, wenn ... ?
Oft tauchte bisher die Frage auf: "Welche Programmiersprache nehme ich, wenn ich ... machen will ?"
Um das Ganze mal etwas theoretischer zu formulieren ...
A) Jedes Programm ist idR ein (endlicher) Algorithmus.
B) Eine Programmiersprache ist eine Sprache zur Beschreibung beliebiger Algorithmen.
Folglich sollte man mehr oder weniger jeden Algorithmus in jeder Sprache formulieren koennen.
Soviel zur Theorie, jetzt zur Praxis
Nicht jede Sprache ist fuer jede Aufgabe gleichermassen geeignet. Sprachen wie LISP oder PROLOG werden idR fuer Wissensbasierte Systeme und KI eingesetzt, COBOL hat sich im Hinblick auf Business und Banking entwickelt, und FORTRAN war mal dafuer gedacht, einfach wissenschaftliche Formeln zu uebertragen. Allerdings finden sie in der heutigen Zeit nur noch begrenzt Anwendung, weil sich einige Sprachen herauskristallisiert haben, die eine breitere Anwendung und Flexibilitaet aufweisen koennen.
Im Grunde lassen sie sich auf 3 Gruppen einteilen.
1) Die Basic Familie - Oldtimer mit aufgebohrtem Motor
BASIC - Beginners All Symbolic Instruction Code ist eine Programmiersprache, die vor allem einfach zu lernen sein sollte. Mittlerweile gibt es hunderte von Dialekten, von Visual Basic, geeignet fuer die GUI Entwicklung unter Windows, bis zu BlitzBasic3D, dass den Einstieg in die Spieleprogrammierung erleichtern soll. Einige dieser Dialekte, z.B. der letztgenannte, haben mitgelieferte Bibliotheken, die ausgewaehlte Funktionen von bekannten Graphischen Schnittstellen, wie z.B. DirectX in einfacherer Syntax bereitstellen, damit man schnell, aber dafuer ohne volle Kontrolle damit arbeiten kann.
Fuer kleine Programme, mit weniger als 1000 Zeilen, und kleine Spielereien, wie ein SinglePlayer Pong, lassen sich damit relativ einfach gestalten. Wenn es allerdings an komplexe Vorgaenge geht, die ein hoechstmass an Kontrolle durch den Programmierer verlangen, oder die ein Hoechstmass an Abstraktion verlangen, ist mMn BASIC absolut ueberlastet.
Einfache Programmierung eines Taschenrechners
, Spieleprogrammierung 
Fazit: schnell zu lernen
, langsam
, unstandardisiert
, idR kein OOP
, interpretiert 
2) Die Pascal Familie - Leistungsfaehiger Schreibaufwand in neuem Kleid
Pascal wurde urspruenglich als einfach zu lernende aber dennoch leistungsfaehige Sprache entwickelt. Mit der Firma Borland und ihrer Version Turbo Pascal, die den damals schnellsten Compiler der Welt besass, stieg Pascal zu einer weitverbreiteten Sprache auf. Anders als in Basic war bereits in den Grundzuegen der Sprache Funktionale Programmierung sowie Datentypen festgelegt. Die Sprache ist dank ihrer Schluesselwoerter wie "begin" leicht zu lernen, werwehrt einem aber dennoch nicht den Zugriff zur Hardwarenahen und damit schnellen Programmierung.
Relativ zeitig wurden mit ObjectPascal, was ab Version 5 in TurboPascal integriert war, die Konzepte der OOP (Object Orientierte Programmierung) zum wesentlichen Bestandteil der Sprache integriert, so dass sie sich natlos anpassen konnte. Die OOP in Pascal ist mMn eine der schluessigsten Implementierungen. Pascal war eine der ersten Sprachen, die OOP unterstuetzte und trug massgeblich zur Bildung des Konzeptes bei. Komplexe Projekte sind heutzutage ohne OOP kaum noch denkbar.
In der heutigen Zeit sind vor allem zwei Implementierungen nennenswert. Zum einen freePascal, dass in der GCC enthalten ist und unter der GPL vorliegt, und mit dem ebenfalls unter der GPL fallenden Lazarus eine (Delphi nachempfundene) IDE samt RAD (Rapid Application Development) besitzt. Die Alternative ist Borlands TurboPascal Nachfolger Delphi, im Grunde der Urvater der RAD unter Windows, und stellt eine konsequente Weiterentwicklung von Pascal dar.
Delphi wird vor allem dann eingesetzt, wenn es um die Entwicklung von GUI unter Windows geht, da ein Grossteil der Arbeit in der exzellenten VCL (Visual Components Library) versteckt ist, und man sich nur noch um das Wesentliche kuemmern muss. Delloch bieten beide Pascal Varianten weiterhin die Moeglichkeit, systemnah zu programmieren, also die vorgegebenen Erleichterungen nicht zu benutzen, und sein Schicksal selber in die Hand zu nehmen, was volle Kontrolle bedeutet. Zudem gibt es fuer sehr viele der fuer C++ entwickelten Komponenten Portierungen fuer Pascal, so dass diese (unter Beachtung von Parameteruebergabekonventionen etc) ebenfalls verwendbar sind.
Zwar ist Pascal nur unwesentlich langsamer als C++, jedoch erlangte es unter weit fortgeschrittenen Programmierern nicht eine derart weiter Verbreitung wie C++, da der Vorteil fuer Einsteiger, Schluesselwoerter zu verwenden, fortgeschrittenen Programmierern als umstaendlich erscheint. ein "begin" in Pascal ist in C einfach ein "{"
Fazit: Flexibilitaet
, Systemnah sofern gewollt
, Schnell
, OOP
, einfach zu lernen
, Profis fehlt der Biss 
3. Die C Familie - Das Ü-Ei der Programmierung: Schnell, Verbreitet, Kryptisch
3.1 C - Assembler fuer Arme
C wird nach Assembler als Schnellste Programmiersprache der Welt angesehen. Dafuer bringt sie von Haus aus einerlei Schnickschnack mit (was sogar soweit geht, das von Haus aus keine Zeichenketten implementiert sind), was sie einserseits portabel macht, andererseits dafuer gesorgt hat, dass sich viele verschiedene Standards gebildet haben, die zueinander nicht kompatibel sind. Mit C kann man prinzipiell alles machen, vom Schreiben neuer Betriebssysteme ueber Treiber fuer Hardware bis hin zu kompletten Spielen. Allerdings hat C keine Unterstuetzung fuer OOP, was das entwickeln grosser Projekte oder die Abstraktion von Problemen erschwert. Zudem ist C so hardwarenah, dass man sich mehr um die Realisierung einfachster Dinge kuemmern muss, als auf das eigentliche Problem, was man loesen will.
C verwendet statt Schluesselwoertern einzelne Zeichen, was die Sprache fuer Anfaenger sehr ungeeignet macht, da nicht auf den ersten Blick zu sehen ist, was ein Code macht. Andererseits haben erfahrene Programmierer dadurch die Moeglichkeit sehr schnell komplexen Code zu schreiben, ohne viel tippen zu muessen.
Fazit: Wer sich Assembler spraren will und wirklich weiss, was er tut, und es zusaetzlich extrem auf Geschwindigkeit ankommt, wird zu C greifen.
Alle anderen sind vor Ehrfurcht gelaehmt. 
3.2 C++ - Die wohl verbreitetste Sprache der Welt
C++ ist eine Weiterentwicklung von C, bei der die Konzepte der OOP in die Sprache intigriert , sowie in diesem Zuge einige andere Erleichterungen aus der Taufe gehoben wurden. C++ ist in etwa um den Faktor 4 langsamer als C. Dafuer wurden mit der STL standardisierte Strukturen geschaffen, die einem das Programmieren sehr stark erleichtern, z.B. Listen, Vektoren, Streams. C++ ist eine der wenigen Sprachen, die in der OOP echte Mehrfachvererbung unterstuetzen. Zudem wurden durch Templates und Operatorenueberladung einem sehr maechtige Programmierwerkzeuge in die Hand gegeben.
Da C eine Untermenge von C++ ist, wurde seine Syntax beibehalten. Daraus resultiert, dass fuer Anfaenger der Quellcode schwer zu lesen ist, Profis allerdings kompakten Code schreiben koennen.
Die Kompaktheit des Codes, die Moeglichkeit Operatoren zu ueberladen und die Maechtigkeit der Templates gaben C++ letztlich den entscheidenden Vorteil gegenueber (allen) anderen Programmiersprachen, insbesondere gegenueber (Turbo)Pascal.
Durch die weite Verbreitung der Sprache finden sich im Internet sehr viele Tutorials und Musterloesungen, die man auf seine eigenen Probleme adaptieren kann. Auch liegen die meisten professionellen und zum Teil auch kostenlosen Engines und Bibliotheken in der Regel fuer C++ fertig verwendbar vor.
Fazit: Schnell
, Nutzung von professionellem Fremdcode
, OOP
, STL
, maechtige Programmierwerkzeuge (Operatorenueberladung, Templates, ...)
, Kryptischer Code
, flache Lernkurve 
3.2 Java - Unabhaengige Insel im Meer aus Bytecode
<wird noch ergaenzt>
Geändert von Ineluki (12.07.2005 um 22:25 Uhr)