Was soll man lernen, C, C++ oder Java oder ...? Früher war es einfacher: Man fing mit Basic an, Ingenieure und Naturwissenschaftler lernten Fortran, Wirtschaftswissenschaftler Cobol
, in der Lehre wurde Pascal favorisiert, wer betriebssystem-spezifische Probleme bearbeitete, bevorzugte C. Für eine kleinere Gruppe von Programmierern waren Spezialsprachen wie Lisp und Prolog
besonders geeignet, in den achtziger Jahren begann mit Smalltalk das objektorientierte Programmieren. Für alle speziellen Anforderungen gab es die geeignete höhere Programmiersprache. In der
Weiterentwicklung der einzelnen Sprachen wurde stets versucht, die Stärken der anderen Sprachen zu übernehmen, so dass man heute mit vielen Sprachen eigentlich alles programmieren kann. Trends in Vergangenheit und Gegenwart Es
gab immer Trends und zum Teil sogar schwierig zu begründende Modeerscheinungen in der Programmiersprachen-Welt, auch mancher "frühe Tod" ist kaum verständlich (wo ist die sehr schöne Sprache Algol
geblieben, wo die von einem besonders großen Computer-Hersteller besonders protegierte Sprache PL/1?). Für die steile Karriere der Sprache C
in den letzten zehn Jahren, nachdem sie vorher fast ausschließlich in der Unix-Welt zu Haus war, mag die Tatsache verantwortlich sein, dass erfolgreiche Betriebssysteme (z. B. Unix und Windows) selbst in C
geschrieben sind und diese Sprache deshalb das Zusammenspiel des Anwenderprogramms mit dem Betriebssystem besonders unterstützt. Dass C++
sich so stark verbreitet hat, mag vor allen Dingen zwei Gründe haben: Die objektorientierte Programmierung
ist sicher eine ausgezeichnete Alternative zu den traditionellen Programmiertechniken, möglicherweise für große Software-Projekte die einzige Möglichkeit, die Programme sowohl effektiv schreiben als auch warten zu können (und objektorientierte Vorgehensweisen sind auch in vielen anderen Wissenschaftsbereichen erfolgreich). Zum anderen enthält
C++ den kompletten Sprachumfang von C, so dass für die Programmierer ein "gleitender Übergang" möglich ist und alle C-Routinen und C-Bibliotheken weiter verwendet werden können.
Auf keinen Fall darf man aber C++ als ein "erweitertes C" ansehen. Man muss in jedem Fall die objektorientierte Programmierung konsequent realisieren, wenn man die Vorteile dieser Sprache nutzen
will. Der neueste Trend (es ist wohl schon deutlich mehr) heißt aber Java, propagiert als "Internet-Sprache". Diese Sprache ist konsequent objektorientiert, ein "Schlupfloch" zu
den klassischen Programmiertechniken (wie in C++ durch die Einbindung von C) gibt es nicht.
Und welche Sprache soll man nun lernen? Diese Frage war schon immer schwierig zu beantworten. Die Antwort wird
stets subjektiv beeinflusst sein, und die Gefahr des "Glaubenskrieges" zwischen den Anhängern der einzelnen Sprachen kann niemals ausgeräumt werden. Mit dem Schreiber dieser Zeilen, der über Assembler, Algol,
Basic, Pascal und Fortran zu den hier empfohlenen Sprachen kam, lässt sich ein Glaubenskrieg nicht mehr führen. Aber auch meine Meinung ist natürlich subjektiv geprägt: Wenn es nicht äußere Zwänge (z. B. ein Lehrer
oder ein Professor, der einfach bestimmt, welche Sprache zu lernen ist) oder sonstige besondere Gründe gibt, die für die Wahl einer anderen Programmiersprache sprechen, sollte man sich heute für eine der drei hier
betrachteten Sprachen entscheiden. Die "Erfinder" der Programmiersprache Java
haben diese als "einfach zu erlernen" bezeichnet. Diese Aussage kann wohl nur mit dem Zusatz "..., wenn man C++
beherrscht" akzeptiert werden. Dass das objektorientierte Programmieren einfach ist, weil es "die Denkweise unterstützt, die man aus dem Umgang mit den Objekten im täglichen Leben gewöhnt ist", wird zwar auch gern behauptet, aber kaum von denjenigen bestätigt, die es tatsächlich erlernen wollen. Wer
C++ lernt, hat dann einen nicht zu unterschätzenden Vorteil und kann sich auf die Besonderheiten der objektorientierten Programmierung konzentrieren, wenn er C kann. Also nacheinander C
, C++ und dann Java? Nein, das ist nicht zwingend erforderlich, aber ein durchaus möglicher Weg, auf dem man eigentlich wenig lernen muss, was man nicht auch weiter verwenden kann (der erste Teil dieses
Weges "über C zu C++" wird z. B. verfolgt in dem Skript "C und C++ für UNIX, DOS und MS-Windows"). Weitgehend sollte man die Entscheidung von seinen Vorkenntnissen abhängig machen. Wer vorher noch gar nicht programmiert hat, wird sicher
mit dem Einstieg über eine objektorientierte Sprache nicht unerhebliche Schwierigkeiten haben. Wenn das erklärte Ziel aber ausschließlich im Erlernen der "Internet-Sprache" Java
besteht, ist der "Umweg über C und C++" sicher nicht gerechtfertigt (zumal Java tatsächlich auf einiges verzichtet, was in C++ - meist auf mehreren Wegen - möglich ist).
Wenn man sich aber für das Erlernen von C++ entscheidet, ist der Weg über C
sicher kein Umweg, zumal man alles weiter verwenden kann und bei vielen Programmiertechniken durch den Vergleich der alternativen Möglichkeiten ein besonders tiefes Verständnis für viele Aspekte dieser mächtigen Programmiersprache gewinnt. Dieser Weg erhält das Prädikat "SEHR EMPFEHLENSWERT", zumal man dann auch für
Java
bestens gerüstet ist. Dem Schreiber dieser Meinung ist durchaus bewusst, dass er dabei mit der Auffassung vieler Vertreter der objektorientierten Programmierung kollidiert, die meinen: Wer erst einmal durch eine andere Programmiersprache "verdorben" ist, wird nie "sauber" objektorientiert programmieren. Aber eine solche Diskussion würde wieder einen der so beliebten "Glaubenskriege" unter den Verfechtern unterschiedlicher Programmiersprachen auslösen, in die man sich ohnehin nicht einmischen sollte.
Bis hierher habe ich diesen Text im Jahre 1996 geschrieben, bin von vielen, die ihn gelesen haben, in interessante
Diskusionen verwickelt worden, ohne dass ich bis heute einen Grund zu einer Änderung einer Aussage sehe. Fällig erscheint mir aber eine ... Ergänzung des Textes im September 2000
Neben vielen anderen war die am häufigsten gestellte Frage: "Und Visual-Basic, ist das nicht auch eine Alternative?" Die einfache Erlernbarkeit und der recht kurze Weg, auf dem man relativ schnell zu
professionell aussehenden Ergebnissen kommt (denen man "die Herkunft" natürlich nicht ansieht), wurden als Argumente angeführt. "Nicht objektorientiert, proprietär", waren die Gegenargumente, die
beide im September 2000 nur noch bedingt gelten.Die neueste Version von Visual Basic besitzt die Eigenschaften einer objektorientierten Programmiersprache (dass man mit dem " Beginners All purpose Symbolic Instruction Code" einmal objektorientiert arbeiten
kann, kommt mir immer noch merkwürdig vor, aber es ist Realität), angenehm ist, dass dies so realisiert wurde, dass sich derjenige, der die Technik des objektorientierten Programmierens bereits kennt, sofort "zu
Hause" fühlt. Es ist ein Beispiel mehr für die "Nachrüstung" einer erfolgreichen Programmiersprache mit den Stärken der anderen Sprachen und - wie bei C und C++
- eine "Chance für Aufsteiger". Letztendlich relativiert sich auch der Einwand, dass Visual Basic
nicht auf allen Plattformen (Betriebssystemen) verfügbar ist, durch den Anteil, den die MS-Windows-Systeme bei den heute installierten Systemen haben.Das oft gehörte Argument, dass Visual Basic
besonders einfach sei, verlangt noch eine Bemerkung zum Stichwort "Entwicklungsumgebung", die für alle hier genannten Programmiersprachen gilt: "Nur ein paar Mausklicks, und man hat ein komfortables Programmgerüst." Dabei werden viele Zeilen Code automatisch erzeugt, das Programm ist prinzipiell komplett, es kann eine ausführbare Version erzeugt und gestartet werden, der Programmierer selbst hat bis zu diesem Punkt noch gar nicht programmiert. Die unendliche Mühsal früherer Jahre, die Kommunikation mit dem Benutzer (Bildschirm, Tastatur, Maus, Drucker, ...) ist weitgehend vorbereitet, und auch viele weitere Schritte werden von der Entwicklungsumgebung nach einem Dialog mit dem Programmierer automatisch in Programmcode umgesetzt. Ist das Programmieren einfacher als früher? Keineswegs, weniger mühsam durchaus, speziell in den Passagen, die eher Routinearbeiten sind. Und es sind die objektorientierten Programmiersprachen, die zur Unterstützung durch die Entwicklungsumgebung besonders geeignet sind. Dass es durchaus möglich ist, objektorientiert mit einer Entwicklungsumgebung zu arbeiten, die den eigentlichen Programmcode dann in einer beliebigen Sprache erzeugt, ist unbestritten und sollte deshalb manchen verbissenen Streit um die "beste" Programmiersprache entkrampfen.
An der Frage, ob sich bereits der Anfänger der Unterstützung einer komfortablen Entwicklungsumgebung bedienen sollte, können sich die Gemüter der Lehrenden heftig erhitzen. Ich beantworte diese Frage schon deshalb
mit "ja", weil sich der Spaß an der faszinierenden Tätigkeit des Programmierens möglichst schnell einstellen sollte. Wer das Programmieren ernsthaft erlernen will, merkt ohnehin sehr schnell, dass er ohne
solides Basiswissen und Training nicht sehr weit kommt. Weil ich aber immer wieder gefragt werde, was ich dem "neutralen Anfänger", der weder durch Vorkenntnisse, Vorgaben und spezielle Ziele beeinflusst
ist, raten würde, will ich auch dazu meine eigene Meinung (im September 2000) sagen: Das Ziel sollte in jedem Fall die objektorientierte Programmierung sein, und wenn nicht spezielle Gründe für eine andere Entscheidung
sprechen, dann lerne man unter Benutzung einer modernen Entwicklungsumgebung C++. |