C oder C++ lernen?

OP Persönliche Seite #1206293
Lesenswert?
• ▲
▼
Hallo,
ich möchte eine Programmiersprache richtig lernen, und ich weiß noch 
nicht ob für meine Zwecke C oder C++ das richtige ist.
Vorweg mal meine Wünsche und mein derzeitiger Wissensstand:
-Ich möchte erstmal Komandozeilen-Programme schreiben, später aber auch 
graphische.
-Ich möchte etwas mit Schnittstellen machen, also meine AVR-Projekte via 
RS232 bzw USB-seriell Wandler mit dem PC vernetzen.
-Ich kenne bereits Grundlagen vom programmieren (ich mache z.B. Bascom).
-Ich habe mal angefangen C zu lernen, allerdings recht schnell wieder 
aufgehört, da ich damals leider zu wenig Zeit hatt, es hat mir 
allerdings sehr viel Spaß gemacht. Visual Basic habe ich auch mal 
reingeschnuppert, das hat mir allerdings gar nicht gefallen, da das 
programme schreiben ganz anders war als so we ich es bisher kenne.

Ich würde mich über Antworten freuen.


Mfg,
Nils
Gast #1206299
Lesenswert?
• ▲
▼
Wenn du C++ lernen möchtest, wirst du um C nicht vermutlich 
drumrumkommen, denn das bildet immer noch die Basis. Aus printf() in C 
wird in C++ zwar meistens iostream und Gedöhns (was nicht unbedingt 
besser sein muss), aber an if, while, for und Datentypen etc. ändert das 
nichts.

In jedem Fall würd ich dir empfehlen, anfangs einen Bogen um Klickibunti 
à la VisualStudio und Borland zu machen und echte Konsolenprogramme zu 
schreiben. Alles andere verwirrt am Anfang einfach zu sehr.
Da werden mir jetzt hundert Moralapostel widersprechen, aber glaubs mir 
einfach, das sage ich aus meiner Erfahrung als Leiter einer 
Informatik-AG an meiner Schule.
Gast #1206318
Lesenswert?
• ▲
▼
Mal gesetzt den Fall, dass du dir Grundlagen in C aneignen möchtest:
- Absolute Standardlektüre ist Kernighan&Ritchie, 'Programmieren in C'
- Als Nachschlagewerk empfehle ich 'C in a nutshell' von O'Reilly.
- Dazu am besten noch die Manpages zur Standardbibliothek installieren 
oder das entsprechende Manual besorgen (auf http://gnu.org durchwühlen)
- Compiler nehm ich systembedingt schon immer den GNU GCC, den gibts für 
Computer (Windoof, Linux, ...) und es gibt einen, mit dem man z.B. für 
AVR-Mikrokontroller programmieren kann.
- Als Editor nehm ich Kate, der gehört zu KDE. Eclipse soll auch gut 
sein, aber frisst oft viel Speicher etc. Ansonsten gehen natürlich auch 
vi, Emacs. Müssten alle auch unter Windows laufen. Andere Editoren kenn 
ich bisher nicht :-)
Gast #1206345
Lesenswert?
• ▲
▼
C und C++ sind halt schon sehr ähnlich. Ich würde zunächst mal C lernen. 
Sobald deine Projekte gross und unübersichtlich werden, ist es Zeit, die 
objektorientierten Erweiterungen von C anzuschauen. Nennt sich dann C++ 
:-) (nicht Hauen, aber im Grunde ist es doch so)
Gast #1206476
Lesenswert?
• ▲
▼
Naja, im Grunde ist C++ ja 'nur' ein erweitertes C. Der ganze 
Sprachablauf bleibt ja identisch, lediglich das 'OOP' wurde oben 
draufgesetzt.

Man kann übrigens auch in C sehr übersichtliche und riesige Projekte 
ansetzen, das ist überhaupt kein Problem. Genauso kann man aber mit der 
achsotollen OOP richtig dicke Scheiße bauen. Viele Leute (insbesondere 
Lehrer) neigen dazu, auf Biegen und Brechen OOP einzusetzen. Man kann 
auch in C objektorientiert programmieren, es kommt immer drauf an, was 
man vor hat.

Im Übrigen sind OOP und ihre Auswüchse konkret in C++ auch nicht das 
Allheilmittel, soll heißen, C++ ist kein besseres C, wenn auch das 
manche Leute immer wieder zu vermitteln versuchen. So manches ist da im 
Laufe der Zeit schief gegangen oder hat sich im Nachhinein als 
'unpraktikabel' erwiesen, insbesondere, wenn man z.B. von anderen 
OOP-Sprachen umsteigt, wundert man sich öfter mal :-)
#1206519
Lesenswert?
• ▲
▼
Rein sprachlich wurde OOP oben drauf gesetzt, das stimmt.

In C kann man viel Blödsinn bauen, und in C++ hat man noch viel mehr 
Möglichkeiten dazu; das ist auch richtig.

Aber wenn man vernünftig in C++ programmiert (und nicht nur die 
zusätzlichen Fehlermöglichkeiten nutzt), arbeitet man doch ganz anders 
als in C.
Deshalb bestehe ich schon darauf, dass es bei C++ um mehr geht als ein 
paar neue Features.
Gast #1206528
Lesenswert?
• ▲
▼
Sven P. wrote:

> C++ ist kein besseres C

Doch doch. Wer bei C-Programmen ohne zwingenden Grund nicht den 
C++-Compiler nimmt, ist selbst schuld. Es sind so manche Kleinigkeiten, 
die man auch als C-Programmierer nutzen kann, wie z.B. die typisierten 
enums, die heute im Forum angesprochen wurden.

Andersrum scheuen sich ja viele Programmierer auch nicht davor, mit 
Klassen aber ohne Objektorientierung zu programmieren ;-)

> manche Leute immer wieder zu vermitteln versuchen. So manches ist da im
> Laufe der Zeit schief gegangen oder hat sich im Nachhinein als
> 'unpraktikabel' erwiesen, insbesondere, wenn man z.B. von anderen
> OOP-Sprachen umsteigt, wundert man sich öfter mal :-)

Das kann man ohne Probleme ignorieren, hat ergo praktisch keine 
Nachteile (solange man nicht versaute Projekte Anderer uebernehmen muss 
:-().
#1206589
Lesenswert?
• ▲
▼
Meine Meinung dazu:
Wer C++ lernen will nachdem er bereits C kann, braucht richtig viel 
Selbstbeherrschung und Durchhaltevermögen, sonst wird das nix.
Schlimmstenfalls hörst du mittendrin auf, und kannst nachher nur diese 
schreckliche Sprache namens "C/C++". Und was ich darin schon an 
Programmen gesehen hab, grenzt oft an "Verbrechen gegen die 
Menschlichkeit"...
(Tip an Personaler: Bewerbungen mit "C/C++" gleich in die Rundablage...)

Lern lieber zuerst C++ (so richtig, auch mit dem dazu nötigen Quäntchen 
Theorie). Danach C dazuzulernen ist wesentlich einfacher, und der 
Compiler unterstützt einen sogar noch dabei.
#1207226
Lesenswert?
• ▲
▼
Peter Stegemann wrote:
> Sven P. wrote:
>
>> C++ ist kein besseres C
>
> Doch doch.

Seh ich nicht so.

> Wer bei C-Programmen ohne zwingenden Grund nicht den
> C++-Compiler nimmt, ist selbst schuld.

Schon. Aber dann programmiert er immer noch C mit einem C++ Compiler und 
nicht C++.

Das ist eines der größten Missverständnisse heutzutage: Das C++ im 
Prinzip C ist, mit ein bischen was dazu. Wer richtig C++ programmiert, 
programmiert ganz anders als er es in C tun würde.

Persönlich rate ich auch zuerst zu C++ zu greifen. Alleine die Zeit, die 
man sich beim Lernen durch einen funktionierenden String-Datentyp spart, 
ist in Algorithmen-Lernen wesentlich besser investiert. Und in die 
Niederungen von C-Strings kann man immer noch im Lauf der Zeit 
vordringen, wenn man den ersten Teufelskreis, dass man am Anfang am 
besten alles gleichzeitig ins Hirn reinstopfen müsste, hinter sich 
gelassen hat.
Gast #1207933
Lesenswert?
• ▲
▼
Karl heinz Buchegger wrote:

> Das ist eines der größten Missverständnisse heutzutage: Das C++ im
> Prinzip C ist, mit ein bischen was dazu. Wer richtig C++ programmiert,
> programmiert ganz anders als er es in C tun würde.

Ich habe in C schon sehr modular programmiert, der Umstieg auf C++ war 
da sehr fliessend, "OOP" keine voellig neue Welt. Natuerlich hat sich 
mein Stil durch die Moeglichkeiten, die C++ bietet, nochmal stark 
veraendert - das wirkt sich aber auch darauf aus, wie ich heute in C 
programmieren wuerde.

> Persönlich rate ich auch zuerst zu C++ zu greifen. Alleine die Zeit, die
> man sich beim Lernen durch einen funktionierenden String-Datentyp spart,
> ist in Algorithmen-Lernen wesentlich besser investiert.

Wer Stringverarbeitung "von Hand" gelernt und verstanden hat, hat die 
wichtigsten Grundlagen drauf. Gerade das sollte man nicht ueberspringen. 
Dann muss man auch nicht im Forum fragen, wie man einen int in Zeichen 
konvertiert um sie auf dem Display auszugeben... Welche Algorithmen soll 
man denn als Anfaenger lernen? Direkt beim Ringbuffer einsteigen? Oder 
bei binaeren Baeumen?
OP Persönliche Seite #1208013
Lesenswert?
• ▲
▼
Hallo,
danke für die zahlreichen Antworten.
Ich habe mich für C entschieden, ich denke alleine aus dem grund, da man 
dann alle Grundlagen lernt, riesige Programme will ich in absehbarer 
Zeit sowieso nicht schreiben und mir macht programmieren einfach Spaß 
:-)
Kann jemand etwas zur Lektüre "C von A bis Z" sagen?
Was für Compiler/Editoren gibt es (Links?), Visual C++ möchte ich 
nämlich nicht nehmen.

Gruß Nils
#1208064
Lesenswert?
• ▲
▼
Entweder gcc unter Linux, oder wenn es Windows sein soll: auch dort gibt 
es den gcc in verschiedenen Varianten.
Eine davon ist mingw.
Falls du mal vorhast, irgendwann nicht nur Konsolenprogramme zu machen, 
könnte es interessant sein, das aktuelle Qt zu nehmen. Seit neuestem ist 
es endlich so frei, daß man damit auch kommerzielle Programme erstellen 
kann, ohne Geld abdrücken zu müssen. Mit Qt wird unter Windows 
praktischerweise der mingw gleich mit installiert.
#1208068
Lesenswert?
• ▲
▼
ach ja, Editor:
Mit dem Qt wird eine kliene IDE mit installiert, inkl. Editor.
Ich selber nehme schon immer und wahrscheinlich noch in hundert Jahren 
den EMACS, der ist aber sicher nicht jedermanns Geschmack.

Es gibt aber noch Tausend andere, z.b. notepad++ soll ganz brauchbar 
sein.
Gast #1208540
Lesenswert?
• ▲
▼
Mit Dev C++ und "C von A bis Z" hab ich´s auch gelernt. Nach ein paar 
Wochen schon ging´s dann an SDL und man konnte einfache Spielchen 
basteln, ist also alles sehr übersichtlich.

Es waren aber auch schon Vorkenntnisse vorhanden (verschiedene 
Basic-Dialekte, PHP, Javascript), so ganz von Grund auf könnte es auch 
ein bisschen länger dauern ...

Auch wenn DEV C++ wohl nicht mehr gepflegt wird, für die ersten Schritte 
genügt es allemal. Später kann man immer noch auf die Monsteranwendungen 
VS oder Eclipse umsteigen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren