Wie am besten anfangen?
-
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-2Tipp:
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
.
-
pointercrash() schrieb:
und jeder potentielle AG fragte mich, wieviel 100k LOC ich schon in C++ produziert hatte.
Wer nach vielen LOC in C++ fragt, kann kein C++.
-
volkard schrieb:
pointercrash() schrieb:
und jeder potentielle AG fragte mich, wieviel 100k LOC ich schon in C++ produziert hatte.
Wer nach vielen LOC in C++ fragt, kann kein C++.
Na das ist doch mal eine fundierte Aussage *tztztz
-
pointercrash() schrieb:
Da hat mich ein früher Halloween- Kürbis an der Birne erwischt
, gemeint war natürlich prozedural, wenn überhaupt.
Ich fand's mit funktional besser.
-
Hmm, also wenn man noch keinerlei Programmier-Vorkenntnisse hat, gibt es nur zwei wirklich hervorragende Bücher, die keinerlei Fragen mehr offen lassen, weil sie sehr ausführlich sind und bis ins letzte Detail gehen.
Zudem auch später immer wieder mal zum Nachschlagen geeignet:Für C:
http://www.amazon.de/Das-Grundlagen-Buch-Gerhard-Willms/dp/3815812089
Für C++:
http://www.amazon.de/Das-Grundlagenbuch-Fundament-professioneller-Programmierung/dp/3815814375
Der Autor vollbringt in beiden Fällen eine didaktische Meisterleistung, indem er (wie es sich gehört!) jeweils mit den aller einfachsten Dingen / Bausteinen der jeweiligen Sprachen beginnt, und alles erklärt, worüber sich ein Programmier-Anfänger eventuell wundern könnte.
Wer sich die Zeit nimmt, diese Bücher gründlich zu studieren, hat auch keine Angst mehr vor Zeigern, Referenzen, Funktionszeigern, Speicherverwaltung usw. (so wie die C++ Experten des neueren Schlags), sondern beherrscht die jeweiligen Sprachen (und nicht umgekehrt!).
Bevor man in einer Sprache Romane verfassen kann, muss man erstmal deren Grammatik sowie einen soliden Grundwortschatz erlernen.
Man kann nicht sofort mit dem Romane schreiben anfangen (so wie es viele C++ Lehrbücher des modernen Schlags tun |-> Ich bleib dabei, so ein Vorgehen ist
didaktischer Unfug!)
Es bringt ja auch nichts, wenn ich der dreijährigen Tochter irgendeinen komplizierten Bildungsroman vorlese, davon lernt sie Deutsch ganz bestimmt nicht besser.MFG
-
Didaktiker5 schrieb:
hat auch keine Angst mehr vor Zeigern, Referenzen, Funktionszeigern, Speicherverwaltung usw. (so wie die C++ Experten des neueren Schlags)
Na den Experten musst du mir noch zeigen, der Angst vor Referenzen hat.
Bevor man in einer Sprache Romane verfassen kann, muss man erstmal deren Grammatik sowie einen soliden Grundwortschatz erlernen.
Man kann nicht sofort mit dem Romane schreiben anfangen (so wie es viele C++ Lehrbücher des modernen Schlags tun |-> Ich bleib dabei, so ein Vorgehen ist
didaktischer Unfug!)
Es bringt ja auch nichts, wenn ich der dreijährigen Tochter irgendeinen komplizierten Bildungsroman vorlese, davon lernt sie Deutsch ganz bestimmt nicht besser.Man sollte im ersten Schuljahr auch erst mal die Grundlagen wie Mengenlehre und Gruppentheorie lehren, bevor es an die Addition geht
-
Didaktiker5