Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>C++ lernen

C++ lernen

FotoJo04.05.1121:40
Hallo,

ich würd mir selber in den nächsten 4 Monaten oder so gerne selber C++ beibringen, zumindest würde ich es nach dieser Zeitspanne gerne "relativ" gut beherrschen.
Ich bringe mit: Motivation und Begeisterung für Computer und Computersprachen
Ich bringe nicht mit: Erfahrung (zumindest nicht sehr viel, ein ganz kleines bisschen C )

Welches Buch empfehlen mir die hier anwesenden Guru's ?

Danke!
„Echte Kerle essen keinen Honig, sie lutschen Bienen.“
0

Kommentare

pismo04.05.1121:57
Bin zwar kein Guru, aber ich war vor wenigen Wochen in einer ähnlichen Situation und mir wurde von zwei Informatik-Universitätsprofessoren unabhängig voneinander geraten Java zu erlernen.

Natürlich soll es hier keine Diskussion Für / Wider Java / C++ werden, aber ich dachte ich informiere dich mal, bzw. stelle es mal in den Raum, vielleicht können ja die erfahrenen Programmierer ihre Meinung dazu kund tun.
0
MacMark
MacMark04.05.1122:16
C++ ist irrelevant auf OS X und iOS. Lern lieber Objective-C, wenn Du hier was werden willst.
„@macmark_de“
0
FotoJo04.05.1122:26
ich habe mich für C++ entschieden.
Aus welchem Grund?
hm, also ich bin switcher, bin durchaus noch gut mit Windows vertraut, zweitens fange ich im Herbst ein Informatikstudium an. Dort beginnt man dann mit Java, aber ich möchte nicht NUR Java können.
Objective-C ist doch auch eng mit C++ verwand, und erfordert ja dann auch nicht soviel dazulernen, oder?
„Echte Kerle essen keinen Honig, sie lutschen Bienen.“
0
lasergans04.05.1122:36
Das einzige was c++ und objc gemein haben, ist die c Wurzel. Ansonsten haben sie unterschiedliche Ansätze. Meiner Meinung nach ist es schwerer umzusteigen, als neu einzusteigen, da man immer noch das alte im Kopf hat. Auf den Mac kannst zwar theoretisch auch mit c++ oder Java arbeiten, aber wenn du mehr machen willst bzw vor allem auf dem iPhone ist objC Pflicht allein wg dem cocoa Framework.. Java ist natürlich plattformunabhängig - auch interessant. C++ ist einfach sehr verbreitet.
0
Navier-Stokes
Navier-Stokes05.05.1111:12
pismo
...
und mir wurde von zwei Informatik-Universitätsprofessoren unabhängig voneinander geraten Java zu erlernen.
...
Bitte sag, dass diese beiden Professoren nicht einfach banal behauptet haben, man solle lieber Java lernen. Denn so eine Aussage ist einfach nur dumm und ignorant und zeigt, wie beschränkt die Welt sein kann, in der manche Leute leben.
FotoJo

... fange ich im Herbst ein Informatikstudium an. Dort beginnt man dann mit Java, ...
In einem Informatikstudium lernt man keine Sprache und auch nicht das Programmieren. Da musst Du schon selber Deine Erfahrung aufbauen. Da Du aber als Informatiker beruflich natürlich viel mit dem Programmieren zu tun haben wirst, sollte der Schwerpunkt deiner Interesse langfristig weniger auf einer speziellen Sprache als auf der Fähigkeit Problemlösungen zu implementieren liegen. Das heißt aus meiner Sicht - und diese Aussage ist mit meiner persönlichen und subjektiven Vorliebe gefärbt: Lerne den Umgang mit C oder Fortran, eben weil es nicht objektorientiert ist. Wenn man so wie ich viel Numerik betreibt ist es von unermesslichem Wert zu verstehen, was der Compiler aus Deinem Code macht und welche Schritte die CPU zu erledigen hat. Wenn es auf Performance ankommt musst, Du auf vieles achten (z.B. Zeitpunkt und Reihenfolge der Zugriffe auf Speicher, effiziente Adressberechnung (ein *ptr++ gegenüber einem ptr[i] in einer Schleife wirkt manchmal Wunder), schnelle Berechnung von arithmetischen Ausdrücken, und vieles mehr), Dinge die man vernachlässigt, wenn man nur noch Klassen und Methoden bedient. Wie oft schon habe ich mich z.B. darüber geärgert, wenn man in einer Schleife eine Methode benutzt, die jedes mal einen Batzen Speicher anlegt (das ist ein Systemaufruf, bei dem der Punk abgeht), ein Ergebnis abliefert und dann den Speicher wieder frei gibt. Sei es auch nur der Fall, dass mal eben eine kleine Containerklasse (String, Vector, Hash, etc) erzeugt, benutzt und wieder zerstört wird. Das ist dann wie Fahren mit Handbremse. Wenn man gleich mit C++, ObjC, Java und Co anfängt, bekommt man nie ein Gespür für solche Dinge. Gerade Java verleitet obendrein zum Herumasen mit Speicher: "Is ja egal, wir haben einen GarbageCollector! Java ist eben sicher!" Und wenn ich sehe, wie manche selbsternannten Java-Gurus code produzieren, kriege ich das *sick* .
Wir haben durchaus schon richtig objektorientierten C++ code in gut optimiertes C umgeschrieben und Geschwindigkeitssteigerungen von Faktor 20 gehabt!!! Nichts gegen Objektorientierung, aber dann bitte richtig.

Ein C++ Buch kann ich Dir leider nicht empfehlen, kenne kein gutes zum Einstieg. Wenn Du allerdings jetzt schon weißt, dass Ihr an der Uni viel mit Java rummacht, empfiehlt sich tatsächlich jetzt auch schon ein Einstieg in Java. Aber bitte vergiss nicht, Dir die reinen prozeduralen Sprachen näher anzuschauen

„Computer Science is no more about computers than astronomy is about telescopes. (Edsger W. Dijkstra)“
0
Navier-Stokes
Navier-Stokes05.05.1111:20
Hast Du eine Zielplattform vor Augen - etwa iOS - kannst Du immer noch in relativ kurzer Zeit die zugehörigen Frameworks lernen und erfolgreich anwenden. Aber es ist nur allzu sinnvoll, halbwegs geradeaus programmieren zu können (Sprache ist fast egal) , bevor man ernsthaft versucht, Software zu machen. Sonst wirst Du Fehler machen, die Du nicht verstehst und in Folge dessen auch nicht lösen kannst.
„Computer Science is no more about computers than astronomy is about telescopes. (Edsger W. Dijkstra)“
0
Frank
Frank05.05.1111:46
Zurück zum Thema. Ich habe dieses Buch in einer der ersten Auflagen:

http://www.addison-wesley.de/main/main.asp?page=home/bookdetails&ProductID=181691

War ganz o.k. Ich war aber auch damals kein Anfänger mehr.

Ich denke C++ ist zum "Programmieren lernen" eher mittelgut geeignet.

Und wie schon ein anderer hier anmerkte. An der Uni lernst du nicht Programmieren. (Ein Bauingenieur lernt da ja auch nicht maurern). Von daher schadet es nicht, sich vorher mal mit Java zu befassen. Java ist sicher nicht optimal, aber es hat aus den Fehlern von C++ gelernt. Und ich denke es eignet sich gut zum Lernen.
0
christiancrt
christiancrt05.05.1112:11
Es gibt eine Menge Gründe das Programmieren nicht mit C++ anzufangen. Hauptgrund sollte die Komplexität und gerade auch die breiten Anwendungsmöglichkeiten sein (Das erleichtert das Googeln nach einem bestimmten Problem ungemein und vermeidet so auch übermäßigen Frust). Was man heute aber auf jeden Fall benötigt ist C, denn sowohl obj-c als auch c++ und c# bauen darauf auf und da Java an C++ angelehnt ist, würde ich sagen, dass dir das die richtige Grundlage bietet.
http://openbook.galileocomputing.de/c_von_a_bis_z/
Ich weiß nicht, ob dieses Buch wirklich gut für Einsteiger ist, aber es ist zumindest kostenlos und als ich mein C aufgefrischt habe, hat mir das Buch sehr geholfen.
Nicht jedes Kapitel dort wird relevant sein, aber Dinge wie Speicherverwaltung und Zeiger etc. sind auf jeden Fall nicht verkehrt zu lernen.
Wenn du das in einem oder 2 Monaten drauf hast, dann kannst du mit einer höheren Sprache weiter machen. Und dabei kann ich dir dann auch empfehlen dich nicht auf die Sprache, sondern eine Plattform zu konzentrieren, zum Beispiel iOS (und dafür dann cocoa touch und obj-c) und dann nachschauen, was du dafür brauchst. Denn sobald man sich mit einer Sache auskennt, kann man auch Erfahrungen in der eigentlichen Tätigkeit des Programmierens lernen und sehen, ob es was für einen ist. Je leichter dein Einstieg, je höher die Motivation sich auch in kompliziertere Systeme zu wagen. Wenn du dich richtig reinhängst, kannst du in 4 Monaten vielleicht einen Taschenrechner mit Funktionsgraph auf dem von dir ausgesuchten System schaffen.
0
andreas_g
andreas_g05.05.1112:14
Navier-Stokes
Lerne den Umgang mit C oder Fortran, eben weil es nicht objektorientiert ist.

Wenn ich hier kurz anknüpfen darf ...

Welchen Weg würdest du empfehlen als totaler Anfänger in das Programmieren mittels C einzusteigen?

Kannst du bestimmte Literatur empfehlen?
0
Navier-Stokes
Navier-Stokes05.05.1112:33
Leider kenne ich keine gute Literatur, habe selbst den Einstieg mit den Handbüchern vom RRZN angefangen. Das ist aber keine gute Idee.
Sollte ich jetzt nochmal nach Literatur suchen, würde ich entweder google bemühen um hilfreiche und kostenlose online-Bücher oder online-Kurse zu finden oder in den Buchladen gehen und dort mal in Ruhe mehrere Bücher durchblättern und das mitnehmen, was mir am besten gefällt (eventuell bei amazon rezensionen anschauen).
Ich würde darauf achten, dass ein Buch auch etwas Hintergrundwissen vermittelt. Auch wenn das auf den ersten Blick nicht schnell genug zum gewünschten Ziel führt.
„Computer Science is no more about computers than astronomy is about telescopes. (Edsger W. Dijkstra)“
0
ExMacRabbitPro05.05.1113:07
Bruce Eckel, Thinking in C++
Damit habe ich C++ vor Jahren gelernt.

Und ansonsten immer griffbereit daneben haben:
Brian Kernighan & Dennis Ritchie, The C Programming Language
0
Navier-Stokes
Navier-Stokes05.05.1113:20
Der Bruce Eckel hat meinungstechnisch die Gruppen gespalten. Also ich weiß, dass viele Bekannte von mir das Buch nicht gut fanden.
Edit:
Ach ich sehe gerade, dass es um das C++ Buch geht. Ich dachte erst an "Thinking in Java".
„Computer Science is no more about computers than astronomy is about telescopes. (Edsger W. Dijkstra)“
0
ExMacRabbitPro05.05.1113:24
Navier-Stokes
Der Bruce Eckel hat meinungstechnisch die Gruppen gespalten. Also ich weiß, dass viele Bekannte von mir das Buch nicht gut fanden.
Edit:
Ach ich sehe gerade, dass es um das C++ Buch geht. Ich dachte erst an "Thinking in Java".

Er hat nach C++ gefragt. Warum sollte ich dann ein Java Buch Empfehlen?
0
FotoJo07.05.1110:05
hm, danke für die Tipps.

Also um es vorwegzunehmen, ich habe nicht gemeint, dass ich in der Uni dann Java wie das jetzige G8 in der Schule lernt. Mir ist schon klar, dass man da durchaus sehr viel selber dafür tun muss.
Aber vllt habt ihr recht und ich sollte doch gleich mit Java anfangen.... na toll...
„Echte Kerle essen keinen Honig, sie lutschen Bienen.“
0
MacMark
MacMark07.05.1110:16
Java ist unkomplizierter als C++, C und Objective-C . Lern das, was Dich persönlich am meisten interessiert. Wenn Du C++ irgendwann kannst, dann wirst du keinerlei Probleme mit Java haben. Java ist eine der am einfachsten zu lernenden Sprachen, die ich kenne.
„@macmark_de“
0
gfhfkgfhfk14.05.1119:57
FotoJo
Welches Buch empfehlen mir die hier anwesenden Guru's ?
Accelerated C++ von Koenig & Moo
C++ Primer von Lippman
0
Laphroaig
Laphroaig14.05.1120:54
FotoJo
Aber vllt habt ihr recht und ich sollte doch gleich mit Java anfangen

Bekehrt Dann ist die Java-Insel sicher ein guter Einstieg: . Ist auf Deutsch, das eBook gratis und wird an meiner Uni auch allen zum Einstieg empfohlen.
0
re:com15.05.1100:37
Laphroaig
FotoJo
Aber vllt habt ihr recht und ich sollte doch gleich mit Java anfangen

Bekehrt Dann ist die Java-Insel sicher ein guter Einstieg: . Ist auf Deutsch, das eBook gratis und wird an meiner Uni auch allen zum Einstieg empfohlen.

Die Java Insel ist doch mehr Nachschlagewerk als ein gutes Anfängerbuch ...
0
yan.kun15.05.1100:52
Java von Kopf bis Fuß. Das beste Buch, um einen einstieg zu finden, wenn man gar keine, bis nur ein "bisschen C" Erfahrung hat. Definitiv besser als diese ganzen trockenen Bücher, die einem den Spaß schnell verderben

Und Java stellt aus meiner Sicht den besseren Einsteig dar, da die Lernkurve steiler ist. C++ ist ein sehr steiniger Weg, für den man Jahre braucht, um ihn zu bewältigen.
0
MacMark
MacMark15.05.1111:26
re:com
… Die Java Insel ist doch mehr Nachschlagewerk als ein gutes Anfängerbuch ...

Nein. Der "Ulli" hat jahrelange Erfahrungen mit Java-Schulungen und sein Buch eignet sich gut für Anfänger. Außerdem ist es recht flüssig lesbar. Wenn jemand Java lernen will, empfehle ich es auch immer: Kann man kaufen oder runterladen oder online lesen.
„@macmark_de“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.