Wie lernt man C, wenn man bereits C++ kann?



  • Hi

    Ich kenne mich bereits ziemlich gut mit C++ aus und moechte mich nun mit C befassen. Meine Frage: Wie gehe ich das am besten an? Is es empfehlenswert ein Anfaengerbuch zu lesen oder kann man bereits mit fortgeschrittener Literatur anfangen?

    Was wuerdet ihr (eventuell konkrete Buecher/Tutorials) empfehlen?

    PS:
    Ich habe mich bisher nur mit objektorientierten Sprachen auseinandergesetzt. Habe also keien Erfahrung mit prozeduraler Programmierung.



  • Wenn du C++ kannst, dann kannst du, abgesehen von ein paar vereinzelten Artefakten, C auch schon ­čśë



  • dot schrieb:

    Wenn du C++ kannst, dann kannst du, abgesehen von ein paar vereinzelten Artefakten, C auch schon ­čśë

    Das haette ich nicht gedacht. Nur scho aus dem Grund, dass hier einige Augenkrebs bekommen, wenn sie etwas wie C/C++ sehen.
    Die Programmierkonzepte zwischen C und C++ duerften aber schon ziemlich unterschiedlich sein, nicht? Nur schon wegen der Tatsache, dass C++ objektorientiert ist und C nicht.

    Gibt es denn ganz konrket Dinge, die man sich trotzdem noch anschauen sollte? Die man in modernem C++ nicht braucht, in C jedoch schon?



  • C++ ist eine Multiparadigmensprache. Der "OOP Teil" von C++ ist nur ein Teil von C++. Grunds├Ątzlich hat OOP eigentlich nichts mit bestimmten Features einer bestimmten Sprache zu tun. Man kann auch in C oder Assembler objektorientiert Programmieren, genauso wie man in C++ auch prozedural oder modular oder generisch programmieren kann.



  • Objektorientierung in Assembler? Das will ich sehen.



  • Wo liegt das Problem? OOP ist nur eine Art zu denken...



  • icarus2 schrieb:

    Was wuerdet ihr (eventuell konkrete Buecher/Tutorials) empfehlen?

    Da du ja schon programmieren kannst, nat├╝rlich die Bibel f├╝r C von den Erfindern von C:
    "The C Programming Language" von Brian W. Kernighan und Dennis M. Ritchie
    in English und mit ANSI C.



  • dot schrieb:

    Wo liegt das Problem? OOP ist nur eine Art zu denken...

    Zeig mal ein Beispiel, ich kann mir unter der Art, OOP in ASM zu denken gerade nichts vorstellen.



  • Kompilier halt ein OO C++ Programm und schau dir den Output an?



  • So n Schwachsinn.



  • Na wenn du das sagst...



  • DirkB schrieb:

    icarus2 schrieb:

    Was wuerdet ihr (eventuell konkrete Buecher/Tutorials) empfehlen?

    Da du ja schon programmieren kannst, nat├╝rlich die Bibel f├╝r C von den Erfindern von C:
    "The C Programming Language" von Brian W. Kernighan und Dennis M. Ritchie
    in English und mit ANSI C.

    Das Buch sieht auf den ersten Blick in etwa nach dem aus, wonach ich suche. Vielleicht werde ich es mir kaufen.



  • 314159265358979 schrieb:

    So n Schwachsinn.

    Nein. Kein Schwachsinn.

    Wenn du weiter hier bleibst und lernst wirst du das in ein paar Jahren auch verstehen.



  • Und wenn du dann C-Programme schreibst, benenn sie in *.c (nicht *.cpp) und/oder sage dem Compiler dass es ein C-Programm ist.



  • Wenn f├╝r euch ein zusammenh├Ąngendes St├╝ck Speicher von gewollten Werten bereits OOP ist, okay...



  • 314159265358979 schrieb:

    dot schrieb:

    Wo liegt das Problem? OOP ist nur eine Art zu denken...

    Zeig mal ein Beispiel, ich kann mir unter der Art, OOP in ASM zu denken gerade nichts vorstellen.

    Du kannst auch in Assembler Strukturen anlegen. Dann programmierst du noch ein paar Subroutinen, die einen Zeiger auf eine Instanz einer solchen Struktur entgegennehmen; das sind dann die Objekt-Methoden.

    Auch Vererbung und Komposition sind ├╝ber verschachtelte Strukturen m├Âglich. Brauchst du sowas wie Laufzeitpolymorphie, wirds allerdings etwas aufwendiger.



  • icarus2 schrieb:

    dot schrieb:

    Wenn du C++ kannst, dann kannst du, abgesehen von ein paar vereinzelten Artefakten, C auch schon ­čśë

    Das haette ich nicht gedacht. Nur scho aus dem Grund, dass hier einige Augenkrebs bekommen, wenn sie etwas wie C/C++ sehen.

    Was meinst du mit C/C++? Diese Sprache kenne ich nicht.
    Wenn du M├Âchtegern-OOPler meinst, die hier ├Âfter mal aufschlagen und ihr OOP Knowhow kundtun, dies aber z.B. mit eindeutig C Sprachmitteln tun (malloc), solltest du dir diese Leute nicht als Vorbild nehmen. Richtige OOP macht man sowieso besser in puren OOP Sprachen, z.B. Smalltalk.

    F├╝r C hatte da mal was vorbereitet:
    http://www.c-plusplus.net/forum/p2100881#2100881

    Kaufe dir wie schon empfohlen K&RII, wenn du mit relativ einfachem Englisch nicht so klarkommst, evtl. auch Prinz/Prinz ├ťbersetzungen, auf keinen Fall jedoch B├╝cher von Pfuscher J.Wolf.

    Gibt es denn ganz konrket Dinge, die man sich trotzdem noch anschauen sollte? Die man in modernem C++ nicht braucht, in C jedoch schon?

    Zeigerarithmetik, Speicherverwaltung, Strukturen/Unions, und eben Funktionen, sowie nat├╝rlich die Standardbibliotheken (C89,C99), evtl. auch POSIX, ...
    F├╝rs Erste kannst du dir mal scanf/printf anschauen, bei richtiger Kenntnis und voller Ausnutzung der Eigenschaften bleibt hier dein Code wesentlich k├╝rzer als z.B. in C++.



  • @ Wutz:
    Ich kenne die Sprache C/C++ auch nicht. Ich wollte damit nur sagen, dass hier oft im Forum gesagt wurde, wie unterschiedlich C und C++ sind. Deswegen war ich so ueberrascht, als dot sagte, mann koenne automatisch C wenn man C++ kann.

    Ich denke ich werde mir das Buch kaufen. Danke auch noch fuer den Link.



  • Ich f├╝rchte, es ist um PI geschehen. Er beginnt, in einer eigenen Welt zu leben. Dann gibt's auch keine Lernfortschritte mehr.
    Schade eigentlich.

    Nat├╝rlich kann man mit ASM oder C objektorientiert programmieren.



  • DirkB schrieb:

    icarus2 schrieb:

    Was wuerdet ihr (eventuell konkrete Buecher/Tutorials) empfehlen?

    Da du ja schon programmieren kannst, nat├╝rlich die Bibel f├╝r C von den Erfindern von C:
    "The C Programming Language" von Brian W. Kernighan und Dennis M. Ritchie
    in English und mit ANSI C.

    ­čĹŹ Muss denn jede solche Frage C versus C++ gleich in Dogmatismus ausarten? ­čśĽ Die Programmiersprache C/C++ gibt es sehr wohl, weil zum Gl├╝ck der volle Umfang von C in C++ enthalten ist. W├Ąre es anders gewesen, h├Ątte die Einf├╝hrung von C++ vor vielen Jahren eine deutlich geringere Akzeptanz gehabt. Jeder, der rein prozedural in C programmieren m├Âchte, verwendet daf├╝r denselben Compiler und kann das tun! ­čĽÂ


Log in to reply