Das Alte Thema: C++ Lernen und wie anfangen
-
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?
-
@SeppJ sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@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?
naja was willst du denn bei
P1OUT = data;
oder
int data = P1IN;
für typsicherheiten haben?
@DocShoe sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@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++.
ja aber du musst keine expliziten casts durchführen. wobei ich mich gerade frage, welche art von objekten man bei mikrocontrollern eigentlich braucht.
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@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?
naja anders wäre es schon. zum schlimmeren hin.
und bspw. keine void-zeiger gecastet werden müssen.
void Zeiger? Wer benutzt denn sowas?
also ich würde sie z.b. verwenden, um daten über den gpio zu schicken.
-
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
Mit C++ 11 wäre das aber anders?
naja anders wäre es schon. zum schlimmeren hin.
Aber C++98 war deine Begründung für C statt C++.
-
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
Mit C++ 11 wäre das aber anders?
naja anders wäre es schon. zum schlimmeren hin.
Aber C++98 war deine Begründung für C statt C++.
naja irgendwie musst du sämtliche standards beherrschen, oder? der compiler unterstützt c++03, der nächste c++11 usw. und: so groß ist der unterschied zu C dann auch nicht, dass es sich lohnen würde.
-
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
und: so groß ist der unterschied zu C dann auch nicht, dass es sich lohnen würde.
Vielleicht in deinem Code.
-
@manni66 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
@Wade1234 sagte in Das Alte Thema: C++ Lernen und wie anfangen:
und: so groß ist der unterschied zu C dann auch nicht, dass es sich lohnen würde.
Vielleicht in deinem Code.
ja vielleicht
-
mal ehrlich, hat der Mann jetzt eine Antwort bekommen oder habt ihr euch nur die Zeit vertrieben..............