C++ Wie das Programmieren anfangen?

C++ ist so ziemlich die komplexeste und komplizierteste (verbreitete) Sprache, die es gibt, zumal es geschichtsbedingt deutlich frickeliger zusammengeschustert ist als Java. Die versuchte Pseudoabwaertskompatibilitaet zu C ist auch nicht hilfreich.

C++ hat halt mehr Features als Java, was die Sprache aber nicht einfacher macht. Es gibt schon einen Grund, warum es Alternativen zu C++ gibt (C, Java, C#, Python, PHP, Lisp, etc) und insbesondere Java im Business-Bereich auch so weit verbreitet ist. Es hat halt alles Vor- und Nachteile.

Man kann mit jeder Sprache anfangen, auch mit C++. Ich wuerde das aber nicht empfehlen, da ich fuer Anfaenger keinen Vorteil in C++ gegenueber den Alternativen erkennen kann.
 
Zuletzt bearbeitet:
Zusammengeschustert, ahja... Wann gab es die letzte kritische Sicherheitslücke in C++ (d.h. im Standard oder in einem Compiler, nicht in einem C++-Programm), die zur Verbreitung von Trojanern genutzt wurde?

C++ wird von einem Standardkomitee ohne jede Vergütung weiterentwickelt und jedes Feature ist durchdacht. Und das willst du mit einem kommerziellen Produkt eines milliardenschweren Unternehmens vergleichen?! C++ läuft auf quasi allen Architekturen, allen Betriebssystemen, überall.
Wenn, d.h. _falls_, ich eine Sprache als "zusammengeschustert" bezeichnen würde, dann wäre es am ehesten Java.

Die Schwierigkeit beim Lernen ist eine Geschichte, aber dieser Sprachen-War ist zum Kotzen. Und ich möchte dahingehend auch eher die Wogen glätten, d.h. die obigen Zeilen bitte nicht persönlich nehmen. xD

Natürlich hat jede Sprache ihre Einsatzzwecke. Java ist bei Portabilität kaum zu schlagen, was auch die breite Anwendung erklärt.
Ich denke es spricht aber auch für die Sprache C++, wenn sie so häufig und intensiv eingesetzt wird, obwohl sie nicht zu den total trivialen gehört. Wie sagte Bjarne Stroustrup so schön:
As someone remarked: There are only two kinds of programming languages: those people always bitch about and those nobody uses.


Übrigens ist Java 7 genauso umfangreich wie C++. Die Sprachen geben sich absolut nichts.
Ich glaube, was C++ schwieriger erscheinen lässt, ist die Tatsache, dass die Sprache weniger fehlerresistent ist. Wenn ein Java-Programm läuft, kann die JVM Fehler abfangen und kompensieren und direkt als Debugger dienen. Diesen Luxus gibt es halt bei C++ nicht.
 
Hancock schrieb:
RAII gibts NUR in C++, nicht in Java, da dort der Destruktor fehlt.
Sag mir ein Feature in Java, was es so nicht in C++11 gibt (abgesehen vom GC).

Achtung Jungs - bitte verwechselt hier nicht Fähigkeiten mit Konzepten.
Dass C++ mit Pointer-Arithmetik dementsprechend mächtiger in Referenzen und Pointern auftritt, ist ein Konzept.
Genauso, wie in Java alles außer primitive Datentypen als Referenz verarbeitet wird. (Unter Ausnahmen vom nicht-primitiven Datentyp String der immer by-value verarbeitet wird)
Aber was ist das für eine Referenz? Es ist keine echte Pointer-Arithmetik-Referenz wenn ich aus meinem Kontext hinaus gehe.

Code:
public void exchange(Foo f) {
f = new Foo();
}

Vergleiche mit:

Code:
void exchange(Foo& f) {
f = new Foo();
}

Aus diesem Grund sollte man immer vorsichtig sein, wenn man darüber spricht dass "Konzepte" auch in C++ enthalten sind. Die Java Erfinder haben sich dabei etwas gedacht, gut Nachzulesen z.B. auch in Java in a Nutshell oder sicherlich jeder Internet Recherche.
C++ hat die Fähigkeit, wenn der Entwickler sie nutzt, genau so auch zu arbeiten. Aber das ist nicht das Konzept von C++, sondern die Fähigkeit Code zu schreiben der sich genauso verhält.


Meiner, bescheidenen, Meinung nach ist ein Einstieg, wenn er Ernsthaft gemacht wird, über eine so mächtige Sprache wie C++ genau richtig. Man muss dabei halt ein bisschen mehr den Schimpansenkasten einschalten und auch mal experimentieren, um beschriebenes zu verstehen und nachzuvollziehen. Der Umstieg fällt dann irgendwann auf nahezu jede Sprache, aus Erfahrung, leicht.
Das man in einer OO-Sprache aber erstmal prozedural anfängt, entzieht sich meiner Logik.
Ich wähle eine OO-Sprache, um OO zu entwickeln. Dazu gehört auch, sich mit OOAD zu beschäftigen und das OO Konzept zu verstehen. Prozedural sind die Methodenrümpfe sowieso..
 
Zuletzt bearbeitet:
Ein sehr gutes C++ Buch ist: "C++ without fear".

Die erste Hälfte ist für Anfänger, das dritte Viertel für Fortgeschrittene und das letzte Viertel für Profis. Das Buch ist wirklich sehr gut.

Ein anderes für Fortgeschrittene ist "Effektiv C++ programmieren". Mit diesen beiden Büchern kommt man schon sehr weit.

Dann stellt sich natürlich noch die Frage nach der Entwicklungsumgebung - auch das ist nicht ganz einfach. Visual Studio geht, Eclipse auch, allerdings nicht ohne weiteres, denn es muss noch eine Toolchain (Compiler und Linker) eingestellt werden, sonst kann man weder Header Dateien einbinden, noch compilieren. Ich bin nicht mehr auf dem neuesten Stand, wahrscheinlich aber, kann man irgendwie den gcc einhängen.
 
Zuletzt bearbeitet:
Zurück
Oben