Was zuerst lernen? C++ oder doch zuerst C?
-
Nathan schrieb:
Mythos 1: https://isocpp.org/blog/2014/12/myths-1
Frag Microsoft, was sie von Linux halten. http://xaharts.org/funny/i/Microsoft_Linux_ad.jpg.
Nur weil das auf isocpp.org steht, heisst das noch lange nicht, dass das glaubwürdig ist.Arcoth schrieb:
C ist überholt und sollte von niemandem mehr freiwillig gelernt werden.
lol.
Es gibt durchaus sinnvolle Anwendungen für C.Wenn dein Ziel Mikrocontrollerprogrammierung ist, dann fang mit C an. Als Beispiel nehme den Code von isocpp:
string compose(const string& name, const string& domain) { return name+'@'+domain; } const string addr = compose("gre","research.att.com");
Es gibt hier 3! dynamische Speicherallokationen. Es ist für den Anfänger völlig unklar, wo.
Man vergleiche das mit dem (im Gegensatz zu isocpp nicht absichtlich verhunzten) C-Code:
int compose(char *dest, size_t n, const char *name, const char *domain) { return snprintf(dest, n, "%s@%s", name, domain); } char addr[255]; compose(addr, sizeof addr, "gre", "research.att.com");
Das sind 0 Speicherallokationen!
Vielleicht ist dieses "subset of C++", von dem isocpp spricht einfacher zu lernen als C. Aber leider für Mikrocontroller völlig ungeeignet. Für Mikrocontroller musst du C sowieso lernen, auch wenn du C++ programmierst. Da du schon ein bisschen programmieren kannst würde ich auch gleich mit C anfangen.
-
Nathan schrieb:
Mythos 1: https://isocpp.org/blog/2014/12/myths-1
Danke, ich lese mir die Seite mal durch
Zum Beispiel wird in vielen Unis auch mit C angefangen. Warum dann?
Später lernen sie dann C++.Es wird begründet, dass C maschinennäher ist als C++.
Ist das auch ein Mythos?
-
Das sind 0 Speicherallokationen!
Ja, voll krass! Wenn wir bloß den genau gleichen Code auch in C++ schreiben könnten...
-
biased schrieb:
Vielleicht ist dieses "subset of C++", von dem isocpp spricht einfacher zu lernen als C. Aber leider für Mikrocontroller völlig ungeeignet. Für Mikrocontroller musst du C sowieso lernen, auch wenn du C++ programmierst. Da du schon ein bisschen programmieren kannst würde ich auch gleich mit C anfangen.
Ok, danke für die Empfehlung. Ich werde mich mal nach einem guten Buch umsehen.
Hier im Forum sind ja auch einige Infos zu Büchern habe ich gesehen.
-
Arcoth schrieb:
Ja, voll krass! Wenn wir bloß den genau gleichen Code auch in C++ schreiben könnten...
Problem ist wohl eher nicht dass man das nicht auch in C++ schreiben könnte sondern dass es für viele MC oft keine (oder nur sehr eingeschränkt funktionierende) C++ Compiler gibt.
Dann bringt einem das auch nichts wenn es theoretisch auch in C++ gehtZumindest muss ich deswegen (leider) auch teilweise C benutzen
-
Problem ist wohl eher nicht dass man das nicht auch in C++ schreiben könnte sondern dass es für viele MC oft keine (oder nur sehr eingeschränkt funktionierende) C++ Compiler gibt.
Das war nicht das Argument das ich zitiert habe. Und es ist nicht überzeugend. Warum sollte man jemandem generell C empfehlen nur weil irgendwelche MCs keine C++ Cross-compiler haben?
-
Arcoth schrieb:
Das war nicht das Argument das ich zitiert habe. Und es ist nicht überzeugend. Warum sollte man jemandem generell C empfehlen nur weil irgendwelche MCs keine C++ Cross-compiler haben?
Ganz einfach, weil "C ist überholt" so allgemein mMn nicht stimmt. Der TE hat doch sogar explizit gesagt dass er auch MC programmieren will. Und auf vielen ist C eben noch nicht überholt sondern nach wie vor "state-of-the-art".
Eine generelle Empfehlung kann man da doch eh nicht geben? Kommt halt drauf an was man machen will und auf MC kommt man um C eben meistens nicht rum (nicht das ich das gut finden würde)...
-
biased schrieb:
Nathan schrieb:
Mythos 1: https://isocpp.org/blog/2014/12/myths-1
Frag Microsoft, was sie von Linux halten. http://xaharts.org/funny/i/Microsoft_Linux_ad.jpg.
Nur weil das auf isocpp.org steht, heisst das noch lange nicht, dass das glaubwürdig ist.Nun, ich denke schon, dass die Meinung von isocpp zum Thema "sollte man C können bevor man C++ lernt?" schon richtig ist. Schließlich designen die die Sprache, wenn die es nicht wissen sollen, wer dann?
Vielleicht ist dieses "subset of C++", von dem isocpp spricht einfacher zu lernen als C. Aber leider für Mikrocontroller völlig ungeeignet. Für Mikrocontroller musst du C sowieso lernen, auch wenn du C++ programmierst. Da du schon ein bisschen programmieren kannst würde ich auch gleich mit C anfangen.
Es geht da nicht um C vs C++, sondern um "sollte man C können, bevor man C lernt".
BTW: yeah, der zweite C vs C++ Flamewar innerhalb weniger Tage!
-
Arcoth schrieb:
Das sind 0 Speicherallokationen!
Ja, voll krass! Wenn wir bloß den genau gleichen Code auch in C++ schreiben könnten...
Mir ging es nicht darum, dass das in C++ unmöglich ist, sondern um
C is almost a subset of C++, but it is not the best subset to learn first because C lacks the notational support, the type safety, and the easier-to-use standard library offered by C++ to simplify simple tasks.
Wenn du sowieso das C subset lernen musst (hier wegen μC), dann kannst du auch gleich damit anfangen, insbesondere wenn du schon Programmiererfahrung hast.
-
[quote="Arcoth"]
Das war nicht das Argument das ich zitiert habe. Und es ist nicht überzeugend. Warum sollte man jemandem generell C empfehlen nur weil irgendwelche MCs keine C++ Cross-compiler haben?
Also bis jetzt habe ich wieder was gelernt, dass es auch eher an den MC's liegt wegen den "C++ Cross-compiler". Bis jetzt bin ich unentschlossen.
Mit welcher Sprache abgesehen von der Art des MC's erreicht man schneller sein Ziel (wenn man mal jetzt so fragen darf), um MC's zu programmieren?
Ich denke, dass ich auch zuerst hardwarebasierend zum Programmieren mit MC's anfangen möchte.
Ich habe das MS Visual Studio Express 2013 im Moment, weil auch im Buch damit gearbeitet wird (also mit der 2010ner). Wenn ich doch mit C starten möchte, muss ich mir ein anderen Tool holen, weil "ich glaube", dass die 2013ner Version kein C unterstützt (kann auch total falsch sein
).
-
Zuerst C und dann C++. Ich bin dann ganz schnell wieder zurück zu C, das ist aber bei jedem anders.
-
Arcoth schrieb:
Nein.
C ist überholt und sollte von niemandem mehr freiwillig gelernt werden.
Ich denke, in einen C# Forum würde man dass gleiche über C++ sagen.
-
Nathan schrieb:
BTW: yeah, der zweite C vs C++ Flamewar innerhalb weniger Tage!
Jupp und die Moderation mischt wieder mit.
-
Ja und für Mikrocontroller eh nur C, denn da haben die vielen Unzulänglichkeiten von C++ nichts verloren. In C++ passiert sehr viel hinter den Kulissen, wenn man das nicht alles weiß schreibt man nur Schrott. Nicht umsonst ist eines der grüßten Softwareprojekte weltweit in C geschrieben, nämlich Linux. Also lass dir keinen Bären aufbinden hier, dass C nicht mehr "in" ist oder sich für größere Sachen nicht eignet.
-
Du solltest auf keinen Fall zuerst C und dann C++ lernen, weil es dir dann warscheinlich viel schwerer fallen wird.
Mir gings auch so, für meine Zwecke reicht C auf jeden Fall aus. Für einfache Anwendungsprogramme kannst du auch C verwenden und wenn du sowieso Mikrocontroller programmieren willst dann ist es sogar am besten.
C ist maschinennäher als C++ und im Allgemeinen auch leichter zu erlernen.
Die Aussgage, dass C seit C++ nichts mehr Wert ist, ist um es so auszudrücken "geistige Gülle".
Es kommt darauf an was einem am besten liegt und objektorientiertes Programmieren ist kein muss.
-
Unreg schrieb:
Nathan schrieb:
BTW: yeah, der zweite C vs C++ Flamewar innerhalb weniger Tage!
Jupp und die Moderation mischt wieder mit.
Mir geht es nicht darum ein Thema C vs. C++ zu eröffnen, sondern eher darum, mein Ziel mit meinen beschriebenen Kenntnissen zu PHP, den Einstieg zielsicherer und schneller zu gestalten.
Und da mein Ziel anfangs ist, mit MC's zu arbeiten, nunja, Gründe wurden wegen der Compiler-Geschichte schon genannt. Also nicht falsch verstehen
-
Ontopic: Ich habe auch zuerst C gelernt. Es hatte mir nicht geschadet (die Lehrbücher für C++ waren schlimmer), es hatte mir wohl gezeigt wie einfacher triviale Sachen in C++ doch sind (strings die dynamisch wachsen, wie geil ist das denn bitte!).
Es hat mir allerdings auch nicht viel genützt. Man sagt, dass man mit C ein besseres Verständnis von dem Lowlevelzeugs bekommt. Das mag ja sein, nur in C++ kann man das genauso gut lernen.
Imo ist es nicht nötig C zu können um C++ zu können, schadet aber auch nicht (sofern man sich dann auf C++ einlässt und nicht immer noch C in C++ programmiert).
-
Lieber ein guter C-Coder werden als ein mittelmäßiger C++-Coder.
-
Nun ich denke, dass ich doch zuerst wegen meiner Zielausrichtung C lernen werde.
Ich habe mir gerade das Buch gekauft: "Einstieg in C: Für Programmiereinsteiger geeignet" (ISBN: 3836227932) Da in dem Buch auch Raspberry behandelt wird.
Ich habe mir noch das Buch "C von A bis Z: Das umfassende Handbuch" (ISBN: 3836214113) angesehen, jedoch denke ich, dass ich für den Einstieg mit dem anderen Buch schneller erste Erfolge erzielen werde. Danach kann ich immer noch das Nachschlagewerk kaufen. Für den Anfang bin ich jedoch mit dem anderen Buch gut bedient.
Ich hoffe, es war eine gute Wahl
-
C von A bis Z hat leider keine so gute Kritik