PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++: Ist dieses Lehrbuch geeignet?



pilerC
01.02.2017, 14:16
Hallo,
ich möchte C++ lernen (lerne seit ein paar Monaten C++). Ein Freund von mir hat noch ältere Bücher über Programmiersprachen rumliegen.
Nun meine Frage: Kann ich ein Buch von 1999 benutzen um C++ zu lernen, oder ist es schon veraltet? Das Buch beinhaltet das Thema C und C++.
Hier ist ein Link auf Amazon zu dem Buch:
https://www.amazon.de/Softwaretechnik-Modulare-objektorientierte-generische-Programmierung/dp/3446182012/ref=asap_bc?ie=UTF8

herzlichen Dank

Mxt
01.02.2017, 14:58
Hallo,

ich kenne das Buch nicht, um die Grundlagen von C wie Schleifen usw. zu lernen ist es vielleicht noch geeinget.

Es sollte aber klar sein, dass insbesondere C++ sich seit damals sehr verändert hat.

Darauf dass dort der ANSI Standard beschrieben wird, sollte man nicht mehr viel geben. Seit 1998 wurde die ANSI/ISO C Norm zweimal (1999 und 2011) und die für C++ viermal überarbeitet (2003, 2011, 2014, 2017). Zumindest C99 wird im Buch ja anscheinend erwähnt, aber C++11 war insgesamt der größte Entwicklungsschritt.

Dann wird da im Buch noch ein spezieller Dialekt von Microsoft beschrieben, den es so seit 2005 nicht mehr gibt.

Peter(TOO)
01.02.2017, 17:33
Hallo,

Zum Stand des Buches wurde schon einiges geschrieben.

Es gibt noch ein anderes Problem:
Nicht jedes gute Buch passt auch gut zu jedem Leser.

Ich kann schon eine ganze Menge unterschiedliche Programmiersprachen, als Einstieg komme ich mit dem Referenz-Handbuch am schnellsten zu recht.

MfG Peter(TOO)

shedepe
02.02.2017, 08:24
Meiner Ansicht und Erfahrung nach hilft es viel mehr sich ein Grundlagen Tutorial durchzulesen. Ein bisschen die Dokumentation durchzublättern und dann versuchen selber einige Programme zu schreiben. Bei der Fehlersuche lernt man meiner Ansicht nach wesentlich mehr als einem irgendein Buch vermitteln kann.

Im folgenden noch ein paar Links die dir weiterhelfen könnten:

http://www.cplusplus.com/reference/
https://de.wikibooks.org/wiki/C%2B%2B-Programmierung

Und wenn du wirklich ein Buch haben willst, würde ich dir das Werk von Bjarne Stroustrup (dem C++ Erfinder) empfehlen: https://www.amazon.de/Die-Programmiersprache-Aktuell-Bjarne-Stroustrup/dp/3446439617/ref=sr_1_1?ie=UTF8&qid=1486023781&sr=8-1&keywords=die+c+programmiersprache

Da geht es um weit mehr als nur die Sprachkonstrukte, sondern auch um die Standardbibliothek bzw. den "Intended use" der Sprache.

pilerC
02.02.2017, 12:40
Hallo und danke für eure Antworten!
So wie es aussieht, ist es wohl besser für mich ein aktuelleres Buch zu besorgen.
Werde dieses Buch aber trotzdem behalten, kann vielleicht mal weiter helfen.

Ich liste euch mal die Kapitel von dem Buch auf (von 1999):

I. Die Sprache C und modulare Softwareentwicklung
1. ANSI/ISO-C, Clean-C und Better-C
2. ANSI/ISO-C-Standardbibliothek
3. Modulare Programmierung
II. Datenstrukturen, Algorithmen, ADTs, Container
4. Sortieren, Suchen und Zeitkomplexität
5. Dynamische Datenstrukturen
6. Container Strukturen
7. Automaten in der Softwaretechnik
III. Die Sprache C++ und ihre SOftwaretechniken
8. Von ANSI/ISO nach ANSI/ISO C++ - ein Überblick
9. Objektorientierte Programmierung
10. Objektorientierte und Generische Softwareentwicklung
11. ANSI/ISO-C++-Standardbibliothek

HaWe
02.02.2017, 13:21
hallo,
am Inhaltsverzeichnis wird sich wohl kaum festmachen lassen, wie gut oder geeignet ein Buch ist, weder für deine spziellen thematischen Ansprüche noch allgemein.
Da sind eher entscheidend der genaue didaktische Aufbau jedes Kapitels, die Programmierbeispiele, Aufgaben zum Bearbeiten und auch Lösungen zu den Aufgaben.
Nun mag es aber in sich so gut sein wie es will, wenn die Basis veraltet ist seit spätestens C++11 ff. (u.a. mit Multithreading) - was nützt es dir dann?

Zitat:


Bjarne Stroustrup, the creator of C++, said recently that C++11 “feels like a new language — the pieces just fit together better.” Indeed, core C++11 has changed significantly. It now supports lambda expressions, automatic type deduction of objects, uniform initialization syntax, delegating constructors, deleted and defaulted function declarations, nullptr, and most importantly, rvalue references — a feature that augurs a paradigm shift in how one conceives and handles objects. And that’s just a sample.

http://blog.smartbear.com/c-plus-plus/the-biggest-changes-in-c11-and-why-you-should-care/

pilerC
07.02.2017, 13:25
kann mir bitte jemand sagen ob es einen Unterschied zwischen NULL und nullptr gibt?

shedepe
07.02.2017, 14:33
Das gehört zu den Fragen die du dir am besten selber beantworten solltest (bzw. selber nach der Antwort fragen solltest)
Nach einer kurzen Suche gelangst du dann nämlich zum einen zur Dokumentation: http://en.cppreference.com/w/cpp/language/nullptr
Bzw. auf stackoverflow wo so ziemlich jede Frage die man zu C++ oder anderen Programmiersprachen haben kann bereits beantwortet wurde: https://stackoverflow.com/questions/1282295/what-exactly-is-nullptr#1282345

Kurze Zusammenfassung: Nein für dich als Nutzer macht es keinen Unterschied in den meisten Fällen außer: Der nullptr ist eigener Typ in C++ und kann deshalb verwendet werden um als Funktionsargument weitergegeben zu werden.

HaWe
08.02.2017, 19:52
NULL kann ich aber auch als Funktionsargument benutzen.
Mein beliebtes beispiel aus pthread (C, nicht C++):


pthread_create( & tID, NULL, threadName, NULL );

hier ist aber was zur Erklärung:
http://en.cppreference.com/w/cpp/language/nullptr
(edit, sah gerade: das war auch shedepes Link)

NULL ist ein Makro, hingegen nullptr ein fundamental type:
http://www.cplusplus.com/reference/cstddef/nullptr_t/

pilerC
16.02.2017, 15:10
Hallo,
kann mir denn Jemand ein gutes Buch zum Thema C++ für Anfänger/Einsteiger empfehlen? Es sollte natürlich alles gut erklärt werden, so das es für Einsteiger verständlich ist, aber auch so dass keine wichtigen Dinge ausgelassen werden, also auch erklärt wird was im Hintergrund passiert. Das Buch müsste in deutscher Sprache sein, da mein Englisch eher nicht so gut ist.


herzlichen Dank!

shedepe
16.02.2017, 15:35
Meine Empfehlung bleibt: https://www.amazon.de/Die-Programmiersprache-Aktuell-Bjarne-Stroustrup/dp/3446439617/ref=sr_1_1?ie=UTF8&qid=1486023781&sr=8-1&keywords=die+c+programmiersprache

Wenn du jedoch ernsthaft in die Programmierung einsteigen willst wirst du wohl auch deine Englisch Kenntisse aufpolieren müssen. Fast alle Fragen die man zum Thema Programmieren stellen kann wurden auf stackoverflow.com bereits gestellt und meistens auch ziemlich gut beantwortet.

Mxt
16.02.2017, 15:36
Das hier ist in deutsch geschrieben, keine Übersetzung.
http://www.cppbuch.de/

HaWe
17.02.2017, 07:54
ich habe mir jetzt, weil ich neugierig geworden bin, vom o.g. Autor Breymann ein anderes, kleineres Büchlein über C++ mal bestellt.
10 Euronen, ich dachte, da kann man nicht viel falsch machen.

https://www.amazon.de/C-eine-Einf%C3%BChrung-Ulrich-Breymann/dp/3446446370/ref=sr_1_1?ie=UTF8&qid=1487317914&sr=8-1&keywords=breymann+C%2B%2B
Nach den ersten Gehversuchen, und wenn alles mit den Beispielen mit allen Libs und Tools auch auf dem Raspi läuft, werde ich sicher auch das größere Werk von Breymann mal testen.

pilerC
17.02.2017, 11:51
Danke für die Empfehlungen.
HaWe, würde mich freuen wenn du berichtest, sobald du mit dem Buch so weit bist, wie du es findest und ob es brauchbar für Anfänger ist. Ich bin auch auf das Buch gestoßen und überlege ob ich es mir zulege.

Peter(TOO)
17.02.2017, 14:48
HaWe, würde mich freuen wenn du berichtest, sobald du mit dem Buch so weit bist, wie du es findest und ob es brauchbar für Anfänger ist. Ich bin auch auf das Buch gestoßen und überlege ob ich es mir zulege.
Eine wichtige Frage ist noch, was für ein Anfänger du bist?

Das grundlegende Problem ist es zunächst, ein Problem überhaupt in z.B. einen Ablaufplan zu bekommen. Da muss zuerst die entsprechende Denkweise entwickelt werden. Zumindest im Bereich der Prozeduralen Sprachen, spielt dabei die Programmiersprache noch gar keine Rolle.
So ein Computer ist strohdumm und befolgt einfach stur deine Anweisungen. Der Rechnet auch mit unsinnigen Eingaben und liefert entsprechende Ergebnisse. Du musst also auch an jeden möglichen Ausnahmefall denken und dafür regeln bestimmen.

Hat man diese Denkweise schon erlangt und kann mit irgendeiner Programmiersprache Probleme lösen, ist ein Umstieg einfacher!

Strukturiert und objektorientiert kann man auch in Assembler programmieren! Das einzige Problem dabei ist, dass Assembler auch alles andere zulässt und es eine Frage der eigenen Disziplin ist, was raus kommt.

Je nach Voraussetzung sind unterschiedliche Bücher optimal.

Irgendwo stand noch die Frage im Raum, wie das alles im Hintergrund funktioniert. Hier ist das Linker-Handbuch und Handbücher zu "Mixed Language Programming" am hilfreichsten. Allerdings ist man hier sehr nahe an der hardware und am Betriebssystem. Die Idee hinter den höheren Programmiersprachen ist es den Programmierer davon Fern zu halten.

MfG Peter(TOO)

HaWe
17.02.2017, 16:15
HaWe, würde mich freuen wenn du berichtest, sobald du mit dem Buch so weit bist, wie du es findest und ob es brauchbar für Anfänger ist. Ich bin auch auf das Buch gestoßen und überlege ob ich es mir zulege.
Deine Vor-Erfahrung würde mich auch interessieren.

Andererseits: gerade für C++ Anfänger soll es einfacher sein, das C++ ohne vorherigen bekannten ANSI C Balast zu lernen, da die Denkweise OOP vs. prozedural wirklich manchmal hinderlich ist.
C++14 ist aber wirklich sehr mächtig (sogar schon C++11), deshalb will ich da auch mal reingucken.
Assembler halte ich ntl für Quatsch, nicht nur wegen des Topic-Titels. Wer will heute ernsthaft Intel mit Windows oder ARMs (bare-metal oder Linux-SoCs) mit Assembler programmieren?
Noch nichtmal für AVRs würde ich jemandem heute noch Assembler empfehlen, dann schon eher ANSI C. Ist aber alles eh OT, gefragt war ja nach C++.

Also:
Die viel wichtigere Frage ist daher wohl: für welche Plattform?
Ich selber will es für Raspi/Linux lernen, zunächst ziemlich ausschließlich, und ich bin mir noch gar nicht sicher, ob das Buch dafür geeignet ist, denn manche Tools scheinen nicht gerade Raspbian-kompatibel.

Ich sag aber Bescheid, notfalls kannst du es mir billig abkaufen ;)

ach so:
aber dann registriere dich bitte, dann kann ich dir ne mail schicken! 8)

HaWe
22.02.2017, 09:24
da die Frage vom OP hier im Atmel AVR Forum gestellt wurde:
nein, für Atmel AVR als Ziel-Plattform ist das Buch: C++, Eine Einführung NICHT geeignet.
Es zielt ab auf Windows-PCs oder MACs mit g++, angeblich auch auf Linux-PCs.
Das Buch will C++ an Hand von grafischer Spiele-Programmierung erklären, was ich gerade für den Raspi als Linux-SoC sehr interessant gefunden hätte.
Dazu werden aber leider Bibliotheken benötigt wie die Multimedia-Lib SFML, deren Installation aber absolut ungenau beschrieben wird und die mir auch absolut nicht gelungen ist - damit ist das ganze Buch dann ntl wertlos, da es darauf aufbaut. Immerhin muss man einräumen, dass auch der Raspi nicht explizit als unterstützte Zielplattform genannt wird, und andere Linux-Plattformen verwende ich nicht, ebenso wenig Windows oder Mac für meine Programmier-Projekte.
Für dich (den OP) wäre also zuerst zu entscheiden: für welche Zielplattform suchst du etwas (hatte ich bereits gefragt), und dann ggf. gezielter oder eben auch ganz allgemein weitersuchen und alles mögliche austesten, bis du was findest, was durch die Didaktik des Buchs deinem Geschmack und deinen Wünschen entspricht.
Nur sollte es wenigstens C++11 voll unterstützen.