C oder C++ - Lohnt es sich noch C zu lernen?
-
Hallo,
ich bin gerade dabei, mir c anzueignen. Funktioniert soweit auch recht gut und es macht mir auf jeden Fall richtig Spaß.
Doch ich lese in diesem Forum immer wieder Beiträge, die C eigentlich generell schlecht machen und sagen, dass es veraltet, sinnlos und schlecht ist.
Da macht man sich natürlich als Laie Gedanken, ob es überhaupt Sinn hat, mit C anzufangen.
Deswegen hier meine Frage, ob es sich heutzutage überhaupt noch lohnt, mit C anzufangen und nicht gleich in C++ einzusteigen.
Die einen behaupten, dass man mit C super Grundlagen hätte und nichts umsonst lernt, die anderen sagen wieder, dass man es strikt trennen müsse und dass es im Endeffekt zwei völlig unterschiedliche Programmiersprachen sind.
Ich frage mich diese ganzen Sachen vor allen Dingen, weil ich mir denke, dass es vielleicht noch umso schwierieger ist, wenn man c einigermaßen gut kann, dann in C++ einzusteigen, da es sich im Endeffekt um wieder ganz andere Begriffe handelt, die teilweise in C gar nicht vorkommen. Das heißt ja, man müsste sich dann noch mehr merken und würde gleichzeitig auch noch mehr wieder vergessen.
An die ganze Sache könnte ich auch gleich noch die Frage hintendranhängen, wie es bei euch war. Habt ihr erst mit C angefangen und dann zu C++ übergegangen oder gleich C++...?!
Lernt man Sachen in C umsonst, die es später in C++ gar nicht mehr gibt?
Gibt es in C++ alles, was es in C auch gibt usw..?Würde mich über ein paar Reaktionen von euch freuen.
Gruß
RS
-
RollingStones schrieb:
ich bin gerade dabei, mir c anzueignen. Funktioniert soweit auch recht gut und es macht mir auf jeden Fall richtig Spaß.
Also gibt es doch keinen Grund aufzuhören, oder?

Deswegen hier meine Frage, ob es sich heutzutage überhaupt noch lohnt, mit C anzufangen und nicht gleich in C++ einzusteigen.
Kommt darauf an, was du machen und wissen willst. Willst du einfach bunte Oberflächen, Fensterchen und große Anwendungen schreiben, ist C vielleicht nicht unbedingt die optimale Wahl. Willst du viel vom System verstehen, eine solide Wissensgrundlage haben oder Low-Level-Sachen programmieren, ist C eine gute Wahl.
Lernt man Sachen in C umsonst, die es später in C++ gar nicht mehr gibt?
Klar. Es sind selbstverständlich zwei unterschiedliche Sprachen. Das kommt ja nicht von ungefähr. Wenn du C++ zum Ziel hast, ist es vielleicht besser auch mit C++ anzufangen statt erst halbherzig mit C zu arbeiten.
Gibt es in C++ alles, was es in C auch gibt usw..?
Theoretisch nein, praktisch eher ja.
-
je besser du bist, desto besser ist es für dich, wenn du vor c++ c lernst.
die allermeisten sollten c++ vor c lernen.
deswegen auch die verschiedenen meinungen; je besser die leute sind, desto eher sagen sie, daß es gut war, vorher c zu lernen. nur wenige haben c und c++ hinter sich gelassen und können zudem ihren kopf von oben sehen.für c vor c++ spricht: deduktiver aufbau des wissens, erst schleifen, dann funktionen, dann objekte und so. immer den happenpappen lernen, der mit möglichst vielen vorhanden pappen vernetzt werden kann.
gegen c vor c++ spricht: eine stinkende gemeine, die konsequent sachen wie void strcpy(char*d,char*s){while(++d=++s);} schreibt und die letzen 20 jahre programmierstilentwicklung versäumt hat.
also eigentlich wäre c vor c++ perfekt, nur du als lernender hast praktisch keine chance, unter diesem einfluß einen feinen stil zu entwickeln, außer du bis exorbitant gut. als exorbiter verlierste aber gut ein viertel jahr, wenn du c++ vor c machst und dir einige grundlagen zusammenreimen mußt, die in c offen zutageliegen.
die diskrepanz ist allein historisch begründet, es gibt noch kein tutorial oder buch, das ordentlich von grund auf ohne vergessenswerten und die weitere entwicklung hemmenden zwischenmüll von den wesentlichen ursprüngen zu den modernen konzepten emporsteigt. und das dürfte auch noch etliche jahre so bleiben, denn wer so oder wie aufgewachsen ist, der schreibt auch so oder wie.
-
volkard schrieb:
die diskrepanz ist allein historisch begründet, es gibt noch kein tutorial oder buch, das ordentlich von grund auf ohne vergessenswerten und die weitere entwicklung hemmenden zwischenmüll von den wesentlichen ursprüngen zu den modernen konzepten emporsteigt.
Also ich finde die beiden "Thinking in C++" Bücher (gibt es auch in der Buechersektion als EBooks) führen sehr schön und anschaulich vom C zum C++.
Sicherlich nicht perfekt, aber sehr gut nachvollziehbar.Warum soll es denn so schlimm sein, wenn man C++ und dessen Konzepte ausgehend von seinem Vorgänger erläutert?
-
SeppSchrot schrieb:
Also ich finde die beiden "Thinking in C++" Bücher (gibt es auch in der Buechersektion als EBooks) führen sehr schön und anschaulich vom C zum C++.
Sicherlich nicht perfekt, aber sehr gut nachvollziehbar.die kommenden autoren, also die, die mit thinking in c++ aufgewachsen sind, werden die bücher schreiben, mit denen die leute aufwachsen, die erstmal c++ kapieren werden. ich wünsche mir, mit einem der c++-kapierer noch reden zu können.
Warum soll es denn so schlimm sein, wenn man C++ und dessen Konzepte ausgehend von seinem Vorgänger erläutert?
das ist nicht schlecht, das ist ideal. wir erläutern ja auch immer die mathematik in historischer reihenfolge.
-
volkard schrieb:
je besser du bist, desto besser ist es für dich, wenn du vor c++ c lernst.
die allermeisten sollten c++ vor c lernen.
deswegen auch die verschiedenen meinungen; je besser die leute sind, desto eher sagen sie, daß es gut war, vorher c zu lernen. nur wenige haben c und c++ hinter sich gelassen und können zudem ihren kopf von oben sehen.hm...interessanter Absatz und klingt auch noch logisch obendrein ...

Wenn ich nach dem urteile, was ich bis jetzt an Leuten im Internet gesehen habe, die Tutorials oder Hilfestellungen zu C oder C++ geschrieben haben, kann ich dem 100%ig zustimmen, da diese nämlich genau das gleiche sagen.

Nagut, im Endeffekt spielt es für mich eine noch nicht so große Rolle mit was ich anfange denke ich mal. Bin ja erst 16 und habe noch eine Weile Zeit.

Ich gehe jetzt nach den Ferien auf eine Fachhochschule für Informatik und möchte mich schonmal darauf vorbereiten, damit ich dann mittendrin statt nur dabei bin.

-
volkard schrieb:
die kommenden autoren, also die, die mit thinking in c++ aufgewachsen sind, werden die bücher schreiben, mit denen die leute aufwachsen, die erstmal c++ kapieren werden.
Das bleibt zu hoffen, und solche positiven Erwartungshaltungen sind mir sowieso viel lieber, als die "C++ ist längst veraltet"-Pessimisten.
Also lieber RollingStone, du kannst ruhigen Gewissens die nächste Zeit erstmal C lernen, und hast dann immer noch mehr als genug Zeit, dich dem C++ zu widmen.
-
SeppSchrot schrieb:
volkard schrieb:
die kommenden autoren, also die, die mit thinking in c++ aufgewachsen sind, werden die bücher schreiben, mit denen die leute aufwachsen, die erstmal c++ kapieren werden.
Das bleibt zu hoffen, und solche positiven Erwartungshaltungen sind mir sowieso viel lieber, als die "C++ ist längst veraltet"-Pessimisten.
Was denn.. C++ auch schon??

Also lieber RollingStone, du kannst ruhigen Gewissens die nächste Zeit erstmal C lernen, und hast dann immer noch mehr als genug Zeit, dich dem C++ zu widmen.
Denke ich auch. Danke für eure Ratschläge.
-
RollingStones schrieb:
Was denn.. C++ auch schon??

ahm, ja. muß man zugeben.
wir haben c++ die enorme sprachvielfalt zu verdanken, die um uns erblüht. im prinzip ist c++ viel viel besser als ruby, python, java und konsorten. aber c++ wird von einem standardisierungskommitee definiert, das den fernschreiber für den letzten schrei auf dem computersektor hält und wir haben weder farben noch netzwerk, sound, maus und so. offensichtlich gute und ganz einfach zu definierende sachen wie typeof brauchen jahrzehnte, um angenommen zu werden (vom übersetzngsmodell mal ganz zu schweigen). das ist wieder ein soziales problem (so, wie das, warum nicht c vor c++), c++ ist zwar am stärksten aber alle wissen, daß c++ von ehemals schwachen sprachen wie basic einfach überholt wird.
(mit "am stärksten" meine ich am stärksten für saumäßig komplizierte und große programme. für kleine sachen hat c++ bereits abgedankt.)
so kommt es, daß viele viele leute (zu recht!) mit c++ unzufrieden sind und ne neue sprache bauen. aber keine der neuen kann gegen c++ dann auf lange distanz anstinken, das konzept ist schon wirklich gut. und die neuen sprachen müssen ja auch anders sein, um wenigstens ein bißchen angenommen zu werden. nur ein c++ mit typoeof und anderer klammerung würde keiner wollen (leider).
-
volkard schrieb:
RollingStones schrieb:
Was denn.. C++ auch schon??

ahm, ja. muß man zugeben.
wir haben c++ die enorme sprachvielfalt zu verdanken, die um uns erblüht. im prinzip ist c++ viel viel besser als ruby, python, java und konsorten. aber c++ wird von einem standardisierungskommitee definiert, das den fernschreiber für den letzten schrei auf dem computersektor hält und wir haben weder farben noch netzwerk, sound, maus und so. offensichtlich gute und ganz einfach zu definierende sachen wie typeof brauchen jahrzehnte, um angenommen zu werden (vom übersetzngsmodell mal ganz zu schweigen). das ist wieder ein soziales problem (so, wie das, warum nicht c vor c++), c++ ist zwar am stärksten aber alle wissen, daß c++ von ehemals schwachen sprachen wie basic einfach überholt wird.
(mit "am stärksten" meine ich am stärksten für saumäßig komplizierte und große programme. für kleine sachen hat c++ bereits abgedankt.)
so kommt es, daß viele viele leute (zu recht!) mit c++ unzufrieden sind und ne neue sprache bauen. aber keine der neuen kann gegen c++ dann auf lange distanz anstinken, das konzept ist schon wirklich gut. und die neuen sprachen müssen ja auch anders sein, um wenigstens ein bißchen angenommen zu werden. nur ein c++ mit typoeof und anderer klammerung würde keiner wollen (leider).Hm...verstehe.
Ich denke aber mal, dass sich SeppSchrot verschrieben hatte und C gemeint hatte, was in diesem Kontext viel logischer wäre, da es sich hierbei ja um das Thema C <--> C++ und nicht C++ <--> diverse weitere Sprachen handelt.
P.S.: @volkard: Wir wohnen ca. 20-25 (??) km voneinander entfernt.

-
Was soll man sagen? Grace Hopper ist tot, COBOL nicht.
C wird nicht aussterben, weil es tonnenweise an Programmen gibt, die auf C laufen und gewartet werden wollen. C++? dito.
Da es in großem Stil immernoch billiger ist, irgendwo dran rumzustricken, als es einfach neu zu machen (selbst, wenn man die Schulung von Progrmamierern mit einberechnet) und meist auch wesentlich schneller, wird sich daran so schnell ja nichts ändern..
-
wenn du das so pingelig siehst, wird nichtmal Deplhi (nehmen wie delphi mal als sprache an) aussterben, denn delphi wird noch in schulen gelehrt und es spricht nichts dagegen, das in der nächsten generation nicht auch noch zu tun.
-
volkard schrieb:
wenn du das so pingelig siehst, wird nichtmal Deplhi (nehmen wie delphi mal als sprache an) aussterben, denn delphi wird noch in schulen gelehrt und es spricht nichts dagegen, das in der nächsten generation nicht auch noch zu tun.
Der Unterschied dazu ist aber, dass man Lehrpläne an Schulen schnell und kostenlos ändern kann, ich kenn das nur zu gut.

-
Hallo
vielleicht ist C ja wirklich die "endgültige" Notation für die Systemprogrammierung, an der sich nicht mehr viel ändern wird, solange es PCs gibt;
es scheint fast so. An der üblichen mathematischen Formel-Notation mit Punkt-, Strich- und Prozentrechnung sowie Bruchstrich, Integralzeichen etc. ändert sich ja auch schon seit über 200 Jahren fast nichts mehr.Grüße
-
Hobbyprogrammierer schrieb:
vielleicht ist C ja wirklich die "endgültige" Notation für die Systemprogrammierung, an der sich nicht mehr viel ändern wird, solange es PCs gibt;
es scheint fast so. An der üblichen mathematischen Formel-Notation mit Punkt-, Strich- und Prozentrechnung sowie Bruchstrich, Integralzeichen etc. ändert sich ja auch schon seit über 200 Jahren fast nichts mehr.c++ ist für systemprogrammierung besser geeignet.
-
volkard schrieb:
Hobbyprogrammierer schrieb:
vielleicht ist C ja wirklich die "endgültige" Notation für die Systemprogrammierung, an der sich nicht mehr viel ändern wird, solange es PCs gibt;
es scheint fast so. An der üblichen mathematischen Formel-Notation mit Punkt-, Strich- und Prozentrechnung sowie Bruchstrich, Integralzeichen etc. ändert sich ja auch schon seit über 200 Jahren fast nichts mehr.c++ ist für systemprogrammierung besser geeignet.
LOLLLLL!!!!!!!
Deswegen ist Windows hautpsächlich in C geschrieben! Und UNIX (und derivate) sidn ALLE in C geschrieben (abgesehehn vom ur-unix welches in asm geschrieben war)C rulet!
-
llllllllllol schrieb:
Deswegen ist Windows hautpsächlich in C geschrieben! Und UNIX (und derivate) sidn ALLE in C geschrieben (abgesehehn vom ur-unix welches in asm geschrieben war)
hat historische gründe.
-
volkard schrieb:
llllllllllol schrieb:
Deswegen ist Windows hautpsächlich in C geschrieben! Und UNIX (und derivate) sidn ALLE in C geschrieben (abgesehehn vom ur-unix welches in asm geschrieben war)
hat historische gründe.
Ja, aber OOP ist ja eine Art Abstraktionsebene (Abstraktionsebene ist vllt nicht das richtige wort). Systemprogrammierung ist immernoch lowlevel programmierung.
=> C
-
lllllllllllllol schrieb:
Ja, aber OOP ist ja eine Art Abstraktionsebene (Abstraktionsebene ist vllt nicht das richtige wort). Systemprogrammierung ist immernoch lowlevel programmierung.
=> Cdu machst gerade den fehler, systemprogrammierung als das zu definieren, was man in c macht.
-
volkard schrieb:
lllllllllllllol schrieb:
Ja, aber OOP ist ja eine Art Abstraktionsebene (Abstraktionsebene ist vllt nicht das richtige wort). Systemprogrammierung ist immernoch lowlevel programmierung.
=> Cdu machst gerade den fehler, systemprogrammierung als das zu definieren, was man in c macht.
Du wirst nicht leugnen können, dass sich C++ zu einer höheren Sprache entwickelt hat als C. OOP ist ein provileg einer höheren sprache, wogegen C eher lowlevelmäßig ist. Und die STL tut den rest: Highlevel und bequem!
Ich definiere Systemnprogrammierung mit lowlevel.
Da ich C++ zu highlevel halte, würde ich C für systemprogrammierung vorziehen.
-
llllllllllllllllol schrieb:
Du wirst nicht leugnen können, dass sich C++ zu einer höheren Sprache entwickelt hat als C. OOP ist ein provileg einer höheren sprache, wogegen C eher lowlevelmäßig ist. Und die STL tut den rest: Highlevel und bequem!
du wirst nicht leugnen können, daß man mit c++ grundlegende datenstrukturen der systemprogrammierung sehr fein in klassen packen kann und dabei null zusatzkosten zur laufzeit hat. und das ist was gutes, das programmieren fällt leichter, geht schneller, ist fehlerärmer. als systemprogrammierer wird man natürlich nicht mit std::string oder RTTI um sich hauen.