C Programmieren mit C für Einsteiger - Buch, Website, etc

MrSyniXDriVe

Lt. Junior Grade
Registriert
Aug. 2013
Beiträge
308
Hi Leute

Ich habe mich vor kurzem entschlossen, die Programmiersprache C und im Anschluss dann C++ zu lernen. Dazu suche ich jetzt ein das mir das Programmieren mit C beibringt.
Sei es ein Buch, ein Online-Tutorial, ein e-Book oder Videos, was auch immer.
Ich habe denke ich nichtmal Grundkentnisse (nur ein Paar befehle in VBA, noch nichts weltbewegendes).
Deshalb sollte das Tutorial auch verständlich sein und umfangreich, da viele Begriffe wahrscheinlich noch nicht klar sind für mich.

Folgendes Buch hab ich gefunden http://www.amazon.de/gp/product/3499600749/ref=s9_psimh_gw_p14_d0_i2?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=center-2&pf_rd_r=10BVGNG603SFSHNB7TMQ&pf_rd_t=101&pf_rd_p=455353687&pf_rd_i=301128, allerdings ist es vom Jahre 1999 und ich weiß nicht wieviel davon noch aktuell ist. Außerdem scheint es viele Fehler zu haben, so steht es zumindest in den negativen Bewertungen.

Vielleicht hat jemand ja eine Empfehlung für mich das würde mich sehr freuen

Mit freundlichen Grüßen

MrSyniX
 
Natürlich wäre mir ein Buch auf Deutsch lieber.
Sollte es aber nichts anständiges auf Deutsch geben würde ich mich auch auf ein Englisches Buch einlassen.
 
Falls du nicht vor hast tatsächlich produktiv C-Programme zu schreiben solltest du das Erlernen con C überspringen und gleich mit einem AKTUELLEN (>2011) C++-Buch anfangen. Leider kann ich aber nicht sagen, welches Buch aus der Sicht eines Anfängers wirklich gut ist.
Evtl. hilft dir dieser Thread weiter.
 
Generell habe ich kein Problem gleich mit C++ anzufangen. Das war grundsätzlich auch mein Ziel, aber was ich gelesen habe sind bei den meisten C++ Büchern auch Vorkentnisse in C nötig.
In dem Thread den du vorgeschlagen hast geht es auch um letzteres. Der Ersteller hat bereits Kentnisse in C.
 
Das wäre mir neu. Soweit ich das aus den Inhaltsverzeichnissen herauslesen kann benötigen die vorgeschlagenen Bücher keine C-Kenntnisse sondern fangen von 0 an (ich hab sie aber nicht selbst gelesen).
 
C ist ja >fast< in C++ eingebettet, daher kann man auch mit C++ anfangen und die reinen C++ Features weglassen, dann ist es sehr ähnlich wie reines C.

Das Problem ist eher, dass C programmieren und C++ programmieren, völlig verschieden ist. Das ist auch ein Problem, wenn jemand in einem C++ Projekt mit klassischem C unterwegs ist, zB weil er erfahrener C-Programmierer ist und sich in C++ nicht gut auskennt. Geht, kompiliert, aber führt oft zu Problemen.

C++ ist meiner Meinung nach eine der schwersten Sprachen überhaupt, um sie richtig anzuwenden. Ich habe mich in meinem Leben vielleicht ein halbes Jahr damit beschäftigt, und würde mich immer noch als absoluten Anfänger bezeichnen.

Edit:
Hier auch ein Tipp wie man C++ in 21 Tagen lernt.
 
Zuletzt bearbeitet:
Die Einsatzgebiete sind auch verschieden.
C++ für Software, meist Games oder Programme, C eher für Embedded Systems / Treiber / Speed Programme.

C ist allerdings nicht wirklich umfangreich und schnell durchschaubar.
 
@black90:
Ich hab den Eindruck, dass das auch gerade kippt. Ich kenne kaum noch (neue) eingebetttete Systeme, die in reinem C programmiert werden. Für Treiber bzw. allgemein Betriebssystemkomponenten ist c aber immer noch die erste Wahl.
 
Mit C kann man relativ schnell kleine Konsolenanwendungen unter Linux zusammencoden - solange ein großer Teil des Codes nur aus irgendwelchen Funktionsaufrufen in irgendwelche Linux-/POSIX-APIs besteht, nehme ich doch lieber C als C++, espart einem einfach unnötige Abstraktionsebenen.

allerdings ist es vom Jahre 1999 und ich weiß nicht wieviel davon noch aktuell ist.
Ich würde vorschlagen, im Hinblick auf C++ alles zu ignorieren, was nicht mindestens auf C++11 eingeht - auch Microsoft wird nicht umher kommen, irgendwann mal vollen Support dafür zu bieten. Damit wurden doch so einige Probleme gelöst, die in C++03 entweder so nicht machbar waren oder für hässlichen Code gesorgt haben - das fängt schon damit an, dass NULL nicht mehr das Mittel der Wahl ist, um Pointer zu initialisieren.

Für den Anfang dürfte dieses Tutorial dennoch taugen - ein besseres finde ich zumindest nicht.
 
Okey danke schonmal dafür. Dann lass ich das mit C erstmal sein.
Hauptsächlich geht es mir ja darum einen Grundstock in Porgrammiersprachen zu legen, da ich später mit ziemlicher sicherheit Informatik bzw. Softwareentwicklung studieren möchte.
Da denke ich das C++,die ja die meist verwendete Programmiersprache ist (Meiner Erkenntnis nach), die richtige Wahl ist.

Sollte ich da falsch liegen, was den Grundstock für so ein Studium bildet, dann korrigiert mich gerne. Vielleicht gibt es ja andere Programmiersprachen die sich dazu besser eignen.
 
MrSyniXDriVe schrieb:
Da denke ich das C++,die ja die meist verwendete Programmiersprache ist (Meiner Erkenntnis nach), die richtige Wahl ist.

Hmmm, also ich habe jetzt keine Zahlen, um das zu untermauern, aber ich bezweifle stark, daß diese Aussage stimmt. Im Vergleich zu Sprachen wie Java, C#, PHP, etc. dürfte C++ eher eine Nischensprache sein.

Trotzdem ist es meiner Meinung nach auf keinen Fall ein Fehler, C++ zu lernen, auch wenn ich weder C noch C++ als erste Sprache empfehlen würde. Beide Sprachen sind relativ komplex und bieten Anfängern ziemlich viele und fiese Stolperfallen, die den Einsteiger vom eigentlichen Ziel - das Programmieren selbst (und nicht die Sprache im Detail) zu Erlernen - ablenken können. Ich würde z.B. Python empfehlen. Deutlich simplere Syntax, leicht verständlich und trotzdem alles andere als eine "Spielzeugsprache".
Ergänzung ()

VikingGe schrieb:
Mit C kann man relativ schnell kleine Konsolenanwendungen unter Linux zusammencoden - solange ein großer Teil des Codes nur aus irgendwelchen Funktionsaufrufen in irgendwelche Linux-/POSIX-APIs besteht, nehme ich doch lieber C als C++, espart einem einfach unnötige Abstraktionsebenen.

Wieso? Bloß weil du C++ statt C programmierst, bedeudet das noch längst nicht, daß du gezwungen bist, irgendwelche Abstraktionsebenen einzuführen. Nichts hält dich davon ab, C++ einfach als ein besseres C zu verwenden, also stilistisches C zu programmieren, aber dennoch die Vorteile von C++ (RAII, bessere Typsicherheit, mächtigere Standardbibliothek, etc.) zu nutzen.
 
antred schrieb:
Hmmm, also ich habe jetzt keine Zahlen, um das zu untermauern, aber ich bezweifle stark, daß diese Aussage stimmt. Im Vergleich zu Sprachen wie Java, C#, PHP, etc. dürfte C++ eher eine Nischensprache sein.

"Die weltweit am häufigsten eingesetzte Programmiersprache ist C sowie deren Weiterentwicklungen C++ und C#" (Zitat)

Weis ja nicht in wie fern die Aussagen dort stimmen.

Ich hab ja noch ca. 2 1/2 Jahre bis ich das Studium beginnen werde. Denkst du also Python wäre die beste Voraussetzung für das Programmieren im Studium? Oder würde es sich zeitlich sogar ausgehen (bei ca. 4-5 Stunden Aufwand pro Woche) noch eine Zweite Sprache dranzuhängen?

Edit: kennst du eventuell auch ein online Tutorial bzw ein Buch für Python?
 
Python ist auf jeden Fall mal eine Sprache, mit der man auch als Anfänger schnell etwas (mit PyQt sogar mit GUI) auf die Beine bekommen kann. Dive into Python 3 ist auch nicht schlecht, für PyQt müsste man bei Bedarf dann eben was raussuchen.

Nichts hält dich davon ab, C++ einfach als ein besseres C zu verwenden, also stilistisches C zu programmieren, aber dennoch die Vorteile von C++ (RAII, bessere Typsicherheit, mächtigere Standardbibliothek, etc.) zu nutzen.
Das ist ja genau der Knackpunkt. Wenn ich die Vorteile der Sprache, insbesondere RAII, wirklich nutzen will, komme ich nicht umher, sowas wie inotify-Watches in eine Klasse zu packen (was logisch ja auch sinnvoll ist) und um das im konkreten Fall ziemlich grausame API herumzuwrappen. Abgesehen von anderen Standardproblemen mit C-APIs in C++ halte ich das aber für ein Progrämmchen mit <2k Zeilen nicht unbedingt zielführend, da schreibe ich dann lieber sauberes C als irgendeinen Mischmasch aus beidem.

Ich meine, wenn man keine C-APIs braucht und die Anwendung nicht besonders systemnah wird - hätte ich dabei schreiben sollen - spricht nichts gegen C++, zumal man da auch leichter plattformunabhängig mit entwickeln kann, aber dann hat man generell viele Sprachen zur Auswahl.
 
Naja, schlagt mich, aber als erste Programmiersprache ist Java schon ganz gut ^^

C# ist fast das gleiche wie Java.
 
VikingGe schrieb:
Das ist ja genau der Knackpunkt. Wenn ich die Vorteile der Sprache, insbesondere RAII, wirklich nutzen will, komme ich nicht umher, sowas wie inotify-Watches in eine Klasse zu packen (was logisch ja auch sinnvoll ist) und um das im konkreten Fall ziemlich grausame API herumzuwrappen.

Das meinte ich damit nicht (wobei ich sowieso keinen Schimmer habe, was inotify-Watches sind). Ich sagte "RAII nutzen", nicht eigene RAII-konforme Klassen schreiben. Du nutzt auch dann schon RAII, wenn du einen std::vector statt eines mit new angelegten Arrays verwendest oder std::lock_guard zum Locken/Releasen einens Mutexes einsetzt, anstatt den Mutex manuell zu locken/releasen.
 
MrSyniXDriVe schrieb:
"Die weltweit am häufigsten eingesetzte Programmiersprache ist C sowie deren Weiterentwicklungen C++ und C#" (Zitat)
Mal davon abgesehen, dass nicht ganz klar ist, was mit "am häufigsten eingesetzte PS" gemeint ist, ist das sicher nicht so zu lesen, dass C, C++ und C# die drei meist genutzten PS sind, sondern dass die drei zusammengenommen am häufigsten genutzt werden.Wer allerdings C# als Weiterentwicklung von C bezeichnet, für den ist Java ein direkter C++ Klon - soll heißen, er untertreibt was den Unterschied zwischen den Sprachen angeht ;)

Fakt ist sicherlich, dass es eine riesige C Code Basis gibt die einfach dem Alter under der Beliebtheit dieser Sprache geschuldet ist. c++ Dürfte noch nichtmal annähernd diesen Verbreitungsgrad erreicht haben, aber bei neuen Projekten wird (meines Wissens) kaum noch zu C sonder zu moderneren Programmiersprachen gegriffen.

C++ findet man im Prinzip überall, wo optimale Ressourcenausnutzung, direkte Hardwareansteuerung und/oder einfach migration von C das Hauptziel sind, wie zum Beispiel in Haushaltsgeräten, intelligente Sensoren, Autos, Smphones, Spiele, Compiler, die Java VM oder das Backend der Webservices von Facebook und Google. Ich wage mal zu behaupten, dass es zumindest die vielfältigste Sprache ist. Ich stimme aber zu, dass es nicht gerade der einfachste Einstieg in die Programmierung ist.

Wieviele Sprachen du lernen kannst hängt überigens ganz von der Definition ab. Einfache, funktionierende, aber nicht triviale Programme wirst du in jeder Sprache nach ein paar Monaten schreiben können. Bis du wirklich schnell und sicher "guten", fehlerfreien und effizienten Code schreibst vergehen (insbesondere bei C++) Jahre.
 
Die Sprache solltest du wählen, nachdem du gewählt hast was du für Programme schreiben willst und für welche Systeme.

Als C Programmierer brauchst du allerdings ein Studium, da Treiberentwicklung, Embedded Systems usw. mehr Wissen erfordert als nur das Programmieren selbst ! Da ist das Programmieren nur Nebensache! Ich bezweifle auch das jemand gescheit C versteht der nicht studiert hat. Z.b. was tut ein malloc() eigentlich ? Wie werden Strings umgesetzt usw...das geht sehr nah ans Hardwarewissen
 
Zuletzt bearbeitet:
black90 schrieb:
Als C Programmierer brauchst du allerdings ein Studium, da Treiberentwicklung, Embedded Systems usw. mehr Wissen erfordert als nur das Programmieren selbst ! Da ist das Programmieren nur Nebensache! Ich bezweifle auch das jemand gescheit C versteht der nicht studiert hat. Z.b. was tut ein malloc() eigentlich ? Wie werden Strings umgesetzt usw...das geht sehr nah ans Hardwarewissen

Häh?? Ich garantiere dir, daß man nicht einmal ein Universitätsgebäude betreten haben muß, um C zu verstehen. Wieso glaubst du, daß man sich das zum C-Programmieren nötige Wissen nur in einem Studium aneignen kann??
 

Ähnliche Themen

I
Antworten
3
Aufrufe
1.628
I
A
Antworten
6
Aufrufe
2.095
Zurück
Oben