Nabend Leute, bald ist ja wieder Weihnachten und da habe ich mir gedacht kannst dir ja auch mal ein Buch schenken lassen. Wobei sich mir die Frage stellt was kann man später im Beruf als E-Bachelor besser gebrauchen, C oder C++ oder doch gar C#? Dann stellt sich noch die Frage welches Buch ist überhaupt brauchbar. Ich kann sagen Programmierkenntnise sind vorhanden. Also Grundlagen-C, Java, PHP, Matlab usw. ... Wie gesagt am liebsten ist mir ein Buch über eine Programmiersprache die ich auch in Zukunft gut gebrauchen kann und wo das Buch sogar evtl. als Nachschlagewerk dienen kann. Vielen Dank schonmal im vorraus. :)
Ich finde die "galileo computing" Bücher gut. Kannst teilweise komplett als OpenBook runterladen und Dir dann doch die Papierversion gönnen.
Wenn es denn C sein soll und schon Grundlagen vorhanden sind ganz klar der K&R.
lager schrieb: > Ich finde die "galileo computing" Bücher gut. > Kannst teilweise komplett als OpenBook runterladen und Dir dann doch die > Papierversion gönnen. Ja darüber habe ich auch nachgedacht das "C von A bis Z" zu nehmen, dann kann man das auch mal in Ruhe gemütlich lesen ohne aufm Bildschirm starren zu müssen. Gibts sonst noch gute Bücher? Offtopic: Ich habe mal bei Amazon die allgemein C-Bücher angesehen auch die Benutzerwertung. Ist da schonmal jemandem aufgefallen, dass dort immer der gleiche Benutzer alle Bücher schlecht bewertet? Aber jedes mal auch mit sehr ausführlicher Kritik?
Studi schrieb: > Gibts sonst noch gute Bücher? Schau auch mal hier http://www.cppbuch.de/ Der C++ Programmierer das Lehr- und Lernbuch von Ulrich Breymann, 985 Seiten, mit DVD, Hanser Verlag, 2. Auflage 2011, ISBN 978-3-446-42691-7
Studi schrieb: > Ist da schonmal jemandem aufgefallen, dass dort immer > der gleiche Benutzer alle Bücher schlecht bewertet? Ausgenommen seine, nehme ich an. ;-)
Studi schrieb: > Ist da schonmal jemandem aufgefallen, dass dort immer > der gleiche Benutzer alle Bücher schlecht bewertet? Aber jedes mal auch > mit sehr ausführlicher Kritik? Du kannst ja mal bei http://www.c-plusplus.de/forum/f65 reinschauen. In dem Forum kannst du auch mal nach galileo bzw. dem Autor der Bücher suchen.
der c++ primer ist imho das standardwerk. ich würd dir eher empfehlen c# zu machen da die sprache schnell zu erlernen ist und für desktopanwendungen super geeignet ist. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Straustrup ist meiner Meinung nach das beste für C++, war aber hier eher das dritte oder vierte Buch zu dem Thema. Wenn man Staunen will, dann den Alexandrescu.
Finger weg von den Galileo Büchern!!!!! Enthalten viele kleine, nicht sofort für Anfänger erkennbare Fehler. ( http://www.c-plusplus.de/forum/272350-full ) Entscheide dich, ob du C oder C++ lernen willst. Klar setzt C++ auf C auf, aber wenn du C und C++ als eigenständige Sprachen siehst, kannst du viel mehr aus beiden Sprachen rausholen. Die Art und Weise, wie man C++ programmiert, unterscheidet sich komplett von C. Wenn du C++ Code siehst, der voll mit new/delete ist, kannst du davon ausgehen, dass derjenige C++ nicht kapiert hat. Für C++ würde ich "Der C++ Programmierer" empfehlen. Wenn du dann mal etwas Erfahrung durch kleinere private Programmierprojekte gesammelt hast, kann ich auch noch folgendes empfehlen: "Effektiv C++ programmieren". Das Buch von Bjarne Stroustrup (Erfinder von C++) hab ich auch daheim liegen, es liest sich vergleichsweise schwer. Es ist meiner Meinung nach nicht als Lehrbuch für Anfänger gedacht. Wenn man dann mal genug Erfahrung gesammelt hat, ist es aber durchaus interessant! Und nochwas: Da hier der Tipp gefallen ist, C# zu verwenden: Ich würde davon abraten. Wenn du C++ kannst, kannst du locker auf C# umsteigen. Umgekehrt: keine Chance! C# ist im Gegensatz zu Java nur für Microsoft Betriebssysteme vorhanden (Mono kann man für kommerzielle Zwecke vergessen), dir muss also bewusst sein, dass du dich mit C# an Microsoft bindest, und jeder möge selber entscheiden, ob er seine berufliche Karriere von so einer Firma abhängig machen möchte. Deine Entscheidung, C und/oder C++ zu erlernen ist schon ok, das sind nämlich 2 sehr solide Sprachen. Ich hab auch ET studiert, und programmiere jetzt in C++ für embedded systems die darauf laufende Software, und kann dir sagen: Diese Sprache wird noch lange der Standard für embedded systems bleiben.
gdfgdfg schrieb: > Wenn du C++ kannst, kannst du locker auf C# umsteigen. > Umgekehrt: keine Chance! Käse. Mit C# lernt man zuerst eine einfachere Sprache und kann damit später leichter C++ erlernen. Das ist einfacher als direkt in C++ einzusteigen.
avr schrieb: > Käse. Mit C# lernt man zuerst eine einfachere Sprache und kann damit > später leichter C++ erlernen. Das ist einfacher als direkt in C++ > einzusteigen. Das sind dann die Leute die sich in Firmen als C++ Programmierer bewerben und nach kurzer Zeit wieder rausgeschmissen werden weil sie einfach nicht in der Lage sind, vernünftig C++ zu programmieren. In der Arbeit darf ich mich mit folgenden Konstrukten rumplagen: class xy { public: T& getT() { if(m_T==0) throw new NullPtrException(); return *m_T; } ... private: T* m_T; }; Ich denke, jeder der C++ kann sieht die Probleme sofort. Und das auf embedded systems, wo der Kunde dann sagt, die Kiste läuft langsam. Naja, warum wohl... Sowas fabriziert nur ein Java oder C# Progger der meint, dank seiner immensen Erfahrung in C# und Java nun auch in C++ so weiterprogrammieren zu können. Daher kann ich jedem, der sich intensiv mit der Programmierung von schwachen Rechnern rumplagen will, nur zu C/C++ raten, und nicht zu C#.
Hallo, gdfgdfg schrieb: > class xy > { > public: > T& getT() > { > if(m_T==0) > throw new NullPtrException(); > > return *m_T; > } > ... > > private: > T* m_T; > }; hmm, Gott sei Dank verdiene ich nicht mein Geld als C++ Programmierer, was gibt es denn daran, abgesehen von einigen Designentscheidungen, die ohne nähere Informationen nicht zu beurteilen sind, jetzt auszusetzen? Würde mich sehr interessieren, denn leider sehe ich die Probleme nicht sofort, bitte kläre mich auf! Vlg Timm
gdfgdfg schrieb: > Daher kann ich jedem, der sich intensiv mit der Programmierung von > schwachen Rechnern rumplagen will, nur zu C/C++ raten, und nicht zu C#. Jeder, der schwache Rechner programmiert sollte von OOP die Finger lassen. Ja man kann mit C++ auch nicht objektorientiert programmieren, aber ist das der Sinn? Dann lieber gleich C. Woher weisst du daß es dem TO um embedded oder gar um 8 Bit µCs geht? gdfgdfg schrieb: > Sowas fabriziert nur ein Java oder C# Progger der meint, dank seiner > immensen Erfahrung in C# und Java nun auch in C++ so weiterprogrammieren > zu können. Stimmt, ein C++ Programmierer bekommt vom Compiler umgekehrt sofort auf die Finger gehauen, wenn er in Java oder C# versucht schmutzige Tricks anzuwenden :-) Für jedes Problem / Rechnerplattform die passende Sprache wäre meine Präferenz. gdfgdfg schrieb: > Wenn du C++ Code siehst, der voll mit new/delete ist, kannst du davon > ausgehen, dass derjenige C++ nicht kapiert hat. Das hätte ich gerne mal näher erläutert? Bist du sicher daß du C++ und nicht C mit ein paar Synatxerweiterungen von C++ meinst?
Udo Schmitt schrieb: > Woher weisst du daß es dem TO um embedded oder gar um 8 Bit µCs geht? Es geht mir bei der Entscheidung darum möglichst gut für den Beruf vorbereitet zu sein. Daher auch meine Frage was am meisten gebraucht wird. Ich denke auch das C++ wohl eher für den PC und C für die Hardware geeignet ist. In C/C++ habe ich schon ein paar Grundlagen gesammelt, aber ich würde nicht behaupten wirklich gut C/C++ programmieren zu können. Daher würde ich mich mal richtig hinter eine von beiden Programmiersprache hängen um auch brauchbare Ergebnise erzielen zu können. Daher auch die Frage nach einem guten Buch um auch ein solides Basiswissen haben und danach auch brauchbare Ergebnise erzielen zu können.
gdfgdfg schrieb: > Das sind dann die Leute die sich in Firmen als C++ Programmierer > bewerben und nach kurzer Zeit wieder rausgeschmissen werden weil sie > einfach nicht in der Lage sind, vernünftig C++ zu programmieren. Also jeder der mit c# anfängt kann nicht programmieren oder wie? > Ich denke, jeder der C++ kann sieht die Probleme sofort. > Und das auf embedded systems, wo der Kunde dann sagt, die Kiste läuft > langsam. Naja, warum wohl... Besser als wenn der Kunde sagt das Programm stürzt dauernd ab. Auf einem µC ist es vielleicht verständlich aber auf einem PC birgt das fast keine Leistungseinbußen. > Sowas fabriziert nur ein Java oder C# Progger der meint, dank seiner > immensen Erfahrung in C# und Java nun auch in C++ so weiterprogrammieren > zu können. > Daher kann ich jedem, der sich intensiv mit der Programmierung von > schwachen Rechnern rumplagen will, nur zu C/C++ raten, und nicht zu C#. Für µC bin ich ganz klar für C/C++. Beim PC, besonders bei GUIs will ich nicht mehr auf den c# Designer verzichten.
Studi schrieb: > Es geht mir bei der Entscheidung darum möglichst gut für den Beruf > vorbereitet zu sein. Daher auch meine Frage was am meisten gebraucht > wird. Ich denke auch das C++ wohl eher für den PC und C für die Hardware > geeignet ist. In den Firmen wird C für Mikrocontroller verwendet, C++ für embedded systems, aber auch PC Programme wo es auf die Performance ankommt, und PC Programme die portabel sein sollen. C# ist eher für Desktop Anwendungen geeignet. Letztlich musst du selbst wissen, in welche Richtung du gehen willst. Mit C wirst du keine Geschäftssoftware modellieren, genauso wenig wie du einen Mikrocontroller mit C# programmieren wirst. > class xy > { > public: > T& getT() > { > if(m_T==0) > throw new NullPtrException(); > > return *m_T; > } > ... > > private: > T* m_T; > }; > >hmm, Gott sei Dank verdiene ich nicht mein Geld als C++ Programmierer, >was gibt es denn daran, abgesehen von einigen Designentscheidungen, die >ohne >nähere Informationen nicht zu beurteilen sind, jetzt auszusetzen? Würde >mich sehr interessieren, denn leider sehe ich die Probleme nicht >sofort, bitte kläre mich auf! Problematisch an dem Code ist folgendes: 1.) Die Membervar. m_T ist als Pointer angelegt. Das heißt, sie kann gesetzt sein oder eben auch nicht (ist dann also 0). Es ist offensichtlich ein normaler Zustand, wenn die Variable 0 ist. Warum gibt man an dieser Stelle nicht einfach m_T zurück? Der Anwender der Klasse soll dann selber auf 0 prüfen. Wenn aber eine Exception geworfen wird habe ich genau die gleiche Information, nämlich m_T==0, nur mit viel mehr Performanceeinbusen, denn ich muss ein try catch machen zum Fangen der Exception. Andernfalls mach ich einfach if(ptr!=0). Da man eine Referenz zurückgibt, hat man von außen vollen Zugriff auf die Klasseninternas. So gesehen ist auch das kein Vorteil gegenüber einem einfach T* getT(){return m_T;} 2.) Wenn man schon Exceptions verwendet, dann bitte nicht mit new werfen. Wehe es wird dann im catch Block nicht ein delete aufgerufen. Schon gibt es ein Speicherleck. Außerdem führt das zu ziemlich blöden Code: try {...} catch(MyException* e) {delete e;} catch(...) {} Es ist also nicht möglich, mit einem catch(...) Block alle Esxeptions zu fangen, sondern es ist immer eine Sonderbehandlung für die am Heap angelegte Exception nötig. >Jeder, der schwache Rechner programmiert sollte von OOP die Finger >lassen. >Ja man kann mit C++ auch nicht objektorientiert programmieren, aber ist >das der Sinn? Dann lieber gleich C. C++ bietet weitaus mehr als OOP. Wirklich langsam wird OOP erst, wenn mans mit den Klassenhierachien übertreibt und alles polymorph macht. Wenn man hingegen OOP verwendet, um z.B. Speicherlecks zu vermeiden, so ist mit minimalen Performanceeinbusen sehr viel an Sicherheit gewonnen. An der Stelle sind RAII und Smart Pointers zu erwähnen, die meiner Meinung nach viele Vorteile bringen.
Ach und nochwas @Studi: Schau dir auf einer Jobplattform einfach mal an, welche Programmiersprachen für welche Aufgaben verwendet werden. Dann überlegst du dir: Will ich in diese Branche? Wenn ja, dann weißt du ja auch schon, welche Programmiersprache du lernen musst, um das zu erreichen.
Also ich fand den K&R nie wirklich gut. Besser gefallen hat mir: http://www.amazon.de/C-Programmierung-Unter-Linux-UNIX-Windows/dp/3938626224/ref=sr_1_7?ie=UTF8&qid=1351802590&sr=8-7
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.