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



  • 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! 🕶



  • shark schrieb:

    Die Programmiersprache C/C++ gibt es sehr wohl

    Naja, eigentlich gibt es eher Java/C#.

    Das dumme ist, daß man in C und in C++ sehr unterschiedlich programmieren *sollte*.

    Insbesondere beim genannten Augenkrebs kommt es immer wieder vor, daß jemand allergisch auf typische Problemlösungen in einer der beiden Sprachen ist aber nicht auf die in der anderen.



  • 314159265358979 schrieb:

    Wenn für euch ein zusammenhängendes Stück Speicher von gewollten Werten bereits OOP ist, okay...

    OOP ist eine Denkschule, die auf dem Konzept eines Objektes als eindeutig identifizierbare Entität, die sowohl einen Zustand (Daten/Attribute) als auch ein Verhalten (Methoden) aufweist, basiert. Ein zusammenhängendes Stück Speicher von Werten allein ist also noch keine OOP. Im "gewollt" liegt der Schlüssel. Verschiedenste (abstrakte) Konzepte in Form von einem Satz von Daten und Methoden, die auf diesen Daten arbeiten, auszudrücken und komplexe Systeme über die Interaktion von weniger komplexen Teilsystemen aus Instanzen solcher Formen zu verstehen. Das ist OOP. In einer Sprache deren Vokabular das Wörtchen class einschließt, fällt es natürlich leichter OO Gedanken auszudrücken. Aber für OOP ist die Verfügbarkeit von class genauso irrelevant wie das vorkommen von class in Code automatisch heißt, dass es sich um OOP handeln muss.



  • Okay, ich denke ich habs verstanden, danke 😉

    @volkard: Was willst du denn damit sagen? 😮



  • 314159265358979 schrieb:

    @volkard: Was willst du denn damit sagen? 😮

    Das ist volkards Art dir zu sagen, dass du doch mehr auf andere hören solltest.



  • Was lernt und das nun? 😕 NIX! 😞 Der Fragesteller möchte von C++ kommend sich mit der prozeduralen Programmierung von C vertraut machen. Kann nicht schaden - oder doch! 😃



  • icarus2 schrieb:

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

    Ich empfehle, auch in C objektorientiert zu programmieren.
    Damit gibt es fast gar keinen Bedarf, noch etwas zu lernen.
    Fast alles, was man vermißt, läßt sich leicht umschiffen.
    Man sollte wohl nicht versuchen, Sachen zu machen, die in C weh tun, zum Beispiel ein Framework bauen, das Exceptions nebst Stack-Unwinding emuliert, oder die stl nachbauen.

    Würde ich darüberhinaus versuchen, durch Lesen mein C zu verbessern, würde ich wohl MMIXWare (Don Knuth) nochmal aufmerksam lesen oder qmail und djbdns (djb). Würde ich aber nicht, sondern einfach drauflosarbeiten und wenn ich ratlos bin, frage ich wie immer hier.


Anmelden zum Antworten