Forum: Compiler & IDEs Will C lernen. Lehrbuchempfehlung?


von TomToll (Gast)


Lesenswert?

Möchte C lernen, um es auf AVR, später mal auf Cortex anwenden zu 
können.
Bisher programmiere ich AVR in Assembler.

Könnt ihr mit  ein C -LEHRBuch empfehlen, das auch die für µC benötigten
C -Grundlagen anschaulich und (für Nicht-INGs) nachvollziehbar 
VERMITTELT?

Also kein Nachschlagewerk für Profis, das der Anfänger nach 10 min in
die Ecke wirft (oder gleich in den Müll)?

Lieben Dank,
Tom

von Karl H. (kbuchegg)


Lesenswert?

Also ich kenne keines, das C speziell für µC behandelt.

Deine beste Option scheint zu sein, C erst mal ganz normal auf einem PC 
zu lernen. Dazu gibt es haufenweise Literatur. Eine ist zb immmer noch 
der Klassiker von Kernighan&Ritchie.

Speziell für die µC Seite (kleinere µC wie AVR die ohne Betriebssystem 
programmier werden) wirst du ca. das erste Drittel bis ca. die Hälfte 
dieser Bücher benötigen. Die allerdings intensiv.
Die Teile, die erst mal für die µC programmierung nicht so relevant 
sind, wie zb arbeiten mit Files oder dynamische Speicherverwaltung, 
können trotzdem irgendwann mal relevant werden. Zb dann, wenn man sich 
auf dem PC Hilfsprogramme baut, die einem zb Tabellen generieren die 
dann am µC weiterverwendet werden.

Der Clou ist ja, dass die Grundprinzipien von C immer dieselben sind. 
Vom µC bis hinauf zum Supercomputer ist es immer dieselbe Sprache. Die 
Details mögen in manchen Fällen unterschiedlich sein und manche Dinge 
benötigt man auf einem AVR öfter als auf einem Desktop-PC (zb 
Bitbehandlung), aber diese Dinge passen auf 1 oder 2 Seiten Papier und 
die hat man schnell gelernt, wenn das C Grundwissen erst mal da ist. Die 
Hardware-spezifischen Besonderheiten sind davon sowieso ausgenommen. 
Aber die sind ja in C auch nicht anders als in Assembler. Eine UART wird 
in C auch nicht anders konfiguriert als in Assembler - dieselben 
Register, dieselben Bits, dieselbe Bedeutung - nur eine etwas andere 
Schreibweise.

Dazu kommt, dass man auf einem PC wesentlich bessere 
Debug-Möglichkeiten hat, gerade in der Lernphase. Denn auf einem PC hast 
du erst mal eine funktionierende Infrastruktur. Ausgaben auf die Konsole 
laufen auf dem PC aus dem Stand heraus, während man sich auf einem AVR 
all diese Dinge erst mal selber machen muss, wozu man aber eigentlich 
schon ein bischen C können sollte. Ein Teufelskreis.

Daher immer wieder die Emfpehlung: vergiss erst mal das Erlernen von C 
auf einem kleinen µC. Nimm ein normales C-Buch, welches für den PC 
geschrieben wurde, verdien dir damit deine ersten Sporen auf dem PC, 
lerne dort die Grundlagen und wenn du ungefähr bei Files angelangt bist, 
mach den Schritt auf den AVR. Mit ein paar auf dem PC eher 
stiefmütterlich behandelten Theme n, wie zb Bitoperationen, noch 
nachgereicht, wirst du dich auf dem µC sofort zu Hause fühlen.

von TomToll (Gast)


Lesenswert?

Vielen Dank Karl Heinz für deine ausführliche Antwort.
Gibt es einen Unterschied zw. der gebundenen und der Taschenbuchausgabe 
beim K&R? Letzte Auflage ist die zweite von 1990?

Tom

von Karl H. (kbuchegg)


Lesenswert?

UI. Das kann ich dir nicht beantworten. Geben die Kommentare bei Amazon 
keine Auskunft darüber?

Ich hab die Tage eine Eastern-Economy-Edition für meinen Neffen gekauft. 
Hat 14 Euro und ein paar Zerquetschte gekostet und war in ein paar Tagen 
aus Indien da. Inhaltlich ist sie Wort für Wort identisch mit dem 
amerikanischen Original, so dass ich davon ausgehe, dass die von dir 
genannten Editionen sich auch nur in der Verarbeitung unterscheiden.

> Letzte Auflage ist die zweite von 1990?
Ja, die ANSI-Version.

: Bearbeitet durch User
von Amateur (Gast)


Lesenswert?

Ein oft unterschlagener Vorteil von "normalem" C, ist der der einfachen 
Testumgebung. Ein Windoof- oder Pinguin-C läuft ja per Definition auf 
dem ursprünglichen PC.

Da kannst Du dann, im wahrsten Sinne, Deine Trockenübungen machen, ohne 
Dich mit dem - Welchen µP für welche Anwendung? - herumzuschlagen.

Noch was: Im Grunde gibt es keinen Unterschied zwischen dem C welches 
für normale Rechneranwendungen geschrieben wird und dem für die kleinen 
Käfer.

Ein etwas intensiveres Verständnis wird lediglich im Bereich der 
booleschen Algebra und rund um die Datentypen selber benötigt.

Aber schon dadurch, dass Du nichts wirklich Neues brauchst, läuft das 
Meiste auch auf einem normalen PC.

von TomToll (Gast)


Lesenswert?

Für die µC typischen Aspekte gibt es ja das hiesige GCC Tutorium. Das 
hab ich schon mal aus Interesse durchgelesen, nur fehlen mir die C 
Grundlagen. Ist nicht so wild, wenn die Innereien des Käfers schon 
geläufig sind.

Hab nur Schiss, dass die Bücher nur trockenen Stoff rüberklatschen und 
der Autor sich und dem Rest der Welt beweisen will, was für ein Genie er 
ist.

Tom

von Amateur (Gast)


Lesenswert?

Im Normalfall reicht etwas wie das gute, alte K&R C-Buch. Auch im 
Internet haben sich einige Autoren verewigt. Warum nicht, wenn Du mit 
deren Stil klarkommst.

Über eins musst Du dir aber im Klaren sein: Dein letzter Krimi war 
spannender. Lehrbücher, rund ums C sind Prinzipbedingt ungefähr so 
spannend wie das Hamburger Telefonbuch.

von hello world (Gast)


Lesenswert?

Ich kann dir "Head First C" nur ans Herz legen. Auf ca. 600 Seiten wird 
alles was man braucht in einer lustigen Art und Weise erklärt, so dass 
das lesen auch Spaß macht.

von Karl H. (kbuchegg)


Lesenswert?

TomToll schrieb:

> Hab nur Schiss, dass die Bücher nur trockenen Stoff rüberklatschen und
> der Autor sich und dem Rest der Welt beweisen will, was für ein Genie er
> ist.

Geh in eine Buchhandlung und schmökere mal ein bischen ob du mit dem 
Stil klarkommst.

von TomToll (Gast)


Lesenswert?

Am Bildschirm zu lernen geht leider nicht, die Konzentration bricht nach 
paar Minuten ab, das Bildschirmlesen ist mir zu mühsam.
Wenns wenigstens halb so spannend wie mein letzter "Mankell" wäre, würde 
ich in zwei Abenden mit dem C-Buch fertig sein ;-)

von TomToll (Gast)


Lesenswert?

hello world schrieb:
> Ich kann dir "Head First C" nur ans Herz legen. Auf ca. 600 Seiten wird
> alles was man braucht in einer lustigen Art und Weise erklärt, so dass
> das lesen auch Spaß macht.

Hab mir das eben mal gezogen. Werde morgen mal reinlesen.

von SkyperHH (Gast)


Lesenswert?

Ich fand von O'Reilly - Practical C Programming ganz gut... bzw. für 
später dann die kleinen Bücher "C - kurz & gut"...

Als Tipp, besuche eine (FH) Bibliothek und schaue dort im Fachbereich 
Elektrotechnik/Informatik vorbei, da sollte massig Literatur vorrätig 
sein...

von Thomas L. (ics1702)


Lesenswert?

Oder hier http://www.c-howto.de
Diese Anleitung fängt wirklich ganz bei Null an und Du kannst alles erst 
einmal online lesen, bevor du die gedruckte Ausgabe kaufst.

von Yalu X. (yalu) (Moderator)


Lesenswert?

TomToll schrieb:
> Wenns wenigstens halb so spannend wie mein letzter "Mankell" wäre, würde
> ich in zwei Abenden mit dem C-Buch fertig sein ;-)

Du wirst lachen, aber genau so ging es mir:

Ich hatte die vielgescholtene deutsche Übersetzung der ersten Auflage¹
des K&R. Dennoch fand ich das Buch dermaßen fesselnd, dass ich mich
abends trotz Müdigkeit kaum davon losreißen konnte, so wie das auch bei
einem guten Krimi der Fall ist. So hatte ich dann auch tatsächlich nach
zwei (langen) Abenden das ca. 200-seitige Buch durch.

Natürlich konnte ich danach noch nicht wirklich in C programmieren. Ich
wusste aber, was in C alles geht und wo ich nachschlagen musste, um
zu erfahren, wie genau die einzelnen Konstrukte umzusetzen sind. Zu
mehr Routine gelangte ich dann nach und nach per Learning-by-Doing auf
meinem Amiga 2000 und verschiedenen Rechnern an der Uni.

Zu den Mikrocontrollern kam ich erst Jahre später. Da ich C inzwischen
sehr gut beherrschte, konnte ich mich voll auf die spezifischen Aspekte
der µC-Programmierung konzentrieren, so dass sich hier bereits nach
einem Tag die ersten Erfolge einstellten.

————————————
¹) Die zweite (und letzte) Auflage ist diesbezüglich viel besser.

: Bearbeitet durch Moderator
von DrWright (Gast)


Lesenswert?

Ich fand dieses Buch für mich sehr hilfreich für dein Einstieg in die µC 
Programmierung. Ich hatte aber schon Vorkenstnisse in C am PC.

http://www.amazon.de/gp/product/3486589881/

Es wird viel auf die Hardware und die Schnittstellen eingegangen, eher 
weniger auf C ansich.

von Arne (Gast)


Lesenswert?

Ich habs im Studium hiermit erlernt:
http://www.amazon.de/programmieren-Ein-Kurs-Selbststudium-Musterl%C3%B6sungen/dp/3893193723/ref=sr_1_1?ie=UTF8&qid=1391750401&sr=8-1&keywords=3893193723

(bei dem Preis für ein gebrauchtes Exemplar wirst wohl nichts falsch 
machen)

Den K&R finde ich persönlich als Nachschlagewerk nicht schlecht, zum 
Lernen eher nicht so.
Hab o.g. Buch immer noch hier in der Firma stehen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Ich hatte die vielgescholtene deutsche Übersetzung der ersten Auflage¹
> des K&R.

Ich hab' sie auch noch. Steht direkt neben der zweiten Ausgabe (Ausgabe, 
nicht Auflage). Der Eindruck, daß dieses Buch mit einem 
Übersetzungsautomat entstanden ist, den werden die heutigen Apologeten 
des Deppenleerzeichens gar nicht mehr nachvollziehen können ...

Die zweite Ausgabe von 1990 ist immer noch die aktuellste; und deren 
deutsche Übersetzung ist hervorragend. Das ist ein Fachbuch, das man 
tatsächlich nicht im englischen Original lesen muss.

Schön wäre es, wenn es davon eine qualitativ gleichwertige dritte 
Ausgabe gäbe, die C99 oder C11 beschreibt ...

von Bastler (Gast)


Lesenswert?

Hallo,

Arne ist der Meinung:

"Den K&R finde ich persönlich als Nachschlagewerk nicht schlecht, zum
Lernen eher nicht so."

Das ist noch sehr zurückhaltend ausgedrückt.

Als "echter" Programmieranfänger der noch nie programmiert hat (den Sat 
Receiver einstellen ist kein programmieren) ist K&R als  Lehrbuch nicht 
zu empfehlen (Als Nachschlagewerk für später wenn die ersten Hürden 
überwunden sind ist es allerdings eine feine Unterstützung - nur der 
Preis stimmt nicht.

Mir hatte als nahezu unerfahrenen Programmieranfänger das Buch
"C für Dummies" von Dan Gookin sehr geholfen - sehr gut verständlich und 
auch einigermaßen aktuell was das Drumherum angeht (zum C Lernen gehört 
ja auch das entspechende Programmierumgebung und reine Textausgaben sind 
in Zeiten von Windows auch nicht jeden Anwender bekannt).
Außerdem ist der Preis angemessen.
Als Ergänzung kann eventuell "C als erste Programmiersprache Vom 
Einsteiger zum Profi" von Dausmann, Böckel und Goll dienen auch wenn 
mann leider an der Lehrmethode merkt das alle drei Autoren Professor Dr. 
Titel innehaben und die Zielgruppe (auch) Studierende sind, also alles 
wissenschaftlich sehr korrekt und daher nicht besonders 
Anfängerfreundlich für "echte" Laien.
Preislich leider auch auf typischen Fachbuchniveau für Bücher mit 
relativ geringer Auflage.

Und als weitere Ergänzung :
In den weiten von Youtube nach C-Tutorials suchen - da gibt es einige 
sehr gute und ein Bild (Video) sagt immer mehr als tausend Worte auch 
wenn natürlich meist nicht so Detailreich wie es Bücher darstellen.

mfg

   Bastler

von alesi (Gast)


Lesenswert?

TomToll schrieb:
> Könnt ihr mit  ein C -LEHRBuch empfehlen, das auch die für µC benötigten
> C -Grundlagen anschaulich und (für Nicht-INGs) nachvollziehbar
> VERMITTELT?

Hier gab es kürzlich eine Diskussion darüber, ob viele C-Bücher so
schlecht sind wie von jemandem behauptet.

 Beitrag "Sind alle C-Bücher wirklich so schlecht?"

 http://www.amazon.de/gp/cdp/member-reviews/A2P0DS0HZIAYM2/ref=cm_aya_bb_rev

Vielleicht als Negativliste zu gebrauchen...

von Wolfgang B. (Firma: privat) (umsteiger)


Lesenswert?

Hallo Tom,
eigentlich wollte ich hier "nur lesen", da ich genau wie du, "C" lernen 
will. Auch ich habe erst das Programmieren in Maschinensprache, 
Assembler und auch Basic für mehrere Mikroprozessoren und Controller 
gelernt und möchte nun auch "C" besser verstehen. Trotzdem erlaube ich 
mir hier auch einen Vorschlag zu machen, will aber im voraus auch 
bemerken, dass das was ich vorschlagen würde, sich eben speziell auf die 
"Programmierung in C" von Mikrokontrollern der ATmega-Serie bezieht. Es 
handelt sich um ein Buch mit Namen "Einführung in die C-Programmierung" 
(Sven Feldkord) mit dem ATmega32 (19,95 Eu.) Aus meiner Sicht, speziell 
für umsteiger. Ich habe alle meine Programmierpraxis grundsätzlich 
dadurch erworben, dass ich "vorhandene Software" analysiert und geändert 
habe.. Angefangen von DOS-Programmen für den UR-PC bis zu den komplexen 
Mikrocontrollern (Siemens 80C537) in Assembler und Basic.
Habe vor -mehr als 10 Jahren- versucht, "C" zu lernen indem ich ein 
Visual-C suf dem PC installiert hatte, leider gelang es mir nicht zu 
verstehen, warum bei der Compilierung nur "Fehlermelungen" generiert 
wurden, dann habe ich es aufgegeben.. Zugegeben, zu der Zeit  musste ich 
noch schaffen, heute bin ich Rentner und hoffe dass es besser klappen 
wird.. Noch (vielleicht) ein Vorschlag: Ich bin Über "ARDUINO" Wieder 
auf das Thema "C" gestossen und war veblüfft davon, dass es einfach 
klappte....
Arduino beruht auch auf C... Als Assemblerprogrammierer muss man sich 
das "so" vorstellen, es gibt viele "Unterprogramme- in C Funktionen" die 
man einfach aufrufen kann und es wird ein Bit gesetzt, eine serielle 
Ausgabe auf dem PC initialiesiert und so weiter.. Arduino ist, wenn ich 
das so richtig schätze, ein "über C" aufgesetztes Konzept, das es einem 
"nicht Programmierer" erlaubt einen AVR-Controller zu programmieren...

Wolfgang

von 12V DC (Gast)


Lesenswert?

Also ich habe das Programmeieren in C mit dem Buch 'C von A bis Z' von 
Jürgen Wolf (Gallileo Computing), das auf den ca 1000 Seiten die Sprache 
gut erklärt und auch in Späteren Kapiteln auf grundlegende Algorithmen 
und Nezwerkprogrammierung erklärt.
Einzig vernachlässigt wird die programmierung von GUI's, aber das hat 
mich nicht gestört. Gibt's übrigens auch als Openbook bei 
GallileoComputing zum Download.

12V

PS: Jürgen Wolfs andere Bücher sind auch sehr zu empfehlen!!!
    Sonst ist auch Gallileo Computing sehr zu empfehlen, da es sehr gute
    Bücher über alles im Sortiment hat, die generell mit Computern zu 
tun
    haben.

von Butterberger (Gast)


Lesenswert?


von TriHexagon (Gast)


Lesenswert?

Ich hab jetzt mal nur so über die Rezessionen drüber gelesen und sie 
sind in der Tat sehr "leidenschaftlich" geschrieben, aber größtenteils 
hat er recht. Die Autoren sind oft nicht einmal in der Lage C und C++ 
auseinander zu halten.

C habe ich sogar mit dem berühmten "C: von Anfang an" von Helmut 
Erlenkötter gelernt. Zurecht gekommen mit dem Buch bin eigentlich nur, 
weil das nicht meine erste Programmiersprache war (C#), die Beispiele 
nicht alle abgetippt und die Warnungen (z.B. bei "main()") nicht 
ignoriert habe.
Neben den falschen Beispielen, gibt es zudem auch massig Logikfehler.
Fazit: für wirkliche Anfänger nicht zu empfehlen.

Ich kenne allerdings auch keine Alternative. Die deutschen Bücher sind 
anscheinend alle so schlecht, außer die letzte Ausgabe von 
"Programmieren in C", was allerdings kein Einsteigerbuch ist. Die 
englischen Bücher sollen wesentlich besser sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.