Hi,
nachdem ich mich (uns) von Wimalopan in jüngster Zeit zunehmend mit
C++-Konfekt beschenkt sehe, will ich doch mal wieder ein wenig mehr
damit beschäftigen.
Ich suche, ähnlich wie zu C, die Working Drafts zu C++17, finde aber
leider nichts. Ausgehend von der Wikipedia-Seite habe ich nur ein
Dokument von 2012 gefunden. Ein Buch habe ich schon, aber ich gucke
immer gerne noch in die Standards - habe mir das bei C jedenfalls so
angewöhnt und finde es recht hilfreich.
Gibt es da Links und mag mal jemand sowas posten?
Wilhelm M. schrieb:> Theor schrieb:>> die Working Drafts zu C++17,>> Warum C++17?> Sinnvoller wäre, wenn Du jetzt mit C++20 anfängst, denn C++20 ist wieder> ein Major-Release.
Meine Überlegung ist Folgende:
C++20 ist noch nicht fertig. Möglicherweise lerne ich etwas, was dann
doch nicht so im Standard steht. Das mag möglicherweise falsch sein,
aber gegenteilige Anhaltspunkte sehe ich nicht.
Wilhelm M. schrieb:> Theor schrieb:>> Ausgehend von der Wikipedia-Seite>> Schau Dir lieber das an:>> https://en.cppreference.com/w/
Danke für den Link, Wilhelm. Eine wertvolle Resource.
Ich deute das Wort "lieber" so, dass die verlinkte "Referenz" aus Deiner
Sicht dem Standard bzw. dem Entwurf vorzuziehen ist - um C++ zu lernen.
Ich bin nicht undankbar, Wilhelm. :-) Will nur Deine Bewertung "lieber"
einordnen und evtl. diskutieren.
Ich denke, ob Referenzen ggü. dem Standard-Entwurf zu bevorzugen sind,
ist Ansichtssache bzw. hängt vom individuellen Lern- und Arbeitsstil ab.
Ich würde sogar soweit gehen, dass es objektivierbare Gründe gibt, das
nicht so zu sehen.
Aus meiner Sicht würde ich die Materialien so einordnen:
1. Lehrbuch - Zusammenhänge in den Grenzen wie der Autor das praktisch
für relevant hält, Beispiele und Aufgaben. M.M.n. gut zum lernen.
(Natürlich).
2. Standard - Regeln, Zusammenhänge und Ausnahmen im Detail. M.M.n. gut
um beim Lernen bzw. bei den Übungen tiefer einzudringen. Besonders wenn
Fehler oder gar unerwartetes Verhalten bei den Übungen auftreten (die
das Buch nicht abdeckt).
3. Referenz - zum Nachschlagen und Wiederholen von Fakten, Regeln und
Ausnahmen, die zwar bekannt sind aber entweder nicht vollständig bekannt
sind oder vergessen wurden. Ich denke, es ist unstrittig, dass der
Inhalt sehr kondensiert ist.
Eben diese gestraffte, kondensierte Eigenschaft einer Referenz, macht
sie für meine Begriffe ungeeignet zum Lernen.
Theor schrieb:> Eben diese gestraffte, kondensierte Eigenschaft einer Referenz, macht> sie für meine Begriffe ungeeignet zum Lernen.
Ich kann deine Überlegung nachvollziehen, kann ihr aber nicht zustimmen.
Der C++ Standard ist sehr schwer zu lesen, vor allem für C++ Neulinge
und sicher nicht geeignet, um die Sprache zu lernen. Man muss die
Sprache relativ gut beherrschen, um mit dem Standard etwas anfangen zu
können. Ich gehe davon aus, dass ein signifikanter Anteil der
professionellen C++ Programmiere noch nie wirklich im Standard gelesen
hat. Stell dir dagegen cppreference als eine, für "normale
Programmierer", aufgearbetet Version des Standards vor. Noch immer nicht
geeignet als einzige Quelle zum Lernen der Sprache, aber eine wichtige
Ergänzung zu einem guten Buch.
Den C++ Standard braucht man eher selten, da der als Lehrwerk durch die
sehr hohe Formalität nicht wirklich hilfreich ist. Ich schau meistens
erst dann in den Standard, wenn ich einen Compilerbug vermute oder mir
bei sehr spezifischen Details nicht sicher bin und das jetzt wirklich
wissen will.
Ansonsten ist C++20 aber effektiv auch schon fertig und erhält nur noch
Bugfixes, die für dich aber kaum relevant sein werden. Da geht es dann
meist um kleinere Unklarheiten in den Formulierungen für Features. Final
soll das ganze dann im Februar verabschiedet werden, sodass der Standard
dann (nach ein paar ISO Formalien) irgendwann dieses Jahr veröffentlich
wird.
https://en.cppreference.com/w/ ist super. Bei Lehrbüchern muss man schon
eher aufpassen. Da gibt es leider viel Schrott und auch viel veraltertes
Zeug.
Viel wichtiger als der Standard ist aber mit C++ Fehlermeldungen umgehen
zu können. Wenn der Compiler dir 5 Seiten Fehlermeldungen für ein
vergessenes Komma ausgibt hilft dir der Standard (und auch ein Lehrbuch)
nicht mehr weiter.
@mh und @Ntldr
Nun. Wir werden uns vielleicht doch (im wesentlichen) einig, wenn ich
nochmal aus meinen Beitrag zitiere und das Wort, das mir entscheidend
erscheint, unterstreiche:
> 2. Standard - Regeln, Zusammenhänge und Ausnahmen im Detail. M.M.n.> gut um beim Lernen bzw. bei den Übungen tiefer einzudringen.
Möglicherweise also nur ein Mißverständnis. Ich stimme jedenfalls zu,
dass der Standard zum Lernen nicht geeignet ist. Ein Buch ziehe auch
ich vor.
Und die Referenz, Ntldr, ist auch aus meiner Sicht zum lernen
ungeeignet. Nur zum Nachschlagen. Du stellst in Deinem Beitrag in Bezug
auf das Lernen die Referenz und den Standard gegenüber. Ich wollte aber
durchaus in den Raum stellen, dass aus meiner Sicht das primäre Medium
zum Lernen das Buch ist.
---
Nochmal kurz das Thema C++20 bzw. eigentlich das Working-Draft-Dokument:
Dazu gibt es einfach noch kein Buch. Kann es ja noch nicht geben, meine
ich.
Es fällt mir aber auch schwer, mich auf www.open-std.org zu orientieren.
Es steht ja nirgend ausdrücklich C++20.
Ich nehme mal an, dass es sich um die Datei
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/n4842.pdf auf
der Seite http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/
handelt - ziemlich weit unten in der Novemberliste. Kann das jemand
bestätigen?
Ich gehe jedenfalls davon aus, dass, bis auf ein paar Ausnahmen, C++20
ggü. C++17 im wesentlichen erweitert ist und keine Features gestrichen
oder bedeutend geändert werden. Daher halte ich C++17 lernen, zu dem es
Bücher gibt, für ganz sinnvoll. (Unstrittig ist, dass es wohl bedeutende
Neuerungen geben wird).
Wilhelm M. schrieb:> Warum C++17?> Sinnvoller wäre, wenn Du jetzt mit C++20 anfängst
ähm, drei Jahre Unterschied und das Zeug ist nicht mehr aktuell oder
wie? Ist das echt der Weg, den C++ geht?
Theor schrieb:> Nochmal kurz das Thema C++20 bzw. eigentlich das Working-Draft-Dokument:> Dazu gibt es einfach noch kein Buch. Kann es ja noch nicht geben, meine> ich.
Das aktuelle draft-paper findest Du immer hier:
https://en.cppreference.com/w/cpp/language/history
unten auf der Seite.
Allerdings: daraus wirst Du die Sprache / Lib nicht erlernen.
Es ist eine gewisse Crux, dass die Weiterentwicklung so dynamisch
geworden ist: man hat einen 3-Jahreszyklus festgelegt, und die Community
arbeit sehr hart daran, diesen Zyklus einzuhalten.
Daher brauchst Du nicht auf Bücher zu hoffen.
Stattdessen solltest Du einfach die Blogs der Keyplayer in diesem Prozeß
lesen und natürlich die einschlägigen Konferenzvideos ansehen oder die
Konferenzen besuchen, und mit diesen Leuten reden.
C++20 habe ich nicht umsonst gesagt:
1) ist C++20 feature-complete
2) es ist ein major-release
3) bis Du Dir die C++20 features ansiehst, ist der C++20 Fakt.
Wilhelm M. schrieb:> Theor schrieb:>> Nochmal kurz das Thema C++20 bzw. eigentlich das Working-Draft-Dokument:>> Dazu gibt es einfach noch kein Buch. Kann es ja noch nicht geben, meine>> ich.>> Das aktuelle draft-paper findest Du immer hier:>> https://en.cppreference.com/w/cpp/language/history>> unten auf der Seite.> [...]
Ah. Dankeschön.
Theor schrieb:> Ah. Dankeschön.
Gerne: deswegen habe ich diese Quelle erwähnt, denn Sie ist eigentlich
DIE zentrale Ressource ind allen Dingen für C und C++. Es ist
ausreichend aktuell und die verschiedenen Sprachversionen sind
übersichtlich nebeneinander zu sehen. M.E. gibt es kaum was besseres.
zitter_ned_aso schrieb:> ähm, drei Jahre Unterschied und das Zeug ist nicht mehr aktuell oder> wie? Ist das echt der Weg, den C++ geht?
Ist doch besser, als immer ein ganzes Jahrzehnt (zuzüglich der Zeit, die
die Compiler zur Implementation brauchen) auf neue Sprachfeatures warten
zu müssen.
Rolf M. schrieb:> Ist doch besser, als immer ein ganzes Jahrzehnt (zuzüglich> der Zeit, die die Compiler zur Implementation brauchen) auf> neue Sprachfeatures warten zu müssen.
Stimmt. Neue, noch nicht verbreitete Features lassen sich auch viel
schneller wieder entfernen, wenn sie doch nicht so super sind. Sich
bewegende Ziele sind auch prima, um early adopters ständig aktiv zu
halten.
Ich liebe Wissen, was schneller veraltet als ich es lernen kann.
S. R. schrieb:> Ich liebe Wissen, was schneller veraltet als ich es lernen kann.
Es hindert dich niemand, einen beliebig alten C++ Standard zu nutzen.
Die werden ja nicht automatisch ungültig.
Oliver
Rolf M. schrieb:> Tatsächlich werden sie das.
Dann anders ausgedrückt: Die passenden Compiler verschinden nicht, und
auch aktuelle Versionen bieten per Compilerflag die Wahl, einen älteren
Sprachstandard zu nutzen.
Bei gefühlten 50% weltweiter Souececode-Projekte, die in der Umstellung
von (Vor-)C++03 auf C++11 sind (ok, ist jetzt zynisch), ist das anders
nicht machbar.
Oliver