MARTIN hat geschrieben:Ich bin da anderer Meinung, zunächst sollte man unbedingt C lernen.
Das finde ich falsch. Das ist eine Pauschalaussage die sich leider so
allgemein eingebürgert hat, aber dafür gibt es keinen Grund.
Eigentlich ist genau das Gegenteil der Fall:
Wer gleich C++ nimmt, lernt dort am Anfang auch gleich
Funktionen kennen.
Wer OOP mit C++ lernt, benutzt dort auch Funktionen - nur
sind diese dann in einer Klasse zusammengefasst.
Prozedurale Programmierung ist in C++ genauso enthalten.
Und auch in den anderen OOP-Sprachen lernt man Funktionen
zu schreiben, nur sind diese dann in einer Klasse. Eine Methode
einer Klasse ist nichts weiter als eine Funktion, die auf die Daten
der Klasse angewandt wird.
Boolsche Ausdrücke usw. (was Kaeru Gaman sagte) lernt man
mit C++ genauso, ohne vorher C zu können.
C, C++, C# und Java nutzen die gleiche
Grundsyntax bei
Schleifen, Variablendeklarationen, Bedingungen usw.
Das heißt für diese Dinge braucht man nicht erst C zu lernen,
sondern lernt es auch wenn man gleich mit C++, C# oder Java
anfängt.
Der einzige bedeutende Unterschied zwischen C und C++
sind am Ende die C-Funktionen. Darüber hinaus bietet C++
nur noch viel mehr.
Wer erst C lernt, schreibt danach sehr häufig kein sauberes
C++ mehr, sondern wird immer wieder C verwenden, was
sehr unkomfortabel und fehleranfällig ist. Keine Strings, keine
Ausnahmebehandlung usw.
Selbst bei Leuten die sich selbst schon als gut in C++ einschätzen,
habe ich das schon sehr oft gesehen. Verlangt man dann bei-
spielsweise das sie eine Funktion 'Str()' wie in PB selbst schreiben,
kommen sie erstmal ins grübeln, und schustern dann oft etwas
mit 'sprintf()' oder so zusammen, also eine C-Funktion.
Für einen Neueinsteiger halte ich es von daher für besser
gleich etwas Richtiges wie C++, C# oder Java zu nehmen,
anstatt mit dem primitiven 'Highlevel-ASM' C anzufangen.
Das verwirrt sie oftmals nur und gefährdet von vornherein
eine spätere saubere Arbeitsweise mit den OOP-Sprachen.
Sie gewöhnen sich an unsichere Programmierung, daran das
es in C keine Strings gibt, und an die C-Funktionen. Das ist
dann meist nur sehr schwer wieder rauszubekommen, wie
die Praxis oftmals zeigt.
Anwendungs- und Spieleprogrammierung kann komplett
gemacht werden ohne vorher erst C lernen zu müssen.
Wer die großen Sprachen kann und dann wirklich mal C
braucht, z.B. um am Linux-Kernel rumzuspielen, der kann
dann immernoch sehr schnell C lernen, da derjenige eben
schon Programmiererfahrung hat. Für viele Leute wird das
aber garnicht mehr nötig sein.
Pauschal zu sagen "lerne erstmal den niederen Dreck, und
dann das Richtige", ist also meiner Meinung nach schlicht falsch.
Lerne gleich das Richtige und lass den uralten Dreck einfach!
Belastet nur das Gehirn mit unnötigem Zeug und verdirbt
oftmals die Programmierweise, da dann Alt und Neu gemixt
werden, da man Alt schon länger gewohnt ist.
Wer ein Buch zur Objektorientierten Programmierung sucht,
welches gleich als Beispielsyntax C++ verwendet, sollte sich
das folgende Buch anschauen:
Objektorientiertes Programmieren mit Beispielen und Übungen in C++ von Ute Claussen
Da die Grundsyntax bei C++, C# und Java gleich ist und es
viele Ähnlichkeiten gibt, fällt es Programmierern einer dieser
Sprachen relativ leicht auch eine Andere davon zu lernen,
wodurch man nicht mehr ganz von vorn anfangen muß und
schon Grundwissen mitbringt.
Da kann das folgende Buch hilfreich sein, da es einen Überblick über
4 Sprachen und deren Unterschiede und Gemeinsamkeiten gibt:
Objektorientierte Programmiersprachen.
Einführung und Vergleich von Java, C++, C# und Ruby
Habe hier eine Liste von den guten Büchern zum Thema C++
aus meiner Bibliothek, falls jemand sowas sucht:
Einführung:
-
C++ Entpackt
-
Die C++-Programmiersprache
-
Ruminations on C++
-
Die C++- Standardbibliothek
-
Das C++ Codebook
Fortgeschritten:
-
Effektiv C++ programmieren
-
Mehr Effektiv C++ programmieren
-
Exceptional C++
-
Inside the C++ Object Model
"Profi":
-
C++ Gems
-
More C++ Gems
-
Modernes C++ Design
Speziell OOP:
-
Objektorientiertes Programmieren
-
Designing Object-Oriented C++ Applications Using the Booch Method
-
Objektorientierte Programmiersprachen
Das erste, C++ Entpackt, ist leider ausverkauft. Der Nachfolger
ist
C++ vom selben Autor.
Alternativ könnten für Anfänger
C++ Primer oder
C++ interessant
sein, beide von Stanley B. Lippman + Josée Lajoie und sehr bekannt.
Es gibt auch eine komplette englische 'C++ In-Depth Series':
http://www.informit.com/series/series.a ... 34643&rl=1
http://www.informit.com/series/series.a ... age=2&rl=1
Sind insgesamt 12 Bücher auf den beiden Seiten.
Einige der Bücher aus meiner obigen Liste sind deutsche
Übersetzungen aus der C++ In-Depth Serie.
Wer Profi in C++ werden möchte, hat auf jeden Fall einen
langen Weg und viel Spaß vor sich. Nach dem ersten Anfängerbuch
kann man zwar loslegen und Programme schreiben, aber zum
Profi gehört eben mehr. Zum Beispiel das er viele Techniken,
Tipps&Tricks und OOP-Design vollkommen beherrscht.
Erfahrung gehört auch dazu, und die kommt ja auch nicht
durch lesen eines Anfängerbuches, sondern durch jahrelanges
anwenden der Sprache in der Praxis und vorheriges erlesen
von Expertenwissen.
Was man auch immer wieder sieht, daß ist das sich viele Leute
(gerade die Jüngeren) schnell irgendein C++ Tutorial aus
dem Netz ziehen und dann damit richtig C++ lernen wollen.
Das funktioniert nicht. Für den Anfang kann das reichen,
aber geballtes Expertenwissen findet man nur in den entspr.
Büchern. Wer richtig gut werden möchte, der wird nicht drum
herum kommen sich nach und nach eine kleine Bibliothek mit
Expertenwissen aufzubauen.
Das kostet Geld und nennt man 'Investition in seine Zukunft'.
Das fängt vielleicht mit 29,90 Euro klein an, ist aber nach oben
hin unbegrenzt. Nach 10 oder 20 Jahren hat sich da meist
einiges angesammelt.
Wer Java lernen möchte kann direkt damit loslegen und braucht vorher kein C zu lernen.
Wer C# lernen möchte kann direkt damit loslegen und braucht vorher kein C zu lernen.
Wer C++ lernen möchte kann direkt damit loslegen und braucht vorher kein C zu lernen.