C++ oder doch lieber C?



  • Ich lerne im Moment C++ doch bin im Moment sehr skeptisch.
    Ich habe Angefangen zu Programmieren zu lernen, um später einmal Programme zu schreiben.
    Teils kleine Programme die mir das Leben am Computer mit Linux vereinfachen, aber auch welche die mir später im job weiter helfen.

    Ein weiterer Grund ist aber auch, das ich mein Linux System besser verstehen will und der Kernel (Treiber usw.) wurden aber bekanntlich in C geschrieben.

    Deshalb frage ich mich:
    - Um Linux (bzw. Unix Systeme) besser verstehen zu können, hilft mir dabei C mehr als C++?
    - Wielange wird es dauern bis man in C "eingearbeitet" ist?
    - Stimmt es wirklich, das es in C um ein vielfaches schwerer ist, Programme mit einer GUI zu versehen, als bei C++?
    - Mit welcher Sprache werde ich später im Beruf eher etwas Anfangen können?

    Welches Buch ist für einen Anfänger/Fortgeschrittenen zu empfehlen, es wurde oft ein Buch vom Entwickler von C genannt "Programmieren in C" (C-Bibel?), ist es für gut zu verstehen? Sollte man dazu das Lösungsbuch nehmen?



  • Es gibt nicht ohne Grund soviele Sprachen wegen unterschiedlich gelagerter Probleme eben.

    Ich persöhnlich lebe im Bereich Programmierung nach dem Motto
    "Alles antesten" sicherlich bleibt man irgendwo hängen meine Liebe gilt C#.

    Nichtsdestotrotz hat alles seine Daseinberechtigung
    und wettern und eifern was nun besser ist bringt nichts.

    C ist eine Teilmenge von C++.
    Ich habe zuerst mit C angefangen dann C++ weitergemacht aber nichtunbedingt
    OOP programmiert eher so MischMasch. Was ja nicht unbedingt schlecht ist.
    Bjarne Stroustrup schreibt ja in seinem Buch, C++ ist eben auch dahingehend entwickelt alt C-Header die sich bewährt haben einfach nutzen zu können und nicht so streng auf OO abzufahren. C ist ja nur bedingt OO mit seinen structs eben mehr prozedural.

    In einem Buch Systemprogrammierung unter Linux wirst Du somit bestimmt keine Vererbung finden, sondern prozedurale Programmierung.



  • Unentschlossen schrieb:

    - Um Linux (bzw. Unix Systeme) besser verstehen zu können, hilft mir dabei C mehr als C++?

    POSIX ist C, von daher würde ich sagen, dass C schon ein wenig sinnvoller wäre

    Unentschlossen schrieb:

    - Wielange wird es dauern bis man in C "eingearbeitet" ist?

    Das hängt wohl von dir ab. Monate, Jahre wird es schon dauern.

    Unentschlossen schrieb:

    - Stimmt es wirklich, das es in C um ein vielfaches schwerer ist, Programme mit einer GUI zu versehen, als bei C++?

    Schwerer würde ich nicht sagen. Es ist eher aufwändiger.

    Unentschlossen schrieb:

    - Mit welcher Sprache werde ich später im Beruf eher etwas Anfangen können?

    Das hängt sehr stark von deinem angestrebten Beruf ab. Bei mir z.B. ist C sinnvoller.



  • Wie sieht es denn mit lang lebigkeit der Sprachen aus, welche wird in Zukunft wahrscheinlich weiterhin eine Rolle spielen?
    TactX: Darf man fragen was du von Beruf machst?



  • in zukunft werden mischsprachen an bedeutung gewinnen: man kann sie interpretieren, JITen oder richtig kompilieren. ausserdem muessen sie genuegend "hoch" sein: "hochsprache". mehr dazu im letzten satz.
    diese feats muessen nicht unbedingt in der sprachspezi festgeschrieben sein. es reicht schon, wenn irgendwer nen compiler oder JITer zu ner scriptsprache rausbringt.

    C wirst du mit sicherheit auf allen uCs und embedded geschichten verbleiben sehen.
    auf staerkeren maschinen (mehr RAM und takte) wird sich keine sau mehr die qualen antun, millionen von codezeilen zu tippen und alle raeder der geschichte neu zu erfinden, wenn das mit hoeheren sprachen (-> scriptsprache) muehelos und wartbar von statten geht.



  • Unentschlossen schrieb:

    TactX: Darf man fragen was du von Beruf machst?

    Ich bin in der Endphase meines Studiums (Mechatronik/Elektrotechnik) und programmiere im Nebenjob µCs.



  • TactX schrieb:

    ...und programmiere im Nebenjob µCs.

    das können ja nur avr's sein 😉



  • net schrieb:

    TactX schrieb:

    ...und programmiere im Nebenjob µCs.

    das können ja nur avr's sein 😉

    Ähmmm, nein. Ich verstehe nicht was du mir damit sagen willst? 😕



  • TactX schrieb:

    Ähmmm, nein. Ich verstehe nicht was du mir damit sagen willst? 😕

    bist du nicht linux freak? das sind meines wissens die einzigen mcu's die man komfortabel von'ner linux-box beharken kann. für alles andere braucht man windoofs.



  • Nunja, ich sagte Nebenjob. Da kann man sich nicht raussuchen mit was man arbeitet 😉
    Außerdem bin ich z.Z. auch privat meistens mit Windows unterwegs.

    PS: Zur Zeit eher PICs *würg*

    PPS: Der verwendete Compiler rennt übrigens auch unter Linux 😉



  • Da du in deinem Ausgangspost schreibst, daß du dich für richtige Programmierung interessierst (Kernel, Treiber etc.), solltest du C lernen. C# und irgendwelche Skriptsprachen sind ja gut und schön, werden dir aber bei sowas wenig nützen. Ich hab mich für den Oldschool Weg des C Hackers entschieden und habe es nie bereut.



  • TactX schrieb:

    Außerdem bin ich z.Z. auch privat meistens mit Windows unterwegs.

    ja, irgendwann kommt jeder auf den rechten weg 👍

    TactX schrieb:

    PPS: Der verwendete Compiler rennt übrigens auch unter Linux 😉

    es gibt viele portierungen von gcc's und lcc's die unter linux laufen, aber die erzeugen oft minderwertigen code (zu gross, zu langsam, fehlerhaft). und man muss oft mit makefiles rumfummeln...aber richtig schlimm wird's erst beim debuggen oder downloads zum target. *foobar* 👎



  • net schrieb:

    es gibt viele portierungen von gcc's und lcc's die unter linux laufen, aber die erzeugen oft minderwertigen code (zu gross, zu langsam, fehlerhaft). und man muss oft mit makefiles rumfummeln...aber richtig schlimm wird's erst beim debuggen oder downloads zum target. *foobar* 👎

    Also mein Compiler ist eigentlich ziemlich gut. Hat bisher keine Probleme gemacht und optimiert imho ordentlich.

    Nebenfrage: Hast du schonmal mit NEC µCs gearbeitet? Wenn ja, taugen die? (Design, Manuals, Tools)



  • TactX schrieb:

    Also mein Compiler ist eigentlich ziemlich gut. Hat bisher keine Probleme gemacht und optimiert imho ordentlich.

    aha, ist aber ein kommerzielles tool, kein gcc...

    TactX schrieb:

    Nebenfrage: Hast du schonmal mit NEC µCs gearbeitet? Wenn ja, taugen die? (Design, Manuals, Tools)

    ja, 2 mal hatte ich mit 'nem nec v850 zu tun. einmal eine komplette software für so'n bedienterminal mit funkverbindung zum pc und grafikausgabe auf 'nem tft-bilschirm. das andere mal meinen selbstgemachten tcp/ip stack portiert in eine art gsm-modul mit eCos als betriebssystem.
    der nec v850 hat 'ne 32bit risc cpu drin und dsp-ähnliche features wie hardware-multiplikation (a*b in einem taktzyklus). einziger nachteil: 32bit zugriffe gehen nur an durch 4 teilbare adressen, 16 bit zugriffe nur an gerade adressen. in allen anderen fällen: bus error.
    für ersteres hab' ich den greenhills compiler genommen (sehr gut, erkennt z.b. misaligned zugriffe und baut dementsprechend den code um)
    für's andere musste der gcc herhalten (hersteller des moduls hat das vorgeschrieben wegen des blöden ecos da drin). der code den der gcc erzeugt ist ungefähr 1.5 mal so gross wie der vom greenhills. debuggen und downloads ging bei beiden nur über die serielle - ätzend. es gibt aber auch v8xx-typen mit jtag schnittstelle...

    guckst du:
    http://www.ee.nec.de/_pdf/U12893EE3V0PL00.PDF
    http://www.ee.nec.de/news/09_news_archive_2003/documents/V850EMA3_D_2003_01_99.pdf

    irgendwo bei google findeste sicher noch ein programmer's manual



  • Der Sprachumfang von C ist klein und zugleich kannst Du ALLES mit C programmieren. Die Theorie von C lernst Du in wenigen Wochen komplett. Du könntest dann zum Beispiel Grafik mit der SDL-Bibliothek hinzunehmen und schon richtig coole Projekte realisieren. Natürlich dauert es auch mit C lange und braucht einfach Zeit und Erfahrung, um die mörderischen Fallstricke zu erkennen, die C so tricky machen.
    Mit einem guten Basiswissen in C liegt Du auf alle Fälle nicht falsch, wenn es um Linux und auch um berufliche Chancen geht. C ist und bleibt eine Grundvoraussetzung für jeden IT-Experten.
    C++ ist um mehrere Dimensionen abstrakter. Die objektorientierte Programmierung in C++ erfordert neben den Grundelementen der herkömmlichen Programmierung zusätzlich ein völlig neues Denken beim Grundaufbau und dem Design von Programmen. Mir hat es sehr geholfen, zuerst mit C Erfahrungen zu sammeln, ohne die Anforderungen der abstrakten Sprachelemente zusätzlich zu lernen. Danach war es für mich viel einfacher und ich konnte die weiteren Lerninhalte besser verarbeiten. Das Lernen von C++ bis zur professionellen Anwendung wird oft unterschätzt. Bücher, die C++ in 21 Tagen versprechen, gehören verboten. Rechne eher ein Jahr für das Basiswissen in C++ und nochmal x Jahre für die Routine.
    Der "Oldschool Weg des C Hackers" zahlt sich langfristig aus. Vor allem wenn Du flexibel und geduldig genug bist. C++ ist nicht C. Du lernst zwei Sprachen, das muss Dir von Anfang an bewusst sein.


Anmelden zum Antworten