Wie am besten anfangen?



  • Hallo, ich möchte mir gerne C beibringen und wenn ich das schaffe danach C++. Aber zuerst mal C.

    Wie fange ich da am besten an. Könnt ihr mir Tutorials oder E-Books empfehlen?
    Wenn es sehr gute Bücher gibt würde ich mir auch überlegen eins zu kaufen.

    Ist es sinnvoller alles gleich auf Englisch zu lernen?

    Wäre nett wenn ihr mir weiterhelft.



  • pongo710 schrieb:

    Ist es sinnvoller alles gleich auf Englisch zu lernen?

    Ja, anyway, die interessanteste Doku ist meist auf Englisch. Recht gut ist The C Book. Bitte tu' uns nicht "C von A bis Z" an ... Danke!



  • pointercrash() schrieb:

    Bitte tu' uns nicht "C von A bis Z" an ... Danke!

    So viel hab ich bisher schon aus anderen Forenbeiträgen rausgelesen, dass ich da lieber meine Finger weglassen sollte.



  • Ein Onlinebook, etwas zähflüssig:

    http://flylib.com/books/en/2.179.1.1/1/


  • Mod

    Ganz wichtiger Tipp: Fang entweder gleich mit C++ an ohne C oder bleib bei C. Auch wenn der Name es verheißt, baut C++ nicht auf C auf. Bis auf die Syntax sind die Sprachen vom Konzept her völlig unterschiedlich und du musst alles umlernen. Die schlimmsten C++-Programmierer sind die, die in C++ wie in C programmieren.



  • SeppJ schrieb:

    Ganz wichtiger Tipp: Fang entweder gleich mit C++ an ohne C oder bleib bei C. Auch wenn der Name es verheißt, baut C++ nicht auf C auf. Bis auf die Syntax sind die Sprachen vom Konzept her völlig unterschiedlich und du musst alles umlernen. Die schlimmsten C++-Programmierer sind die, die in C++ wie in C programmieren.

    Dieses C mit Klassen? Jo, stimmt, das ist schrecklich. Aber welches Paradigma ist richtiger? Erstmal 'ne rein funktionale Programmiersprache lernen oder gleich mit OOP rein in die Wolle. Ich erwarte keine Antwort. Für mich eigentlich unbeantwortbar, die ganze Schule und Uni immer nur funktional, das versaut die Lebensperspektiven ... 😉



  • SeppJ schrieb:

    Ganz wichtiger Tipp: Fang entweder gleich mit C++ an ohne C oder bleib bei C. Auch wenn der Name es verheißt, baut C++ nicht auf C auf.

    Bis jetzt hatte ich immer gehört, dass es sinnvoll ist vor C++ C zu lernen. DU meinst also, dass das ehr schlecht ist.



  • pongo710 schrieb:

    Bis jetzt hatte ich immer gehört, dass es sinnvoll ist vor C++ C zu lernen. Du meinst also, dass das ehr schlecht ist.

    Das hängt vom Schüler ab. Für die meisten ist es eher schlecht.



  • Also ich habe direkt mit C++ angefangen, anstatt mit C. Dazu habe ich mir das Buch "C++ Primer" zugelegt (rund 1000 Seiten dick). In dem genialen Buch wird dir nicht nur C++ vermittelt, sondern auch teilweise C-Elemente erklärt, sodass du Programme, die C kompatibel sind, vollkommen verstehen kannst.

    Ich kann dir das Buch nur wärmstens ans Herz legen!



  • mhh vieleicht sollte ich dann wirklich gleich mit c++ anfangen.



  • Tjou, da bin ich wohl das totale Gegenteil von 'satanfreze'*g*.
    Mir hat n Kollege von der Linzer Hagenberg-Fachhochschule empfohlen unbedingt mit C zu starten. Is die Basis für viele andere Programmiersprachen. Programmierprofis haben so ziemlich alle mit C durchgestartet.

    Habe mir darauf bei Amazon das Buch 'C in 21 Tagen' um 26,00€ besorgt & bin gerade mal mit dem 1. Tag durch 😃
    Macht aber Spaß mit diesem Buch zu lernen & super ausführlich aufgebaut, mit Kontrollfragen & Workshops nach jedem Tag.
    http://www.amazon.de/21-Tagen-Schritt-f%C3%BCr-Profi/dp/3827242517/ref=sr_1_2?ie=UTF8&qid=1288013512&sr=8-2

    Tipp:
    Besorg dir n MASSIVEN (Gewicht des Buchs 1,2kg 😃 ) Buchständer o irgendwas, wo du das Teil anlehnen kannst, so is dann toll zu lesen & nebenbei zu programmieren.



  • Ich würde mit C anfangen. Es ist einfach angenehmer und simpler für den Einstieg, du musst dir nur bewusst machen dass ein Umstieg auf C++ mehr ist als ein Umstieg von printf nach cout 😃
    Aber mit OOP anzufangen halte ich für wenig sinnvoll, genauso wenig wie C++ OOP-los zu lernen.



  • oOoOoO schrieb:

    Ich würde mit C anfangen. Es ist einfach angenehmer und simpler für den Einstieg, du musst dir nur bewusst machen dass ein Umstieg auf C++ mehr ist als ein Umstieg von printf nach cout 😃
    Aber mit OOP anzufangen halte ich für wenig sinnvoll, genauso wenig wie C++ OOP-los zu lernen.

    Also wer mit C++ anfängt ist dann quasi Objektorientierungslos? 😃



  • Fang mit C an und bleib dabei. Wenn du so große Projekte machst so dass du unbedingt OOP brauchst dann nimm bitte nicht C++. Da wurde versucht alles mögliche rein zu quetschen und die Lernkurve ist dadurch extrem flach, es gibt kaum eine Sprache die hässlicher zu programmieren ist.

    Da der Trend immer mehr dazu geht mehreren Programmiersprachen für ein großes Projekt zu nutzen bleib bei C für alle kleine Projekte oder Systemnahes/Performantes und kombinieren für größere Projekte C mit anderen Sprachen.

    Niemand würde heute ein Haus bauen mit nur einem Allzweckwerkzeug da gibt es für jeden Arbeitsschritt weit besseres, sehr ähnlich ist es mit den Programmiersprachen heute. C++ muss sich wirklich niemand mehr antuhen und wird auch nur noch wegen altem Code oder alten Programmierern, die nix anderes gut können, verwendet.



  • denkmalnach schrieb:

    Fang mit C an und bleib dabei. Wenn du so große Projekte machst so dass du unbedingt OOP brauchst dann nimm bitte nicht C++. Da wurde versucht alles mögliche rein zu quetschen und die Lernkurve ist dadurch extrem flach, es gibt kaum eine Sprache die hässlicher zu programmieren ist.

    Da der Trend immer mehr dazu geht mehreren Programmiersprachen für ein großes Projekt zu nutzen bleib bei C für alle kleine Projekte oder Systemnahes/Performantes und kombinieren für größere Projekte C mit anderen Sprachen.

    Niemand würde heute ein Haus bauen mit nur einem Allzweckwerkzeug da gibt es für jeden Arbeitsschritt weit besseres, sehr ähnlich ist es mit den Programmiersprachen heute. C++ muss sich wirklich niemand mehr antuhen und wird auch nur noch wegen altem Code oder alten Programmierern, die nix anderes gut können, verwendet.

    So ein Unfug.



  • pointercrash() schrieb:

    Dieses C mit Klassen? Jo, stimmt, das ist schrecklich. Aber welches Paradigma ist richtiger? Erstmal 'ne rein funktionale Programmiersprache lernen oder gleich mit OOP rein in die Wolle. Ich erwarte keine Antwort. Für mich eigentlich unbeantwortbar, die ganze Schule und Uni immer nur funktional, das versaut die Lebensperspektiven ... 😉

    Nur als Tipp: In C gibts zwar Funktionen, aber man programmiert darin gewöhnlich nicht funktional 😉



  • pongo710 schrieb:

    Hallo, ich möchte mir gerne C beibringen und wenn ich das schaffe danach C++. Aber zuerst mal C.

    Wenn es das Ziel ist C++ zu programmieren empfiehlt es sich nicht mit C anzufangen. Auch wenn die meisten C Programme formal C++ Programme sind, würde man ein C++-Programm niemals so formulieren, wie man das in C macht. Man legt sich beim Erlernen von C einen Programmierstil zu, den man bei C++ gleich wieder verlernen muß. Andernfalls baut man ganz schnell gravierende Mängel in die Programme ein.

    Wenn man C erlernen will, wird es schwierig, da es faktisch keinerlei Literatur gibt, die korrekte C Programme enthält oder das Programmieren korrekter C Programme lehren würde. C ist die Programmiersprache mit der es am einfachsten ist unsichere Programme zu schreiben. Die Liste der Exploits für die diversen C Programme ist irrsinnig lang, und es sind immer wieder die gleichen Fehler die auftreten: Buffer over-/underflow, Formatstring Attacken ... Daran sieht man, daß es auch den selbsternannten C-Könnern nicht wirklich gelingt einen korrekten Programmierstil durchzuhalten und einfachste aber fatale Fehler zu vermeiden. Auch die Standardlibrary enthält eine ganze Reihe von Funktionen, die inhärent unsicher sind und bei denen man peinlichst darauf achten muß, daß diese Designfehler nicht zu Exploits in der Software führen. Das Problem in diesem Kontext ist es, daß Anfängerliteratur das nicht erklärt und so Falsches lehrt mit verheerenden Folgen. Selbst die ISO Norm enthält falsche Programmbeispiele! Der absolute Tiefpunkt ist "gets", diese Funktion ist grundsätzlich so aufgebaut, daß die Verwendung in einem Programm unweigerlich zu einem Exploit führt. Wie man so einen Dreck überhaupt einmal in die ANSI Norm aufnehmen konnte, ist schleierhaft. Wenn es sich irgendwie vermeiden läßt C zu benutzen, sollte man dies auch tun. Hier im C Forum wird das natürlich grundsätzlich anders gesehen, davon sollte man sich nicht blenden lassen. C ist schwierig zu beherrschen und schlechte Literatur führt sehr leicht zu fehlerhaften Programmen, die zwar auf den ersten Blick korrekt funktionieren, in der Realität aber fatale Sicherheitslücken enthalten. Gute C-Literatur müßte dies berücksichtigen. Womit wir wieder am Anfang wären.



  • ~john schrieb:

    pongo710 schrieb:

    Hallo, ich möchte mir gerne C beibringen und wenn ich das schaffe danach C++. Aber zuerst mal C.

    Wenn es das Ziel ist C++ zu programmieren empfiehlt es sich nicht mit C anzufangen. Auch wenn die meisten C Programme formal C++ Programme sind, würde man ein C++-Programm niemals so formulieren, wie man das in C macht. Man legt sich beim Erlernen von C einen Programmierstil zu, den man bei C++ gleich wieder verlernen muß. Andernfalls baut man ganz schnell gravierende Mängel in die Programme ein.

    Wenn man C erlernen will, wird es schwierig, da es faktisch keinerlei Literatur gibt, die korrekte C Programme enthält oder das Programmieren korrekter C Programme lehren würde. C ist die Programmiersprache mit der es am einfachsten ist unsichere Programme zu schreiben. Die Liste der Exploits für die diversen C Programme ist irrsinnig lang, und es sind immer wieder die gleichen Fehler die auftreten: Buffer over-/underflow, Formatstring Attacken ... Daran sieht man, daß es auch den selbsternannten C-Könnern nicht wirklich gelingt einen korrekten Programmierstil durchzuhalten und einfachste aber fatale Fehler zu vermeiden. Auch die Standardlibrary enthält eine ganze Reihe von Funktionen, die inhärent unsicher sind und bei denen man peinlichst darauf achten muß, daß diese Designfehler nicht zu Exploits in der Software führen. Das Problem in diesem Kontext ist es, daß Anfängerliteratur das nicht erklärt und so Falsches lehrt mit verheerenden Folgen. Selbst die ISO Norm enthält falsche Programmbeispiele! Der absolute Tiefpunkt ist "gets", diese Funktion ist grundsätzlich so aufgebaut, daß die Verwendung in einem Programm unweigerlich zu einem Exploit führt. Wie man so einen Dreck überhaupt einmal in die ANSI Norm aufnehmen konnte, ist schleierhaft. Wenn es sich irgendwie vermeiden läßt C zu benutzen, sollte man dies auch tun. Hier im C Forum wird das natürlich grundsätzlich anders gesehen, davon sollte man sich nicht blenden lassen. C ist schwierig zu beherrschen und schlechte Literatur führt sehr leicht zu fehlerhaften Programmen, die zwar auf den ersten Blick korrekt funktionieren, in der Realität aber fatale Sicherheitslücken enthalten. Gute C-Literatur müßte dies berücksichtigen. Womit wir wieder am Anfang wären.

    Danke für diese Ausführliche Antwort. Ich werde nach den ganzen Antworten hier wohl nicht C lernen.



  • ~john schrieb:

    pongo710 schrieb:

    Hallo, ich möchte mir gerne C beibringen und wenn ich das schaffe danach C++. Aber zuerst mal C.

    Wenn es das Ziel ist C++ zu programmieren empfiehlt es sich nicht mit C anzufangen. Auch wenn die meisten C Programme formal C++ Programme sind, würde man ein C++-Programm niemals so formulieren, wie man das in C macht. Man legt sich beim Erlernen von C einen Programmierstil zu, den man bei C++ gleich wieder verlernen muß. Andernfalls baut man ganz schnell gravierende Mängel in die Programme ein.

    Wenn man C erlernen will, wird es schwierig, da es faktisch keinerlei Literatur gibt, die korrekte C Programme enthält oder das Programmieren korrekter C Programme lehren würde. C ist die Programmiersprache mit der es am einfachsten ist unsichere Programme zu schreiben. Die Liste der Exploits für die diversen C Programme ist irrsinnig lang, und es sind immer wieder die gleichen Fehler die auftreten: Buffer over-/underflow, Formatstring Attacken ... Daran sieht man, daß es auch den selbsternannten C-Könnern nicht wirklich gelingt einen korrekten Programmierstil durchzuhalten und einfachste aber fatale Fehler zu vermeiden. Auch die Standardlibrary enthält eine ganze Reihe von Funktionen, die inhärent unsicher sind und bei denen man peinlichst darauf achten muß, daß diese Designfehler nicht zu Exploits in der Software führen. Das Problem in diesem Kontext ist es, daß Anfängerliteratur das nicht erklärt und so Falsches lehrt mit verheerenden Folgen. Selbst die ISO Norm enthält falsche Programmbeispiele! Der absolute Tiefpunkt ist "gets", diese Funktion ist grundsätzlich so aufgebaut, daß die Verwendung in einem Programm unweigerlich zu einem Exploit führt. Wie man so einen Dreck überhaupt einmal in die ANSI Norm aufnehmen konnte, ist schleierhaft. Wenn es sich irgendwie vermeiden läßt C zu benutzen, sollte man dies auch tun. Hier im C Forum wird das natürlich grundsätzlich anders gesehen, davon sollte man sich nicht blenden lassen. C ist schwierig zu beherrschen und schlechte Literatur führt sehr leicht zu fehlerhaften Programmen, die zwar auf den ersten Blick korrekt funktionieren, in der Realität aber fatale Sicherheitslücken enthalten. Gute C-Literatur müßte dies berücksichtigen. Womit wir wieder am Anfang wären.

    So ein Unsinn, es ist genauso leicht auch in PHP möglich heftigste Sicherheitslücken einzubauen. Ich kenne keine Sprache wo man nicht auch auf die Sicherheit achten müsste und einige Funktionen besser nicht nutzt. Man muss überall wissen welche der mitgelieferten Funktionen sicher sind und welche nicht.
    Adobe Acrobat, Firefox etc. sind zum großen Teil in C++ geschrieben und da gibt es auch ständig heftigste Fehler. Nur weil man in C programmiert bedeutet dies bei weitem nicht dass man gleich unsicher programmiert. Sicherheit muss man in C genauso lernen wie in anderen Sprachen auch, das kommt aber meist erst etwas später wenn man dann anfängt größere Software zu schreiben die auch jemand anders nutzt.

    Wäre dein Posting auf Papier geschrieben so müssten man es mit einem Kopfschütteln zerknüllen und in hohem Bogen in den Müllkorb werfen.

    Wenn du mich fragst lerne zuerst C, die Sprache ist einfach leichter zu durchschauen. Die größte Hürde sind die Zeiger, aber das ist nix im Vergleich zu dem was man in C++ alles lernen muss, wenn man es richtig machen möchte.

    Ich finde C++ einfach nur anstrengend.

    Wenn du C nicht traust dann traue auch nicht den Linux/Windows-kernel und viele Industriesteuerungen. Glaub mir man kann auch in C sehr sicher programmieren, das ist kein Argument gegen die Sprache.



  • Michael E. schrieb:

    Nur als Tipp: In C gibts zwar Funktionen, aber man programmiert darin gewöhnlich nicht funktional 😉

    Da hat mich ein früher Halloween- Kürbis an der Birne erwischt 🤡 , gemeint war natürlich prozedural, wenn überhaupt. An der Uni war Pascal das Höchste 🙄 , am Gumminasium *schauder* BASIC 😮 . Ein bißchen VHDL noch zum Diplom und jeder potentielle AG fragte mich, wieviel 100k LOC ich schon in C++ produziert hatte. So "richtig OOP" hab' ich erst mit Delphi nachgeholt und das war wohl Ausdruck meiner Schädigung durch Pascal 😃 .


Anmelden zum Antworten