www.mikrocontroller.net

Forum: PC-Programmierung C oder C++ lernen?


Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für die schnelle Antwort.
Ich weiß, bei Programmiersprachen gibt es oft "Glaubenskriege" ;-)
Kannst du mir einen gute Editor/Compiler (kostenlos) empfehlen?
Ich habe als Lektüre schon "C von A bis Z" angepeilt, da ich über dieses 
Buch bisher nur gutes gehört habe.

Gruß Nils

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Marvin M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe C mit dem (kostenlosen) uralten DOS-Borland-C Compiler gelernt. 
Ich persönlich stimme sven P. absolut zu. Für Anfänger ist die 
Programmierung von Windows-GUIs nicht empfehlenswert.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch hauen!

(es stimmt nur sehr bedingt)

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lerne C sonst brennst du in der Hölle!

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 
:-().

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, ich nehm seit der Steinzeit einen C-Compiler und komme damit parat 
:-)
C++ ist kein besseres C, C++ ist was grundlegend Anderes. Auch wenn 
vieles gleich aussieht, sag ich ja...

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> C++ ist kein besseres C, C++ ist was grundlegend Anderes.

Wie bei C#, das sieht auf den ersten Blick auch aus wie C, da for, if, 
switches, Klammern, etc. erst mal identisch aussehen.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es denn auch ein Programm welches Editor und Compiler in einem hat?
Ich hatte irgendwann mal ein solches, ich glaube es hieß dev-cpp, das 
hat aber nicht immer gut geklappt.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nils S. wrote:
> 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.

Wo ist das Problem bei Visual C++? Der Compiler als auch IDE sind 
fortschrittlich und in der Express Version sogar kostenlos!

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hinter dev-cpp steckte - der gcc.

Ich hatte es vor längerem mal angesehen, da war der gcc aber 
hoffnungslos veraltet; keine Ahnung, ob das jetzt besser ist.

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter Linux - eh klar - GCC. Unter Windows nimm lieber LCC 
http://www.cs.virginia.edu/~lcc-win32/ - alles drinnen, auch GUI ...

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@zwieblum: Die Seite sieht gut aus.
@Chris: Das Buch ist also zu empfehlen? Ich habe schon oft gehört das 
sei eins der besten.

Autor: zwieblum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kernighan-richie ist noch immer die bibel. auf der lcc-seite sind auch 2 
gute C-kurse drauf.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@Chris: Das Buch ist also zu empfehlen? Ich habe schon oft gehört das
>sei eins der besten.

Ist schön, um schnell zu lernen. Nicht lange denken sondern machen. 
Compiler, eventuell im Paket im IDE seiner Wahl herunterladen und 
anfangen http://openbook.galileocomputing.de/c_von_a_bis_z/ 
durchzuarbeiten.

Wenn's begeistert wäre es nätürlich fair es auch zu kaufen.

Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde es alleine deshalb schon kaufen, weil ich am lieber Bücher 
lese als irgendein PDF am PC, lieber was was man in die Hand nehmen 
kann.
Ich werde es heute im Buchladen vorbestellen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.