Hi,
Java hat deutlich weniger "Fallstricke" als C++, wodurch es gerade für Anfänger einfacher zu erlernen ist. Zu nennen wäre da die automatische Speicherverwaltung mittels eines Garbage Collectors und das völlige Fehlen von Zeigern.
das leuchtet mir ein. Allerdings ist Java konsequenter als C++ auf OOP hin ausgelegt. Objektorientierung ist aber per se anspruchsvoller, weil es von der alltäglichen Denkweise stark abweicht: Wenn jemand sieht, dass im Garten der Rasen gemäht werden muss, dann sieht er nicht das Objekt Garten.Rasen und die Methode Garten.Rasen.maehen(englisch-kurz), sondern die meisten Leute sehen die Arbeit Schritt für Schritt: Rasenmäher aus der Garage holen, Rasenmähermotor starten, mähen, Grasschnitt zusammenrechen, Rasenmäher putzen und aufräumen.
Wir denken im Alltag überwiegend prozedural, eine objektorientierte Sprache bedeutet also, sich von vornherein ein neues Paradigma anzutrainieren. In C++ kann ich dagegen zunächst intuitiv prozedural anfangen, und die OOP-Features allmählich erlernen und einsetzen, wo sie sinnvoll sind.
Das ist aber IMHO gar nicht schlimm, wenn man eine Sprache wie C/C++ lernen möchte, die schon lange existiert. Wenn man nach einem älteren Buch lernt, bekommt man vielleicht nicht die "bleeding edge news" mit, aber doch eine gute Grundlage. Und Neuerungen in bestimmten Themenbereichen kann man sich auch später noch anlesen.
Es gibt keine Sprache C/C++.
Nein, es sind schon zwei Sprachen. Aber C++ ist im Wesentlichen zu C abwärtskompatibel - vor allem, wenn man die Schlampereien, die C++ zulässt, nicht ausnutzt, sondern weiterhin Disziplin walten lässt (z.B. alle Bezeichner ordentlich am Anfang eines Blocks deklariert). Wegen der Verwandtschaft nenne ich die beiden Sprachen daher normalerweise in einem Atemzug. Wer C++ lernt, hat meiner Ansicht nach automatisch C mitgelernt.
Das Problem mit den alten Büchern ist, dass sie nur selten die Möglichkeiten von C++98 und vorallem der STL nutzen.
Das gilt nun speziell für C++, nicht für C.
Außerdem fangen viele Bücher viel zu früh mit Zeigern und char-Arrays an.
Ansichtssache. Ich finde, man kann gar nicht zu früh damit anfangen, weil es das Verständnis für die interne Logik und die Abläufe (und auch mögliche Fehler) erheblich fördert.
Auch wenn es C++ schon sehr lange gibt, so entwickelt sich die Sprache trotzdem immer noch weiter. Schau dir mal die Boost-Bibliotheken an, wenn dich interessiert was mit "modernem" C++ alles möglich ist und ich denke so hat man vor 10 Jahren C++ noch nicht verwendet.
Ich kenne keine Boost-Bibliotheken, und es interessiert mich auch nicht so brennend, weil ich normalerweise einen Bogen um C++ mache (wenn ich nicht zur Verwendung gezwungen bin) und lieber traditionelles C benutze.
Ich habe auch einen Artikel (leider auch auf Englisch) gefunden, in dem es darum ging welche API man verwenden sollte weil man sich auf die Standard-Schnittstelle wohl nicht immer verlassen kann.
Welche Standard-Schnittstelle mag hier gemeint sein?
Ich könnte mir vorstllen, dass die Standardschnittstelle für Windows-Betriebssysteme, die WinAPI gemeint war.
Das ergibt wenig Sinn, denn auf die kann man sich *immer* verlassen, wenn man für die Plattform "Windows" entwickelt.
Ciao,
Martin
Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.