Das Alte Thema: C++ Lernen und wie anfangen
-
http://www.stroustrup.com/bs_faq.html#learning
https://www.c-plusplus.net/forum/topic/332880/linkliste
https://isocpp.org/get-startedFür C++ Embedded sind vielleicht die Vorträge von Dan Saks interessant wie z.B. Writing better embedded Software - Dan Saks - Keynote Meeting Embedded 2018
-
@manni66 ich mache es mir mal einfach und sage, dass man genug argumente für C bekommt, indem man einfach
linus torvalds c++
in die suchmaschine eingibt.
-
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@manni66 ich mache es mir mal einfach und sage, dass man genug argumente für C bekommt, indem man einfach
linus torvalds c++
in die suchmaschine eingibt.Wenn man denn Mann für unfehlbar hält ...
-
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@manni66 ich mache es mir mal einfach und sage, dass man genug argumente für C bekommt, indem man einfach
linus torvalds c++
in die suchmaschine eingibt.Wenn man denn Mann für unfehlbar hält ...
ja das ist eben so eine sache. was ist denn jetzt
richtig
und was istfalsch
?
-
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@manni66 ich mache es mir mal einfach und sage, dass man genug argumente für C bekommt, indem man einfach
linus torvalds c++
in die suchmaschine eingibt.Wenn man denn Mann für unfehlbar hält ...
ja das ist eben so eine sache. was ist denn jetzt
richtig
und was istfalsch
?Ich habe viele Jahre in C (angefangen mit K&R) und noch mehr Jahre in C++ programmiert. Mein perönliche Meinung: Torvalds liegt falsch.
-
Die Sache ist ja die dass Linus darin viel weniger über C++ sagt als über C++ Programmierer. Bzw. genauer: die C++ Programmierer mit denen er so zu tun hatte die ihm Code für den Kernel unterjubeln wollten. Und das gefärbt/verstärkt durch Umstände wie z.B. dass er einfach C++ nicht mag.
Davon abgesehen mag es durchaus stimmen dass es weniger C Programmierer gibt die versuchen schrottigen Code im Kernel einzuchecken bzw. "grossartige" Vorschläge liefern wie etwas implementiert werden sollte als es C++ Programmierer gibt die das versuchen.
Nur daraus kann man mMn. keines der folgenden Dinge folgern:
- Dass C++ doof machen würde
- Dass C++ schlecht sei
- Dass es nur doofe C++ Programmierer gäbe
(Wobei er den letzten Punkt IIRC gar nicht behauptet, aber die ersten beiden schon irgendwie impliziert.)
-
Ahh... ist es mal wieder so weit? Ich geselle mich mal mit meinem Ölkanister zu eurem brennenden Schuppen
Für mich persönlich gäbe es 3 Gründe, auf C zu setzen:
- Historisch: Projekt ist bereits weit fortgeschrittenes C-Projekt
- Expertise: mehr C-Fachwissen im Team bzw. prävalentes "C-Mindset"
- Tools: schlechte Verfügbarkeit von C++-Compilern und Entwicklungswerkzeugen
Für alles andere gibt es eigentlich nichts, dass man mit C++ nicht mindestens genau so gut machen könnte. Vielzitierte Argumente wie Code-Bloat, weniger "Kontrolle" oder schlechtere Perfomance sind Vorurteile, die sich bei näherer Betrachtung schnell in Luft auflösen.
Was den berühmten Torvalds-Rant angeht, da finden sich eigentlich kaum Argumente gegen die Sprache selbst - das geht viel mehr gegen schlechte Programmierer und Designentscheidungen. Keine der kritisierten Features wie Exceptions, OOP oder nicht aufs letzte Bit optimierte Datenstrukturen der Standardbibliothek muss man verwenden, wenn es in dem Projekt keinen Sinn macht - das ist alles eine Frage eines guten Software-Designs - und das kann man in jeder Sprache verbocken.
Und wenn man die Features doch mal braucht, ist es gut, dass sie sauber und gut lesbar in die Sprache selbst integriert sind. Ich verwende lieber virtuelle Member-Funktionen anstatt mit Funktionspointer-Tabellen zu hantieren und C-OOP á la GLib zu machen oder benutze lieber
try
/throw
/catch
anstatt beispielsweise mit so einem Exception-Abklatsch zu arbeiten, den z.B. dielibjpeg
da mitsetjmp
/longjmp
veranstaltet.
-
@Finnegan sagte in Das Alte Thema: C++ Lernen und wie anfangen:
Ich verwende lieber virtuelle Member-Funktionen anstatt mit Funktionspointer-Tabellen zu hantieren und C-OOP á la GLib zu machen oder benutze lieber try/throw/catch anstatt beispielsweise mit so einem Exception-Abklatsch zu arbeiten, den die z.B. die libjpeg da mit setjmp/longjmp veranstaltet.
Japp. Vor allem finde ich es ein Armutszeugnis dass akzeptiert wird wenn sowas vielfach neu erfunden und neu implementiert wird, dabei viele Fehler gemacht, alles irgendwie ähnlich aber nix gleich... und man dann gleichzeitig auf C++ schimpft.
Wenn das alles for "fir die Wirscht" ist, dann verwendet man es halt nicht. Und wenns doch irgendwie gut ist, ... dann könnte man ja auch mal C erweitern (*hust* MSVC __try __finally *hust*). Oder nen schniekes Code-Generator/Precompiler Dingens bauen.
-
@hustbaer sagte in Das Alte Thema: C++ Lernen und wie anfangen:
Oder nen schniekes Code-Generator/Precompiler Dingens bauen.
Waren nicht die ersten C++-Compiler buchstäblich dies?
-
@SeppJ Keine Ahnung. Mir aber Wurst. Ich sag ja nur...
-
Also kurzum C wird für den Anfang wohl besser sein, weils wie ich gerade gesehen hab zwar für alle Prozessoren die ich mal Programmieren will (STM32, PIC, Atmega usw) C++ Compiler gibt, die aber alle ein schweine Geld kosten, wogegen die C Compiler kostenlos sind. Dazu kommt dass es wie ich gelesen habe schwirig sein soll ein Programm in C zu schreiben, wenn man nur C++ gelernt hat, weil man dann zwar C quasi mitgelernt hat, aber erstmal sehen muss, was es in C alles im vergleich zu C++ nicht gibt, um keine Probleme mit dem C Compiler zu kriegen.
-
-
Ja, Microchip z.B. bietet keine kostenlosen C++ Compiler an.
-
@M20001 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
Ja, Microchip z.B. bietet keine kostenlosen C++ Compiler an.
So spontan finde ich https://www.microchip.com/xcdemo/xcpluspromo.aspx
Edit: jetzt geht der Link
-
Compliant with the majority of C++98 and C++2003 ANSI standards
deshalb lernt man im studium vermutlich kein c++17 aber irgendwie kann man da dann doch wieder C nehmen, oder?
-
@Wade1234
kann man da dann doch wieder C nehmen, oder?
Warum?
-
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@Wade1234
kann man da dann doch wieder C nehmen, oder?
Warum?
weil C insgesamt einen geringeren sprachumfang hat und bspw. keine void-zeiger gecastet werden müssen.
-
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@Wade1234
kann man da dann doch wieder C nehmen, oder?
Warum?
weil C insgesamt einen geringeren sprachumfang hat und bspw. keine void-zeiger gecastet werden müssen.
Du zählst geringeren Sprachumfang und mangelnde Typsicherheit als Vorteile?
-
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
weil C insgesamt einen geringeren sprachumfang hat und bspw. keine void-zeiger gecastet werden müssen.
Gerade in C werden void* casts benutzt, weil es zB keine Templates gibt. Kombinationen aus void Zeigern und Objektgrößen werden da imho öfter benutzt als in C++.
-
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@Wade1234
kann man da dann doch wieder C nehmen, oder?
Warum?
weil C insgesamt einen geringeren sprachumfang hat
Mit C++ 11 wäre das aber anders?
und bspw. keine void-zeiger gecastet werden müssen.
void Zeiger? Wer benutzt denn sowas?