Welche Programmiersprache lernen?
Das ist Teil 2 unseres Tutorials zur Frage „Welche Programmiersprache soll ich lernen“. Hier geht es zurück zu Teil 1.
Zeigerarithmetik und Speicherverwaltung
Ein wichtiger Unterschied zwischen den genannten Programmiersprachen besteht im Bezug auf den Funktionsumfang der Sprachen bezüglich Speicherverwaltung und Zeigerarithmetik. Die sonstige Syntax ist bei den beiden Sprachen relativ ähnlich; der für Anfänger, die eine Programmiersprache lernen wollen, aber wohl wichtigste Unterschied besteht eben bei diesen Konzepten.
Um es etwas salopp zu formulieren: Java zählt zu den moderneren Programmiersprachen, nämlich eben weil dem Programmierer dort einige Aufgaben abgenommen werden, die man bei C und C++ manuell erledigen muss. Das bedeutet: Java zu erlernen ist grundsätzlich einfacher, es bietet dem Programmierer aber nicht diesen Detailgrad an Kontrolle über das Programm.
Konkret ist es so, dass man in den Programmiersprachen C und C++ Zugriff hat auf die Speicherverwaltung: man kann und muss physische Speicherblöcke im RAM des Rechners reservieren, kann diese nach Belieben nutzen und muss sie am Ende wieder freigeben. Mit diesen Speicherblöcken kann man auch recht ausgefallene Sachen machen, man kann einen Speicherblock auf einen anderen verweisen lassen, das nennt man dann Zeigerarithmetik. Das gibt einem zwar einen hohen Grad an Kontrolle über das mit diesen Programmiersprachen entwickelte Programm, ist aber auch fehleranfällig und macht es gerade für Anfänger, eine Programmiersprache lernen wollen, schwierig. Dazu ein paar Beispiele:
1) Sie sind als Programmierer verantwortlich für das „Aufräumen“ des Speichers. D.h. wenn Sie einen Speicherblock nicht mehr benötigen, müssen Sie ihn explizit wieder freigeben, damit er für andere Aufgaben wieder verwendet werden kann. Tun Sie das nicht, haben Sie gewissermaßen ein Leck im Programm – also eine Stelle im Speicher, die nicht verwendet werden kann und damit nur unnötig Ressourcen belastet. Geschieht dies öfters, wird der Speicherplatz des Programmes immer weiter aufgebläht, was das Programm möglicherweise langsam und träge macht bis es irgendwann gar nicht mehr funktioniert, weil nicht mehr genügend neuer Speicher zur Verfügung steht.
2) Insbesondere durch die Verwendung der Zeigerarithmetik kann es vorkommen, dass Sie versuchen, auf einen Speicherbereich zuzugreifen, der Ihnen garnicht gehört (d.h. auf einen Speicherbereich, auf den Sie eigentlich keinen Zugriff haben). Das führt dann in der Regel dazu, dass das Programm sang- und klanglos abschmiert.
Programmieren lernen für Dummies
Lesen Sie hier das erste Kapitel kostenlos!
Java ist dagegen eine Programmiersprache mit automatisch verwaltetem Speicher. Sie brauchen sich dort um all dies nicht zu kümmern – Sie legen einfach Objekte an und der Compiler sorgt automatisch dafür, dass diese im Speicher an der richtigen Stelle gelagert werden. Wenn Sie ein Objekt nicht mehr benötigen müssen Sie es auch nicht löschen – auch das geschieht automatisch.
Zeigerarithmetik und Speicherverwaltung sind sehr mächtige Werkzeuge – da sie aber auch sehr fehleranfällig sind ist es gerade bei Anfängern, die eine Programmieren lernen wollen oft besser, sich erstmal an einer Programmiersprache mit automatischer Speicherverwaltung wie Java zu versuchen.
Plattformabhängigkeit
Sowohl für die Programmiersprache Java als auch für C/C++ existieren Compiler für alle gängigen Betriebssysteme. Sie können einen Code, den Sie mit C/C++ oder Java geschrieben haben also grundsätzlich auf allen gängigen Systemen in Maschinencode übersetzen und dann dort ausführen. In der Realität ist es aber so, dass in C/C++ viele plattformabhängige Bibliotheken verwendet werden. Normalerweise müssen Sie, wenn Sie einen Quellcode unter verschiedenen Systemen übersetzen wollen, eine umfangreiche Portierung durchführen. Java ist dagegen tatsächlich plattformunabhängig, das Prinzip „Write once, run anywhere“ gilt hier nahezu uneingeschränkt. Einen Code, den Sie mit der Programmiersprache Java geschrieben haben, können Sie auf allen Systemen ausführen.
Programmieren mit Java - Einige unserer Empfehlungen
Weitere Unterschiede zwischen den Programmiersprachen
Natürlich gibt es noch weitere Unterschiede zwischen den Programmiersprachen, z.B. in Bezug auf die Geschwindigkeit oder die Verwendung einer Zwischensprache beim Übersetzen. Gerade für Anfänger, die erstmalig eine Programmiersprache lernen wollen, sind diese Unterschiede jedoch nicht von allzu großer Bedeutung.
Als Fazit kann man sagen, dass sich sowohl C, C++ und Java für Anfänger eignen, die Programmieren lernen wollen. Aufgrund der einfacheren Erlernbarkeit lautet an dieser Stelle unsere Empfehlung, mit Java zu beginnen, aber wer es sich zutraut kann auch durchaus mit C++ oder gar C beginnen. Sie finden auf jeden Fall bei uns weitergehende Informationen zum Erlernen für alle 3 der vorgestellten Programmiersprachen.
Programmieren mit C++ - Einige unserer Empfehlungen
Welche Programmiersprache lernen? – Ein Überblick
In unserer Übersicht stellen wir noch einmal die besprochenen Eigenschaften und Unterschiede der 3 Programmiersprachen auf einen Blick dar.
C | C++ | Java | |
---|---|---|---|
Imperative Programmierung | Ja | Ja | Ja |
Objektorientierung | Nein | Optional | Stark in der Sprache verankert |
Speicherverwaltung | Manuell | Manuell | Automatisch („managed“) |
Plattformunabhängigkeit | Theoretisch, in der Praxis meist nicht | Theoretisch, in der Praxis meist nicht | Ja |
Geeignet für Anfänger | + | ++ | +++ |
Hier geht es zurück zu Teil 1 des Tutorials zur Frage „Welche Programmiersprache lernen?“.
Direkt zu den Buchempfehlungen für C++ oder Java.
Direkt zur Empfehlung für den C++-Fernkurs oder den Java-Fernkurs.
Unsere Buchempfehlungen
Oder sehen Sie sich die vollständige Liste der Empfehlungen für Java und der Empfehlungen für C++ an.
Wir haben auch Empfehlungen für einen C++-Fernkurs und einen Java-Fernkurs parat.