Forum: Mikrocontroller und Digitale Elektronik Buch für Einstieg in C Programmierung


von Philipp L. (viech)


Lesenswert?

Hallo zusammen,

Ich habe vor längerer Zeit ein paar Projekte mit "atmega's" gebastelt 
und in Basic programmiert.
Mittlerweile habe ich aber wohl den Großteil vergessen :-)

Jetzt habe ich wieder ein paar Ideen, möchte aber gern mit C beginnen.

1: Es gibt viele Bücher am Markt, könnt ihr eines für Einstiger 
empfehlen?

2: Gibt es einen Unterschied zwischen "C" und "C++"?
Welche Sprache kommt denn hier zum Einsatz ?

Danke !

von user (Gast)


Lesenswert?


von Cyblord -. (cyblord)


Lesenswert?

Philipp L. schrieb:

> 2: Gibt es einen Unterschied zwischen "C" und "C++"?

Nein. Ist genau das gleiche. Deshalb gibt es zwei Bezeichnungen. Weil es 
absolut keinen Unterschied gibt.

von Philipp L. (viech)


Lesenswert?

Cyblord -. schrieb:
> Philipp L. schrieb:
>
>> 2: Gibt es einen Unterschied zwischen "C" und "C++"?
>
> Nein. Ist genau das gleiche. Deshalb gibt es zwei Bezeichnungen. Weil es
> absolut keinen Unterschied gibt.


Etwas Ironie ist bei der Frage evtl. angebracht, aber bitte auf die 
ganze Frage Nr.2 antworten...
Ich kenne den Unterschied nicht und würde gern wissen, in welche 
Richtung ich mich orientieren soll/muss.
Daher ja auch der Emojy...

von Klara N'sage (Gast)


Lesenswert?

Cyblord -. schrieb:
> Nein. Ist genau das gleiche. Deshalb gibt es zwei Bezeichnungen. Weil es
> absolut keinen Unterschied gibt.

CYBLORD, DEIN STIL STINKT UND GEFÄLLT DEN WENIGSTEN HIER: ÄNDERE DAS 
BALDMÖGLICHST!

von Gastino G. (gastino)


Lesenswert?

Philipp L. schrieb:

> 2: Gibt es einen Unterschied zwischen "C" und "C++"?
> Welche Sprache kommt denn hier zum Einsatz ?


Kommt darauf an, wo "hier" ist. Ist es in Controllern, dann ist es 
meistens C.

Ansonsten ist C++ eine objektorientierte Sprache, im Gegensatz zu C. Das 
ist der eigentliche und wichtigste Unterschied, unterschiedliche Syntax 
(bzw. Erweiterungen bei C++) sind nur die Folge davon.

: Bearbeitet durch User
von Philipp L. (viech)


Lesenswert?

Gastino G. schrieb:
> Philipp L. schrieb:
>
>> 2: Gibt es einen Unterschied zwischen "C" und "C++"?
>> Welche Sprache kommt denn hier zum Einsatz ?
>
>
> Kommt darauf an, wo "hier" ist. Ist es in Controllern, dann ist es
> meistens C.

Ja, bei der Mikrocontrollerprogrammierung.
Also hauptsächlich die Atmel-Familie (Mega und Tiny)

von Cyblord -. (cyblord)


Lesenswert?

Klara N'sage schrieb:
> Cyblord -. schrieb:
>> Nein. Ist genau das gleiche. Deshalb gibt es zwei Bezeichnungen. Weil es
>> absolut keinen Unterschied gibt.
>
> CYBLORD, DEIN STIL STINKT UND GEFÄLLT DEN WENIGSTEN HIER: ÄNDERE DAS
> BALDMÖGLICHST!

Nö, denn ich finde ihn voll supi.

von Philipp L. (viech)


Lesenswert?

Gastino G. schrieb:
> Philipp L. schrieb:
>
>> 2: Gibt es einen Unterschied zwischen "C" und "C++"?
>> Welche Sprache kommt denn hier zum Einsatz ?
>
>
> Kommt darauf an, wo "hier" ist. Ist es in Controllern, dann ist es
> meistens C.
>
> Ansonsten ist C++ eine objektorientierte Sprache, im Gegensatz zu C. Das
> ist der eigentliche und wichtigste Unterschied, unterschiedliche Syntax
> (bzw. Erweiterungen bei C++) sind nur die Folge davon.

Sehr hilfreiche Antwort, danke !

Dann lautet die Frage also nur noch:
Welche Einsteiger Bücher für die C Programmierung könnt ihr empfehlen?

von Cerberus (Gast)


Lesenswert?

Cyblord -. schrieb:
> Nö, denn ich finde ihn voll supi.

Nicht mehr lange, denn dann wird sein Account gesperrt,
wegen penetranter Trollerei. ;-b

von trampi (Gast)


Lesenswert?

Es existieren für beide Sprachen Compiler, welche deinen Code für AVR 
kompilieren.
Als Anfang kann ich dieses Buch:

https://www.amazon.de/AVR-Mikrocontroller-Kochbuch-PC-Elektronik-Lukas-Salzburger/dp/3645651268

empfehlen. Es ist eine Einführung in Mikrocontroller anhand des Atmega 8 
und gibt eine kleine Einführung in C, und das was relevant ist zur 
Mikrocontroller Programmierung.

Mit C++ zu beginnen ist aus meiner Sicht aufwendiger, gibt dir aber auch 
mehr Möglichkeiten, da es zum Beispiel Objektorientierung unterstützt.
C++ baut allerdings stark auf C auf, so dass man ziemlich schnell das in 
C gelernte auch in C++ hinbekommt.
Willst du C++ lernen, kann ich dir dieses Buch empfehlen:
https://www.pearson.ch/HigherEducation/PearsonStudium/EAN/9783868940053/Einfuehrung-in-die-Programmierung-mit-C

Es ist vom Erfinder von C++ geschrieben worden.

von trampi (Gast)


Lesenswert?

Da hat sich wohl ein x durch ein Leerzeichen ersetzt. Korrekt wäre:
AtmegaX8 (d.h. Atmega48, Atmega88,...)

von Philipp L. (viech)


Lesenswert?

trampi schrieb:
> Es existieren für beide Sprachen Compiler, welche deinen Code für AVR
> kompilieren.
> Als Anfang kann ich dieses Buch:
>
> 
https://www.amazon.de/AVR-Mikrocontroller-Kochbuch-PC-Elektronik-Lukas-Salzburger/dp/3645651268
>
> empfehlen. Es ist eine Einführung in Mikrocontroller anhand des Atmega 8
> und gibt eine kleine Einführung in C, und das was relevant ist zur
> Mikrocontroller Programmierung.
>

Elekttonikkentnisse und grundlegende Erfahrungen mit den Controllern 
sind vorhanden.
Es geht rein um die Umstellung der Programmiersprache von Basic (auch 
schon länger her) zu C.

von trampi (Gast)


Lesenswert?

Philipp L. schrieb:
> Es geht rein um die Umstellung der Programmiersprache von Basic (auch
> schon länger her) zu C.

Dann wäre vielleicht dieses Tutorial (gibt es auch als Buch) etwas:
http://www.schellong.de/c.htm

Ich würde dir allerdings vorschlagen, einfach mal dem 
AVR-GCC-Tutorial zu folgen, wenn du schon etwas programmieren kannst 
(egal welche Sprache), solltest du ziemlich schnell die Grundlagen 
verstehen.

von Jemand (Gast)


Lesenswert?

Hallo

"Jetzt habe ich wieder ein paar Ideen, möchte aber gern mit C beginnen"

Ähnliches habe ich auch mal vor gehabt - wenn du Bücher und Tutorials 
suchst was dir C speziell für den Bereich µC (AVR) beibringt sieht es 
leider schlecht aus - scheinbar bauen alle Bücher und Tutorials aus 
diesen Umfeld darauf auf das du C mehr oder weniger schon beherrschst 
und lassen sich dann nur noch über einige Besonderheiten im µC Bereich 
aus - vor allem was die Hardware und deren Beschränkungen und 
Andersartigkeit gegenüber einen normalen PC (Leistungsfähigen Endgerät) 
angeht.
Eine ziemlich unzufriedene Situation für jemanden der aus der 
Hardwareecke kommt ("alles" dort versteht) aber von Programmierung nur 
wenig Ahnung hat.

Leider bleibt es dann doch bei den typischen Büchern und Kursen für den 
PC (Endgeräte) wo man auf viel erlernt  was im typischen 8Bit µC Bereich 
(z.B. AVR) nur wenig Nutzen hat, dafür andere dort sehr wichtige 
Themenbereiche oft nur relativ grob abgehandelt werden.
Datenbanken, alle möglichen Feinheiten der Text ein- und Ausgabe sind 
beim 8Bit µC und den typischen Anwendungen kaum von Belang - 
Bitmanipulation, direktes Arbeiten mit Registern, Modifizieren müssen 
von Bibliotheken, Einbindung von einzelnen Assembler Befehlen oder gar 
Codeabschnitten (und sei es nur ein nop)  aber um so mehr - was ist nun 
aber beim PC (Endgeräte)kaum ein Thema oder kommt sehr spät, und oft 
schlecht erklärt, dran.
Die sehr wenigen Autoren (Bücher) die sich direkt ans Thema C für µC 
(AVR) gewagt haben konnten alle nicht das liefern was ich (und wohl 
jeder Anfänger) benötigt hätten - es bleibt leider nur der klassische 
Weg über den PC mit all den "unnötigen" (Hobbybereich, 
Hobbyanwendung)Ballast.

Jemand

von Cyborg (Gast)


Lesenswert?

Cyblord -. schrieb:
> Nö, denn ich finde ihn voll supi.

Da bist du aber der einzige!

von Axel S. (a-za-z0-9)


Lesenswert?

Klara N'sage schrieb:

> CYBLORD, DEIN STIL STINKT UND GEFÄLLT DEN WENIGSTEN HIER

Sprich bitte nur für dich und maße dir nicht an, die Meinung Dritter zu 
kennen oder für sie zu äußern. Mir persönlich gehen unverschämte, 
anonyme Posts wie deiner viel mehr auf den Sack.

Beitrag #5688545 wurde von einem Moderator gelöscht.
Beitrag #5688559 wurde von einem Moderator gelöscht.
von Walter K. (vril1959)


Lesenswert?

Cyblord -. schrieb:
> Philipp L. schrieb:
>
>> 2: Gibt es einen Unterschied zwischen "C" und "C++"?
>
> Nein. Ist genau das gleiche. Deshalb gibt es zwei Bezeichnungen. Weil es
> absolut keinen Unterschied gibt.

Kann man aus solch erhaben und erhöhter Position nicht einfach mal 
schweigen?

Oder - falls das folgende jetzt verständlicher ist - einfach mal die 
Fresse halten!

von Cyblord -. (cyblord)


Lesenswert?

Walter K. schrieb:
> Kann man aus solch erhaben und erhöhter Position nicht einfach mal
> schweigen?

Das wäre unfair. Je erhabener man ist, desto mehr ist man in der Pflicht 
die Unwissenden teilhaben zu lassen. Halleluja.

von Udo S. (urschmitt)


Lesenswert?

Axel S. schrieb:
> Mir persönlich gehen unverschämte,
> anonyme Posts wie deiner viel mehr auf den Sack.

Die Frage ist jetzt wieviel weniger anonym ist für dich ein angemeldeter 
Benutzer?
Und der Post von Cyblord war nicht mehr lustig sondern genauso 
unverschämt.

von voltwide (Gast)


Lesenswert?

Als solide Grundlage würde ich den Klassiker von Ritchie Kernighan immer 
wieder empfehlen. Danach kommt dann das AVR-Spezifische an die Reihe. Da 
ich nicht regelmäßig programmiere, geraten auch schon mal die Basics in 
Vergessenheit. Zu jeder aufkommenden Frage habe ich bislang ziemlich 
schnell im Internet die passende Antwort gefunden ohne zum Buch zu 
greifen. C-Programmierung ist dank ihrer Verbreitung sehr gut 
dokumentiert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

trampi schrieb:
> Dann wäre vielleicht dieses Tutorial (gibt es auch als Buch) etwas:
> http://www.schellong.de/c.htm

Von dem kann nur abgeraten werden. Der hat noch bizarrere Vorstellungen 
von C als die verschiedenen Chaoten, die hier jede Forendiskussion über 
Programmiersprachen mit ihrem Achtelwissen anreichern müssen.

von voltwide (Gast)


Lesenswert?

Cyblord -. schrieb:
> Das wäre unfair. Je erhabener man ist, desto mehr ist man in der Pflicht
> die Unwissenden teilhaben zu lassen. Halleluja.

ROFL, you made my day!

von Marek N. (Gast)


Lesenswert?

Hatten wir damals auf der Schule: 
https://www.amazon.de/C-Programmieren-Anfang-Helmut-Erlenk%C3%B6tter/dp/3499600749
Hab ich privat auch gelegentlich reingeschaut.

Beitrag #5688623 wurde von einem Moderator gelöscht.
von HyperMario (Gast)


Lesenswert?

Philipp L. schrieb:

> 1: Es gibt viele Bücher am Markt, könnt ihr eines für Einstiger
> empfehlen?

Würde mit dem hier anfangen:
http://c-buch.sommergut.de/

Eine gut strukturierte Anleitung das die Sprache gut erklärt.

von Dr. Sommer (Gast)


Lesenswert?

trampi schrieb:
> Dann wäre vielleicht dieses Tutorial (gibt es auch als Buch) etwas:
> http://www.schellong.de/c.htm

Soll das ein Einsteiger-Tutorial sein? Selbst erfahrene Programmierer 
dürften Schwierigkeiten haben durch diese wirre Fakten-Auflistung 
durchzublicken. Wie soll man da als Anfänger irgendwas verstehen...

von spess53 (Gast)


Lesenswert?

Hi

Da

https://www.terrashop.de/buecher/fachbuch/computer/prog/c_c/

gibt es 109 Bücher zu C/C++ zu teilweise reduzierten Preisen.

MfG Spess

von Sven L. (svenl)


Lesenswert?

Ich würde auch auf die "C-Bibel" von Kernighan/Ritchie zurückgreifen: 
The C Programming Language, aber bitte nur im englischen Original, denn 
die deutsche Übersetzung ist sowas von grausam.

Generationen von Entwicklen haben mit diesem Werk ANSI-C gelernt (mich 
eingeschlossen) und dann solltest Du das auch schaffen! - Insbesondere 
erklärt es Spezialitäten von C sehr gut wie zum Beispiel der Unterschied 
zwischen Pointern und Integern, Pointer-Arithmetik, Unions usw.

Wenn man das weitestgehend verinnerlicht hat, kann man zumindest erst 
einmal lauffähige Programme schreiben. Als Test-Entwicklungsumgebung 
würde ich einen Linux-PC mit einer GCC-Toolchain empfehlen. Damit kann 
man alle Beispiele des Buches durchprobieren.

Wenn man dann etwas Erfahrung gesammelt hat, versuchst Du vielleicht 
einfach mal Dir andere C-Programme anzusehen und zu verstehen. Auch das 
Einbinden statischer oder dynamischer Bibliotheken ist interessant.

Erst danach würde ich mich dem Mikrocontroller zuwenden, dazumal diese 
Plattformen in der Regel ein paar Einschränkungen und auch durchaus 
spezielle Syntax mitbringen.

Sinnvollerweise ist der AVR-GCC eben auch ein GCC-Compiler (wie auf dem 
Linux-PC) und Du wirst damit recht gut zurechtkommen. Auch der 
XC8/XC16/XC32 von Microchip ist ein GCC, wie auch die vielen Toolchains 
für ARM.

Wenn Du dann etwas erfahren bist, solltest Du Dich entsprechenden 
Coding-Richtlinien, C90/C99-Standard und deren Nachfolger beeschäftigen. 
So bewegst Du Dich vom ANSI-Standard etwas weg, was aber praktisch keine 
Relevanz hat, da alle wichtigen Controllern heutzutage irgendwie einen 
GCC-Compiler haben.

Es gibt auch Ausnahmen wie zum Beispiel den Paradigm C-Compiler, den ich 
versuche zu vermeiden...

Viel Glück!

Sven

von Gartenzwerg (Gast)


Lesenswert?

Nicht nur an C denken:
ISBN: 978-3897215672

von Axel S. (a-za-z0-9)


Lesenswert?

Udo S. schrieb:
> Axel S. schrieb:
>> Mir persönlich gehen unverschämte,
>> anonyme Posts wie deiner viel mehr auf den Sack.
>
> Die Frage ist jetzt wieviel weniger anonym ist für dich ein angemeldeter
> Benutzer?

Ganz einfach. Ein angemeldeter Nenutzer kann sanktioniert werden, falls 
er sich hinreichend oft oder zu sehr daneben benimmt. Ein anonymer 
Poster nicht. Insbesondere gestehe ich einem anonymen Poster keinerlei 
Recht zu, Kritik am hier herrschenden Umgang zu äußern. Das darf er gern 
machen nachdem er sich angemeldet hat.

Darüber hinaus war sein Post kein bißchen höflicher oder besser als 
der, den er kritisiert. Schon das nimmt ihm jegliche Legitimation. Sein 
Ziel war ganz offensichtlich nicht, den Umgangston hier zu verbessern. 
Er wollte einfach nur pöbeln.


> Und der Post von Cyblord war nicht mehr lustig sondern genauso
> unverschämt.

Die Frage war vollkommen dämlich. Wer programmieren lernen will, aber 
nicht in der Lage ist, den Unterschied zwischen C und C++ 
herauszufinden, ist entweder grauenhaft dumm oder stinkend faul. Ich 
enthalte mich hier absichtlich einer näheren Bewertung.

von Udo S. (urschmitt)


Lesenswert?

Axel S. schrieb:
> ist entweder grauenhaft dumm oder stinkend faul.

Sorry aber das kann man nur noch als unsäglich arrogant bezeichnen.

von Sebastian R. (lange_leitung)


Lesenswert?

Ich finde die Bücher von Rheinwerk ganz gut.
Zum einen sind die auf deutsch, was es leichter macht, zum anderen gibt 
es die auch als Openbook.

http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/000_c_vorwort_001.htm#mj764cb3fd439d3b95d1843e7c7d17f235

Dann kann man von überall schnell was nachschlagen.

Viel Spass!!!
Sebastian

: Bearbeitet durch User
von Dr. Sommer (Gast)


Lesenswert?

Sebastian R. schrieb:
> Ich finde die Bücher von Rheinwerk ganz gut.

Das haben wir doch schon abgehandelt:
Beitrag "C-Lehrbuch aus dem Rheinwerk-Verlag schlecht? Alternative?"

von Egon D. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:

> trampi schrieb:
>> Dann wäre vielleicht dieses Tutorial (gibt es auch
>> als Buch) etwas: http://www.schellong.de/c.htm
>
> Von dem kann nur abgeraten werden. Der hat noch bizarrere
> Vorstellungen von C als die verschiedenen Chaoten, die
> hier jede Forendiskussion über Programmiersprachen mit
> ihrem Achtelwissen anreichern müssen.

Ich habe selten eine substanzlosere und für den Kritiker
beschämendere Kritik gelesen.

von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> trampi schrieb:
>> Dann wäre vielleicht dieses Tutorial (gibt es auch
>> als Buch) etwas: http://www.schellong.de/c.htm
>
> Soll das ein Einsteiger-Tutorial sein? Selbst erfahrene
> Programmierer dürften Schwierigkeiten haben durch diese
> wirre Fakten-Auflistung durchzublicken. Wie soll man da
> als Anfänger irgendwas verstehen...

Tja... das ist der Lauf der Welt: Was sich die erste
Generation noch unter unsäglichen Mühen mit Blut,
Schweiss und Tränen bitter erarbeitet hat, ist dann
für die zweite oder dritte Generation nur noch ein
Vierteljahreskurs an der höheren Töchterschule.

Tragisch, aber unvermeidlich...

von HelmutD (Gast)


Lesenswert?

Den Erlenköther nehmen!

von Percy N. (vox_bovi)


Lesenswert?

voltwide schrieb:
> Als solide Grundlage würde ich den Klassiker von Ritchie Kernighan immer
> wieder empfehlen.

Das ist didaktisch ähnlich gut geeignet wie eine DIN-Norm als 
Technik-Lehrbuch. Warum gibt es wohl so viele Lehrbücher aus anderer 
Quelle?

von Dr. Sommer (Gast)


Lesenswert?

Egon D. schrieb:
> Was sich die erste Generation noch unter unsäglichen Mühen mit Blut,
> Schweiss und Tränen bitter erarbeitet hat,

Oh weia. Ruhe dich mal nicht zu sehr auf deinen Lorbeeren aus. Warum 
sollte man unbedingt mit so einem Text arbeiten, wenn selbst das 
allererste Buch über C - das von K&R - besser ist?

von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Egon D. schrieb:
>> Was sich die erste Generation noch unter unsäglichen
>> Mühen mit Blut, Schweiss und Tränen bitter erarbeitet
>> hat,
>
> Oh weia. Ruhe dich mal nicht zu sehr auf deinen Lorbeeren
> aus.

Oh tempora, oh mores.
Nicht einmal Zynismus wird noch verstanden.

Es sind nicht MEINE Lorbeeren (ich kann kein C), sondern
allenfalls Rufus' und Deine.
(Anders kann ich mir jedenfalls Eure blinde Ablehnung
nicht erklären.)


> Warum sollte man unbedingt mit so einem Text arbeiten,
> wenn selbst das allererste Buch über C - das von K&R -
> besser ist?

Weil es (=K&R) nur in den Augen völlig betriebsblinder
"erfahrener C-Programmierer" besser ist.

Viele Eigenheiten von C sind nur aus dem historischen
Kontext verständlich. Der K&R ist sehr interessant, aber
eben auch genau das: Ein historisches Dokument.

Ich erlaube mir dieses Urteil, weil ich im Moment in
meinem inzwischen 3. Anlauf stecke, die Programmiersprache
C zu erlernen, und das natürlich -- wie wohl jeder dumme
Anfänger -- mit dem K&R versucht habe.
Zum Glück ist mir bald aufgefallen, dass der K&R für
diesen Zweck untauglich ist, und ich habe begonnen, mir
eigene Unterlagen zu erarbeiten. Diese kommen -- wer
hätte das jetzt gedacht! -- in ihrer Struktur dem Kurs
von Helmut S. ziemlich nahe...

von W.S. (Gast)


Lesenswert?

Egon D. schrieb:
> Ich habe selten eine substanzlosere und für den Kritiker
> beschämendere Kritik gelesen.

Ach was, in diesem Punkte hat der Rufus völlig Recht. Wer sich mal den 
Anfang dieses Buches anschaut, sieht die typischen Mißgriffe:

[Zitat]
C-Programm, C-Module/Dateien, C-Quellkode, Compiler

Ein C-Programm besteht aus einer oder mehreren Datei(en) mit der Endung 
.c  , aus der/denen ein C-Compiler eine ausführbare Datei (oftmals mit 
der Endung .exe) erzeugt.

Eine C-Datei (oder auch C-Modul) wird mit einem beliebigen Text-Editor 
erzeugt und muß gültigen C-Quellkode enthalten.

Der Aufruf-Name eines C-Compilers lautet vom Unix-Ursprung her: cc
'cc' ist aber nicht der eigentliche Compiler, sondern nur ein 
Manager-Programm (Frontend), das die angegebenen Argumente prüft und die 
diversen Programme des Entwicklungssystems (oft mit vielen zusätzlichen 
Argumenten) jeweils in der richtigen Reihenfolge korrekt aufruft.

Verschiedene Aufruf-Namen:
cc (Unix-Standard),  bcc (Borland/DOS),  cl (Microsoft/DOS),  gcc 
(Gnu/Unix),  CC (C++/Unix),  ...

[/Zitat]

.. na und so weiter. Jahaha! Wer hätte das gedacht, daß eine C Datei 
tatsächlich gültigen C-Quellcode enthalten sollte! Das ist ja wirklich 
UNGLAUBLICH.. wenn's hier nicht explizit geschrieben worden wäre.

Aber die anderen Schreiberlinge kommen mir da auch nicht wirklich 
ungeschoren davon.

Hier etwas von Rheinwerk:
[Zitat]
Um zu verstehen, warum in C ein Standard eingeführt wurde, müssen Sie 
etwas zur Geschichte dieser Sprache wissen.
1 Einstieg in C
1.1 Übersicht zu C
Mit C lernen Sie eine Programmiersprache, die auf fast allen 
Betriebssystemen zur Verfügung steht. Besser noch, anders als bei vielen 
anderen Sprachen (beispielsweise BASIC) steht Ihnen auf den 
verschiedensten Plattformen eine genormte Standard-C-Bibliothek zur 
Verfügung. Dank dieser einheitlichen Implementierung und der sehr guten 
Geschwindigkeit der damit erstellten Programme ist und bleibt C wohl 
noch für eine sehr lange Zeit eine sehr populäre Sprache – und das 
sowohl im kommerziellen als auch (vor allem) im Open-Source-Bereich.

C wird auch liebevoll als High-Level-Assembler bezeichnet. Dies 
resultiert auch daher, dass der Kern (besser bekannt als Kernel) aller 
gängigen Betriebssysteme in C (und natürlich Assembler) geschrieben 
wurde – weshalb sich C hervorragend zur Systemprogrammierung eignet.

[/Zitat]

Also, in was für einem Kindergarten sind wir hier eigentlich? Oder in 
was für einer verunglückten Werbeabteilung?

Unter obigem 1.1 hätte ich anstelle der Werbung eher mich über die 
Grundsätze ausgelassen, also
- daß man zum Schreiben von C-Quellen einen Editor nimmt und nicht Word.
- daß C formatfrei geschrieben wird, also daß man nicht an bestimmte 
Zeilen- und Spaltennummern gebunden ist und Anweisungen auch über 
mehrere Zeile gehen dürfen
- daß der zu verwendende Zeichenvorrat aus ASCII besteht und daß C im 
allgemeinen Case-sensitiv ist

und so weiter. Eben so, daß man von Grund auf die Dinge abklärt, die in 
dieser Sprache erforderlich sind.

Aber offenbar können alle eingefleischten C-Programmierer nur neben 
allgemeinem Gesülze sofort in irgenwelche speziellen Nebensächlichkeiten 
verfallen und sich dort auslabern. Wahrscheinlich müßte man all diese 
Leute mit dem Prügel dazu zwingen, ihr Thema zuvörderst in 
Backus-Naur-Form niederzuschreiben - damit sie wenigstens eine vage 
Vorstellung von Systematik bekommen.

Meine Erfahrung: So richtig gute Einführungen in C gibt es nicht.

W.S.

von Dr. Sommer (Gast)


Lesenswert?

Egon D. schrieb:
> Es sind nicht MEINE Lorbeeren

Diese Logik ist mir zu verschachtelt...

Egon D. schrieb:
> Diese kommen -- wer hätte das jetzt gedacht! -- in ihrer Struktur dem
> Kurs von Helmut S. ziemlich nahe...

Weil die eigenen Notizen eher Referenzcharakter haben; ein 
Einsteigerbuch eher nicht. Oder liest du auch Lexika von A-Z?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sven L. schrieb:
> Ich würde auch auf die "C-Bibel" von Kernighan/Ritchie zurückgreifen:
> The C Programming Language, aber bitte nur im englischen Original, denn
> die deutsche Übersetzung ist sowas von grausam.

Wenn Du die erste Ausgabe meinst, bin ich, was die Übersetzung betrifft, 
auf Deiner Seite, diese Ausgabe ist wirklich grauenerregend. Allerdings 
beschreibt sie den antiquarischen C-Standard vor ANSI-C, halt das alte 
"K&R"-C, das keine Funktionsprototypen kennt und daher bei 
Funktionsaufrufen keinerlei Typprüfungen durchführen kann.

Die zweite Ausgabe hingegen, die "ANSI-C" bzw. C89 beschreibt, ist auch 
in der deutschen Übersetzung durchaus brauchbar. Und eine neuere Ausgabe 
gibt es nicht.


Egon D. schrieb:
> Zum Glück ist mir bald aufgefallen, dass der K&R für diesen Zweck
> untauglich ist

Ich habe selten eine substanzlosere und für den Kritiker beschämendere 
Kritik gelesen.

von rbx (Gast)


Lesenswert?

Für einen schnellen Einblick zum Vergleichen bietet sich das 
Erlenkötter-C-Buch und die (recht neue) Tour of C++ von Bjarne 
Stroustrup an, zumindest, wenn man schon (mehr oder weniger) 
programmieren kann.

K&R-C ist Lernen von den Profis, bzw. von den Besten, das muss nicht für 
jeden gleich genießbar sein.

Der Erlenkötter ist aber besser geeignet, um schnell bestimmte 
C-Code-Muster zu verstehen während in K&R das Referenz+Nachschlagewerk 
zu sehen ist.
Groß auf den Zusammenhang der Codebeispiele einzugehen (wozu?, 
RealWorld?) vermeiden beide Bücher.

Das war früher eigentlich anders: ganze (gut gemachte) 
Zeitschriftenartikel über z.B. Halltheorien oder Filter und deren 
Implementierungansatz UND auch noch üppige Code-Beispiele bzw. 
Programmieranleitungen zum Abtippen (damals meist in Basic).
In der Schule: coole Wahrscheinlichkeitsberechnungsprogramme, 
Wertetabellen, Analysis, Dies und Das + Kaspereien ..

(man müsste sich ein paar alte Artikel aus früheren Zeitschriften 
besorgen und die Programmcodes von Basic nach C bzw. C++ übersetzen)

von Molluske (Gast)


Lesenswert?

C++ ist tot, es lebe Rust.

von Egon D. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:

> Egon D. schrieb:
>> Zum Glück ist mir bald aufgefallen, dass der K&R für
>> diesen Zweck untauglich ist
>
> Ich habe selten eine substanzlosere und für den Kritiker
> beschämendere Kritik gelesen.

Sicher nicht.

Ich habe nämlich -- im Gegensatz zu Dir -- nicht davon
gesprochen, das die Herren Kernighan und Ritchie
"bizarre Vorstellungen" hätten, die man mit den Ideen
von "Chaoten" auf eine Stufe stellen könnte, die ihr
"Achtelwissen" zur Schau stellen.

Vielleicht beginnst Du IRGENDWANN einmal, Deine
Moderatorentätigkeit nicht nur als probate Möglichkeit
zur Machtausübung, sondern als VERPFLICHTUNG zu
einer Vorbildrolle zu verstehen.

von Ad Nauseam (Gast)


Lesenswert?

Sicher ist mein Beitrag, der an Wahrhaftigkeit deem Beitrag eines 
"Cyblords" oder eines "A-Z, 0-9" nicht nachsteht, nur versehentlich 
gelöscht worden.

Das macht nichts, denn ich habe ein so gutes Gedächtnis, daß ich ihn 
stets und ständig wortgetreu wiederholen kann (und werde)!


Cerberus schrieb:
> Cyblord -. schrieb:
>> Nö, denn ich finde ihn voll supi.
>
> Nicht mehr lange, denn dann wird sein Account gesperrt,
> wegen penetranter Trollerei. ;-b

Das glaubst Du doch selbst nicht. Der ist hier als Agent Provocateur 
fest eingestellt.

Der hier ist das gleiche Kaliber:

> CYBLORD, DEIN STIL STINKT UND GEFÄLLT DEN WENIGSTEN HIER

>> Sprich bitte nur für dich und maße dir nicht an, die Meinung Dritter zu
>> kennen oder für sie zu äußern. Mir persönlich gehen unverschämte,
>> anonyme Posts wie deiner viel mehr auf den Sack.

Das ganze Forum stinkt  Dank solcher unsauberen Figuren.

von Walter T. (nicolas)


Lesenswert?

Ich fand "Head First C" ganz nett - wenn man die "Brain Friendly 
Guide"-Serie mag.

Und dann direkt "C Traps and Pitfalls" von Andrew Koenig nachlegen.

Dass man mir im Forum hier immer wieder nahelegt, ich solle "ein Buch 
kaufen und C lernen", liegt nicht daran, daß die Bücher so schlecht 
sind, sondern daß ich so dumm bin.

Wie für die meisten Lehrbücher gilt: Wenn man mit Englisch kein Problem 
hat, ist die englische Version gegenüber der deutschen Übersetzung zu 
bevorzugen, da sowohl besser als auch billiger.

: Bearbeitet durch User
von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Egon D. schrieb:
>> Diese kommen -- wer hätte das jetzt gedacht! -- in ihrer
>> Struktur dem Kurs von Helmut S. ziemlich nahe...
>
> Weil die eigenen Notizen eher Referenzcharakter haben;

Nö. Meine nicht.

Ich versuche, eine Art Repetitorium zu verfassen. Das
baut natürlich auf meinem persönlichen Vorwissen auf
und versucht, den Stoff so darzustellen, dass jemand,
der grundlegend programmieren kann und weiss, wie Computer
funktionieren, leicht die Besonderheiten von C erkennen
kann.

Das betrifft eher die Gliederung und Gruppierung des
Stoffes und weniger die formalen Details. Das genaue
"Wie" muss man notfalls im Standard nachschlagen. Für
den Anfänger wichtig ist eher die Frage "Warum?" Warum
wurde dies von den Sprachschöpfern gerade SO und nicht
anders festgelegt?


> Oder liest du auch Lexika von A-Z?

Nein, natürlich nicht -- aber das hat doch nichts mit
dem Thema zu tun?!

K&R waren dem Geist ihrer Zeit verhaftet. Das ist
überhaupt keine Herabsetzung, sondern nur eine
Feststellung. Da sich die Zeiten geändert und sich die
Prioritäten verschoben haben, ist eine geänderte
Darstellung notwendig.

Mich als Anfänger interessieren nicht die Bohne die
subtilen Unterschiede, wo ich unbedingt geschweifte
Klammern setzen muss , wo es nur empfehlenswert ist,
und wo ich sie weglassen kann . Das ist in einer
Spracheinführung komplette Zeitverschwendung. Ich
brauche EIN System (und zwar ein EINFACHES System), das
Fehlerarmut garantiert und unliebsame Überraschungen
weitgehend ausschließt.
Das nur als Beispiel; es gibt noch viele andere solcher
Punkte.

von Dr. Sommer (Gast)


Lesenswert?

Egon D. schrieb:
> Nein, natürlich nicht -- aber das hat doch nichts mit dem Thema zu tun?!

Das Schellong-buch ist aber so geschrieben. Es werden einem eine Reihe 
an C Konstrukten um die Ohren geknallt ohne sie vernünftig in einen 
Kontext zu bringen. Vernünftige Bücher erläutern erst die Umsetzung 
einfacher Programme und steigern sich dann, und zeigen dabei die 
benutzten Mechanismen. Das erste Beispiel im Schellong Buch ist schon so 
lang dass das kein Anfänger versteht,  und erklärt wird nix.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ich hab' das Gefühl, daß Du mit der "Lernbetty" von W.S. glücklich 
werden könntest.

von rbx (Gast)


Lesenswert?

Molluske schrieb:
> C++ ist tot, es lebe Rust.

Nein, wenn schon, dann Haskell. Das hat verschiedene Gründe.
Man denkt sich aber: irgendwann ist irgendwann zu spät..:(

von Dr. Sommer (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Ich hab' das Gefühl, daß Du mit der "Lernbetty" von W.S. glücklich
> werden könntest.

Bei der krieg ich Ausschlag wenn ich den Programmierstil sehe. Die kann 
man als Negativbeispiel nutzen, wie man es nicht machen sollte...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dr. Sommer schrieb:
> Bei der krieg ich Ausschlag wenn ich den Programmierstil sehe.

Den bekomme ich da auch - und beim Schellong. Da der so begeistert 
aufgenommen wird, denke ich mir, daß das zusammen passen dürfte.

von Egon D. (Gast)


Lesenswert?

W.S. schrieb:

> Unter obigem 1.1 hätte ich anstelle der Werbung eher
> mich über die Grundsätze ausgelassen, also
> - daß man zum Schreiben von C-Quellen einen Editor nimmt
>   und nicht Word.
> - daß C formatfrei geschrieben wird, also daß man nicht
>   an bestimmte Zeilen- und Spaltennummern gebunden ist
>   und Anweisungen auch über mehrere Zeile gehen dürfen
> - daß der zu verwendende Zeichenvorrat aus ASCII besteht
>   und daß C im allgemeinen Case-sensitiv ist
>
> und so weiter. Eben so, daß man von Grund auf die Dinge
> abklärt, die in dieser Sprache erforderlich sind.

Richtig.
In meinen privaten Notizen steht das auch ungefähr so :)


> Aber offenbar können alle eingefleischten C-Programmierer
> nur neben allgemeinem Gesülze sofort in irgenwelche
> speziellen Nebensächlichkeiten verfallen und sich dort
> auslabern.

Ahh. Hier wird W.S. wieder der alte... die Sachlichkeit
war ja schon angsteinflößend...


> Wahrscheinlich müßte man all diese Leute mit dem Prügel
> dazu zwingen, ihr Thema zuvörderst in Backus-Naur-Form
> niederzuschreiben - damit sie wenigstens eine vage
> Vorstellung von Systematik bekommen.

Du hast Recht -- aber hasserfüllte Diffamierungen der
Autoren führen nicht weiter.
Das spannende Rätsel ist: WARUM ist das so?

Welcher Einfluss in der Ausbildung oder in der alltäglichen
Tätigkeit der Informatiker führt dazu, dass sie zwar
komplexe Strukturen verstehen, schaffen und verbessern
können -- diesen Prozess selbst aber nicht wohlstrukturiert
erklären können?


> Meine Erfahrung: So richtig gute Einführungen in C gibt
> es nicht.

Mag sein. Die Art, wie Helmut S. den Stoff gliedert,
gefällt mir schon mal.

von Dr. Sommer (Gast)


Lesenswert?

Egon D. schrieb:
> Mag sein. Die Art, wie Helmut S. den Stoff gliedert, gefällt mir schon
> mal.

Ernsthaft? Wie viele der Kapitel musstest du denn lesen um ein Hello 
World zu schreiben... und auch zu wissen was die einzelnen Wörter 
bedeuten? Direkt das erste Beispiel enthält das Wort "register". Hast du 
das sofort verstanden? Würde es jemand verstehen der noch nie 
programmiert hat und keine Ahnung hat wie eine CPU aufgebaut ist? Eines 
der ersten Beispiele benutzt setjmp. War das auch sofort einsichtig?

Egon D. schrieb:
> Welcher Einfluss in der Ausbildung oder in der alltäglichen Tätigkeit
> der Informatiker führt dazu, dass sie zwar komplexe Strukturen
> verstehen, schaffen und verbessern können -- diesen Prozess selbst aber
> nicht wohlstrukturiert erklären können?

Weil die Denk-Strukturen zur Anwendung andere sind als zum Erklären. Ist 
z.B. bei Mathematikern auch so. Etwas das einem Experten völlig klar ist 
kann einem Anfänger große Verständnisprobleme bedeuten; das zu erklären 
ist dann schwierig. Man sieht dem Wald einfach nicht mehr. Daher sind 
gute Professoren auch rar.

von Jens (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Das Schellong-buch ist aber so geschrieben. Es werden einem eine Reihe
> an C Konstrukten um die Ohren geknallt ohne sie vernünftig in einen
> Kontext zu bringen.

Dabei sollte man nicht vergessen, dass der Teil im Internet nur die zur 
Referenz komprimierte Fassung des Buches ist. Das Buch ist selbst 
wesentlich umfangreicher.

Mir gefällt es, wie vieles aber Geschmackssache.

Jens

von Dr. Sommer (Gast)


Lesenswert?

Jens schrieb:
> Das Buch ist selbst wesentlich umfangreicher.

Achso. Dann ist es ja nicht so schlimm.

von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Egon D. schrieb:
>> Nein, natürlich nicht -- aber das hat doch nichts
>> mit dem Thema zu tun?!
>
> Das Schellong-buch ist aber so geschrieben.

Wie "SO"? Wie ein Lexikon?


> Es werden einem eine Reihe an C Konstrukten um die
> Ohren geknallt ohne sie vernünftig in einen Kontext
> zu bringen.

Nun ja, eine der herausragenden Eigenheiten von C ist,
dass unheimlich viel "Funktionalität" in verhältnismäßig
wenig "Sprache" gequetscht wurde. Das ist vom heutigen
Standpunkt aus lästig, ist aber dem damaligen Stand der
Technik geschuldet. Man sollte also, um einen Spruch von
Lem hier anzubringen, "...weder lieben noch hassen,
sondern verstehen."

Etwas drastischer ausgedrückt: Eine konsistente Logik
in etwas aufzeigen zu wollen, das keine konsistente
Logik HAT , ist Zeitverschwendung.

C ist ein wildes Konglomerat ausgeklügelter, aber im
Prinzip willkürlicher Festlegungen. Ich leugne die
Genialität gar nicht, die dahintersteckt -- aber man
sollte auch nicht mehr Bedeutung hineininterpretieren,
als es enthält.


> Vernünftige Bücher erläutern erst die Umsetzung
> einfacher Programme und steigern sich dann, und
> zeigen dabei die benutzten Mechanismen.

Nein -- wozu?

Wenn ich auf die Schnelle ein Programm hinrotzen will,
das halbwegs läuft, nehme ich Tcl. Wenn ich dann noch
will, dass es SCHNELL AUSGEFÜHRT wird, nehme ich
FreePascal.

Wer C lernt, hat also ein spezielles Motiv, genau C
zu lernen -- und nicht eine Sprache, die etwas weniger
wählerisch bei der Auswahl ihrer Freunde ist.

Und wer dieses spezielle Motiv hat, dem muss man nicht
mehr erklären, dass Computer mit Nullen und Einsen
funktionieren.

Das Problem an den Einführungsbüchern ist, dass immer
vorausgesetzt wird, der Leser habe nicht die geringste
Ahnung von COMPUTERN. Das ist aber idiotisch -- sehr
oft ist es so, dass der Leser nur keine Ahung von genau
DIESER PROGRAMMIERSPRACHE hat, sich aber sehr wohl mit
Computern einigermaßen auskennt!


> Das erste Beispiel im Schellong Buch ist schon so
> lang dass das kein Anfänger versteht, und erklärt
> wird nix.

Kann sein.
Meine Aussage ist nicht, dass das Buch super ist,
sondern nur, dass die Grundidee meiner Meinung nach in
die richtige Richtung geht.

von Dr. Sommer (Gast)


Lesenswert?

Egon D. schrieb:
> Nein -- wozu?

Um eine stetige Lernkurve zu erhalten. Viele Informatiker sind Learning 
By Doing Menschen und probieren gerne alles sofort aus. Wenn man erst 
das ganze Buch lesen muss um das simpelste Hello World schreiben zu 
können weil "puts" unter "P" zu finden ist wie im Lexikon, geht das 
nicht.

Egon D. schrieb:
> Das ist aber idiotisch -- sehr oft ist es so, dass der Leser nur keine
> Ahung von genau DIESER PROGRAMMIERSPRACHE hat, sich aber sehr wohl mit
> Computern einigermaßen auskennt!

Daher muss das Buch aber trotzdem nicht so mies strukturiert sein. z.B. 
"The rust programming language" fängt auch mit einem Hello World an und 
steigert langsam die Komplexität, setzt aber voraus dass man schon 
programmieren kann. Das lässt sich sehr gut lesen. Man kann direkt nach 
den ersten paar Seiten eigene Programme schreiben, Konstrukte 
kombinieren und ihre Funktion erleben.

von zitter_ned_aso (Gast)


Lesenswert?

Bei java ist es doch noch schlimmer.
1
public class Hallo
2
{ 
3
public static void main( String[] args ){ 
4
System.out.println( "Hallo, Welt!" ); 
5
}
6
7
}

Muss man erst mal die Grundlagen von OOP beherrschen um "hallo" in der 
Console auszugeben?

die C-Tutorials / Bücher setzen da wesentlich weniger Vorwissen voraus 
(behaupte ich mal)

von Einer K. (Gast)


Lesenswert?

Egon D. schrieb:
> Welcher Einfluss in der Ausbildung oder in der alltäglichen
> Tätigkeit der Informatiker führt dazu, dass sie zwar
> komplexe Strukturen verstehen, schaffen und verbessern
> können -- diesen Prozess selbst aber nicht wohlstrukturiert
> erklären können?

"Die vier Stufen der Kompetenzentwicklung" kannst du dir von Wikipeter 
erklären lassen...
https://de.wikipedia.org/wiki/Kompetenzstufenentwicklung

von Dr. Sommer (Gast)


Lesenswert?

zitter_ned_aso schrieb:
> Muss man erst mal die Grundlagen von OOP beherrschen um "hallo" in der
> Console auszugeben?

Gar nicht so verkehrt, direkt Objekte zu erläutern. Diese Denkweise ist 
sehr verbreitet zur Strukturierung von Anwendungen. Das ist durchaus 
etwas, das C-programmierern fehlt.

PS: so genial ist C auch nicht. Da gibt's viel lustigere Dinge :)

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

... wie immer viel gelaber von ahnungslosen!

allgemein gibt es in dt/engl. zur soliden einführung in C alles ganz gut 
im netz!

und zur vertiefung - must read!
- Moderne C-Programmierung, H. Schellong
- 21st Century C, Klemens

alle guten c-bookz sind im web als pdf findbar!


UND IMMER UND IMMER c-quellen studieren, ~80% sind trivial ABER die 
anderen 20% sind für die snippet schatztruhe, äh der hier allgemein 
gezeigte code ist oft zu 98-99,999% müll!


mt

von zitter_ned_aso (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Gar nicht so verkehrt, direkt Objekte zu erläutern.

Eher schreiben sie dann "erst mal so übernehmen, später wird es 
ausführlich erläutert". Dafür hat man dann bei Java-Büchern auf der 
Seite 573 eine GUI erstellt.

Bei C++-Büchern bekommt man auf der Seite 875 den Hinweis dass es noch 
STL gibt. Aber dieses Thema kann hier nicht behandelt werden (da zu 
umfangreich und würde den Umfang dieses Einführungsbuches zu C++ mit 913 
Seiten sprengen).

Ich denke es ist OK, dass man am Anfang des Buches Begriffe verwendet, 
die noch nicht so klar sind. Weil man Fachbücher mehrmals liest. (und 
jedesmal entdeckt dabei etwas neues)

Was ich viel wichtiger finde, sind die Aufgaben. (viellicht sogar mit 
Lösungen)

von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Egon D. schrieb:
>> Mag sein. Die Art, wie Helmut S. den Stoff gliedert,
>> gefällt mir schon mal.
>
> Ernsthaft?

Ja, klar.

Der Grund ist auch ganz einfach: Als ich vor einer Weile
angefangen habe, C zu lernen, habe ich ziemlich ratlos
vor dem K&R und einem Sammelsurium von Tutorials aus
dem Internet gesessen und wusste nicht recht, wo ich
anfangen sollte.
Also habe ich versucht, mir anhand des K&R einen
Überblick über den Lernstoff zu verschaffen. Bald
kam die Idee auf, zuerst alles abzuhandeln, was mit dem
Programmablauf selbst zu tun hat (Anweisungen und die
Steuerstrukturen), um dann anhand einfacher Beispiele in
das Typsystem einzudringen. (Das war deshalb naheliegend,
weil die PASCAL-Bücher aus meiner frühen Jugend genauso
aufgebaut waren.)


Diese Reihenfolge funktioniert aber nicht, weil im
ganzen K&R keine eindeutige Definition für Anweisungen
zu finden ist -- was seine logische Erklärung darin
findet, dass Anweisungen dadurch gebildet werden, dass
einem Ausdruck ein Semikolons angefügt wird.

Also muss man zuerst Ausdrücke abhandeln, ehe man
Anweisungen betrachten kann. Ausdrücke bestehen aber aus
Operatoren und Operanden. Operanden können Variablen,
Konstanten (oder andere Ausdrücke) sein.

Resultat: Man muss sich ERST mit dem ganzen Chaos des
Typsystems und der fünfzehn Vorrangebenen der Operatoren
herumärgern, ehe man den eigentlich ganz einfachen Teil
der Steuerstruktur bearbeiten kann -- zumindest dann,
wenn man den Stoff so aufbauen will, dass das Neue stets
auf der Basis des schon Behandelten erklärt wird.


> Wie viele der Kapitel musstest du denn lesen um ein
> Hello World zu schreiben... und auch zu wissen was die
> einzelnen Wörter bedeuten?

Weisst Du was? Das ist mir komplett egal.

Ich bin kein Fünfjähriger, der durch besonders lust- und
erfolgsbetonte Didaktik bei der Stange gehalten werden
muss.
Ich habe mir vorgenommen, C zu lernen, weil ich Mikro-
controller programmieren will und es dafür keine für
mich akzeptable alternative Sprache gibt.

Und ich habe den Anspruch an meine Arbeit, dass ich den
Teil der Sprache, den ich aktiv einsetze, vollständig
und richtig beherrsche.
Mich interessiert -- wie bereits anderswo geschrieben --
nicht die Bohne, ob ich diese Klammer in jenem Spezialfall
weglassen kann, sondern mich interessiert für den Anfang
EIN Strickmuster, das möglichst frei von unerwarteten
Nebenwirkungen und Fallstricken ist.

Ich will nach Möglichkeit nichts Falsches lernen, weil
Umlernen viel schwerer ist als Neulernen (und mit fast
50 Jahren hat man zum Umlernen nicht mehr SO viel Zeit).
Ergo muss ich SEHR vorsichtig vorgehen und alles, was
ich mir einbläue, SEHR sorgfältig prüfen.

Es kommt dabei auf einen Monat mehr oder weniger überhaupt
nicht an -- die Hauptsache ist VERLÄSSLICHES Wissen. Das
ist aber mit Beispielen schlecht zu erreichen -- wichtig
ist das tiefe Verständnis dafür, WARUM dieser Sachverhalt
gerade SO und nicht anders festgelegt wurde.


> Direkt das erste Beispiel enthält das Wort "register".
> Hast du das sofort verstanden?

Nein.

Ich habe mir, um überhaupt irgendwie anzufangen, eine
Übersicht der Schlüsselworten von ANSI-C aufgestellt
(es sind genau 32), und diese, nach Themen gruppiert,
auswendig gelernt. (Dabei macht man dann schon mal die
anekdotische Beobachtung, dass das Typsystem doppelt
soviel Raum einnimmt wie die Steueranweisungen.)

Der nächste Schritt war, eine Tabelle aller Operatoren
und des Vorranges aufzuschreiben und diese nach
Anwendung zu gruppieren. Ich weiss inzwischen, dass
es 15 Vorrangebenen und ca. 50 Operatoren gibt, aber
ich kann sie noch nicht alle auswendig :)

Was der dritte Schritt wird, weiss ich noch nicht.


> Würde es jemand verstehen der noch nie programmiert
> hat und keine Ahnung hat wie eine CPU aufgebaut ist?

Das ist doch völlig irrelevant.

Warum konstruierst Du einen hypothetischen C-Anfänger,
wenn Dir hier ein realer C-Anfänger gegenübersitzt?

Ich HABE schon programmiert. Ich WEISS, wie eine CPU
aufgebaut ist. Und gestützt auf genau dieses Vorwissen
will ich jetzt C lernen!


> Eines der ersten Beispiele benutzt setjmp. War das
> auch sofort einsichtig?

Nein -- aber das ist doch irrelevant!

Was habe ich denn von schnell angeeignetem Wissen, das
mir zu schnellen "Erfolgen" verhilft, wenn die Hälfte
dieses Wissens unvollständig und fehlerhaft ist?

Überspitzt gesagt: Ich möchte vermeiden, dass die
Besserwissen aus dem Mikroconrollerforum, die dann
zukünftig an meinem C-Code herummäkeln, bei ihrer
Mäkelei auch noch Recht haben!
Das Ziel erreiche ich aber nicht, indem ich meterweise
nur halb verstandene Sprachkonstrukte zusammennagele --
dazu enthält C viel zu viele Sprengfallen.


> Egon D. schrieb:
>> Welcher Einfluss in der Ausbildung oder in der
>> alltäglichen Tätigkeit der Informatiker führt dazu,
>> dass sie zwar komplexe Strukturen verstehen, schaffen
>> und verbessern können -- diesen Prozess selbst aber
>> nicht wohlstrukturiert erklären können?
>
> Weil die Denk-Strukturen zur Anwendung andere sind als
> zum Erklären.

Auf den ersten Blick ist das klar und scheinbar trivial.
Auf den zweiten Blick bemerkt man dann, dass Programmierer
ständig damit zu tun haben, reale Dinge zu abstrahieren
und in abstrakter(er) Form zu beschreiben.
Es überrascht mich daher schon, dass ihnen die umgekehrte
Richtung -- nämlich allgemeinverständlich zu bechreiben,
was sie auf der abstrakten Ebene eigentlich tun -- häufig
SO schwer fällt.

von Percy N. (vox_bovi)


Lesenswert?

Egon D. schrieb:

> Auf den ersten Blick ist das klar und scheinbar trivial.
> Auf den zweiten Blick bemerkt man dann, dass Programmierer
> ständig damit zu tun haben, reale Dinge zu abstrahieren
> und in abstrakter(er) Form zu beschreiben.
> Es überrascht mich daher schon, dass ihnen die umgekehrte
> Richtung -- nämlich allgemeinverständlich zu bechreiben,
> was sie auf der abstrakten Ebene eigentlich tun -- häufig
> SO schwer fällt.

Daneben verwundert mich immer wieder, welche Schwierigkeiten manche 
Programmierer mit der deutschen Rechtschreibung und Grammatik zu haben 
scheinen; wenn sich dazwischen noch ein bisschen nachvollziehbare 
Semantik dekodieren lässt, darf man von Glück reden.

von Walter T. (nicolas)


Lesenswert?

Nicht schlecht. Insgesamt werden im ganzen Thread fünf Bücher erwähnt, 
aber die Diskussion dreht sich jetzt zehn Scroll-Seiten darum, warum 
zwei davon schlecht seien.

Offensichtlich ist es deutlich wichtiger, den blöden Anfängern klar zu 
machen, warum dieses oder jenes Buch schlecht ist, als zu erklären, was 
an bestimmten Büchern gut ist.

von Egon D. (Gast)


Lesenswert?

Walter T. schrieb:

> Nicht schlecht. Insgesamt werden im ganzen Thread
> fünf Bücher erwähnt, aber die Diskussion dreht sich
> jetzt zehn Scroll-Seiten darum, warum zwei davon
> schlecht seien.

Naja, die Diskussion kann nicht besser sein als die
Teilnehmer.

Überdies gefällt mir Deine Wertung "schlecht" nicht
so besonders. K&R ist nicht schlecht. Euklids
"Elemente" sind auch nicht schlecht, aber trotzdem
nicht zwingend die optimale Einsteigerliteratur.
Dasselbe trifft auf das Rechenbuch von Adam Ries zu.


> Offensichtlich ist es deutlich wichtiger, den blöden
> Anfängern

Ich bin zwar Anfänger, aber ich würde es nett finden,
wenn Du mich trotzdem nicht als "blöd" beleidigen
würdest.


> klar zu machen, warum dieses oder jenes  Buch
> schlecht ist, als zu erklären, was an bestimmten
> Büchern gut ist.

Dann hast Du zumindest meinen langen Beitrag nicht
(aufmerksam) gelesen, denn die ersten vier Absätze
erklären, warum ich die inhaltliche Gliederung des
Schellong-Buches gut finde: Sie entspricht genau dem
Zugang zum Stoff, den ich selbst gewählt habe.

von Egon D. (Gast)


Lesenswert?

zitter_ned_aso schrieb:

> Muss man erst mal die Grundlagen von OOP
> beherrschen um "hallo" in der Console auszugeben?

Wenn man eine objektoriente Sprache verwendet:
Natürlich. Wie denn sonst?

Man sollte ja auch die Grundlagen der Zerspanung
beherrschen, wenn ohne Gefahr für Leib und Leben
ein Stück Ding planfräsen will. Wie denn auch
anders?


> die C-Tutorials / Bücher setzen da wesentlich weniger
> Vorwissen voraus (behaupte ich mal)

Mag sein. Die Frage ist, ob das sinnvoll ist.

Würdest Du Dich von einem Arzt operieren lassen, der
lediglich "Hirnchirurgie für Dummies" gelesen hat?

von Philipp L. (viech)


Lesenswert?

Hallo zusammen,

das ist ja ein ganz lebhafter Thread geworden :-)

Vielen Dank !

von W.S. (Gast)


Lesenswert?

Egon D. schrieb:
>> Wahrscheinlich müßte man all diese Leute mit dem Prügel
>> dazu zwingen, ihr Thema zuvörderst in Backus-Naur-Form
>> niederzuschreiben - damit sie wenigstens eine vage
>> Vorstellung von Systematik bekommen.
>
> Du hast Recht -- aber hasserfüllte Diffamierungen der
> Autoren führen nicht weiter.
> Das spannende Rätsel ist: WARUM ist das so?
>
> Welcher Einfluss in der Ausbildung oder in der alltäglichen
> Tätigkeit der Informatiker führt dazu, dass sie zwar
> komplexe Strukturen verstehen, schaffen und verbessern
> können -- diesen Prozess selbst aber nicht wohlstrukturiert
> erklären können?

Nun, ich bin weder hasserfüllt (das hast du bloß hineininterpretiert) 
noch ist das eine Diffamierung geswesen. Es war nur eine Idee, den 
Chaoten, die nicht logisch denken können und deshalb auch keine sinnvoll 
aufgebauten Einführungen in eine Programmiersprache zuwege bringen, 
selbiges durch den Zwang, innerhalb der Backus-Naur-Notation sich 
logisch und vollständig ausdrücken zu müssen, das logische Denken 
endlich beizubringen - oder ersatzeshalber (falls das nicht möglich ist) 
sie vom Schreiben schlechter Bücher abzuhalten.

Das WARUM erkläre ich mir so, daß all diese Leute eben zu ungebildet 
im Denken sind. Nein, ich meine nicht, daß sie das Zeug, über das sie 
labern wollen, nicht auswendig gelernt hätten - sondern, daß sie nicht 
über der Materie stehen, sondern ihr Zeugs nur auswendig gelernt haben 
und deshalb in ihre Ausführungen keine Systematik hineinbringen können.

Kurz gesagt: es ist Unfähigkeit.

Und der Einfluß der Ausbildung ist ein negativer: Schon in den Schulen 
werden die Lehrer von den Eltern der Schüler mit dem Advokaten bedroht, 
wenn der Schüler zu schlechte Noten für's Abitur heim bringt. Also 
erlangen viele junge Leute das Abitur, die dafür eigentlich zu doof 
sind. Das setzt sich dann an den Hochschulen fort, und zum Schluß ist es 
die Industrie, die auf unfreiwillige Weise die notwendige Selektion 
erledigen muß. Zum Beispiel, daß Firmen Pleite gehen, wenn deren 
Entwickler sich zu doof anstellen. Die Alternative ist, daß der 
jeweilige Chef rectzeitig die Reißleine zieht, den/die Leute 
rausschmeißt und zusieht, daß er deren Arbeit nach Außerhalb vergibt 
(was andere Fährnisse bedeutet, aber oftmals der einzige übrig bleibende 
Weg ist).

So sieht das aus.

Guck dir die Beiträge in diesem Thread an, da wirst du sehen, wie viele 
selbsternannte Gurus sich hier großartig über den Rest der Welt erheben 
wollen, ohne jemals irgend etwas Sinnvolles selbst geleistet zu haben. 
Genau die sind das, die im realen Leben eine Firma durch ihre 
Unfähigkeit zugrunde richten würden, wenn man sie ließe. Aber hier im 
Forum können sie große Töne spucken. Die Welt ist eben voll von 
Backpfeifen - und es werden immer mehr.


zitter_ned_aso schrieb:
> Ich denke es ist OK, dass man am Anfang des Buches Begriffe verwendet,
> die noch nicht so klar sind. Weil man Fachbücher mehrmals liest. (und
> jedesmal entdeckt dabei etwas neues)

Eigentlich ist es ganz einfach: Man soll ein Buch oder eine Einführung 
in ein Thema so schreiben, als ob man es für einen alten Advokaten 
schriebe. Wohlgemerkt: Der alte Advokat ist kein Dummer, sondern er hat 
einen rasiermesserscharfen Verstand und eine schnelle Auffassungsgabe. 
Er kann auch logisch denken und bei hinreichenden Anfangs-Informationen 
kann er jeden Beweis erfolgreich zuende führen. Er hat auch Bildung und 
Weltkenntnis. ABER: Er hat keinerlei Kenntnisse über genau DAS Thema, 
was man gerade zu erklären sich anschickt. Also muß man ihm all das von 
Anfang an, aber logisch und eindeutig erklären, was man im Folgenden zu 
benutzen gedenkt. Kurzum, man muß ein Buch logisch aufbauen und Begriffe 
vor ihrer Verwendung definieren. Genau so, woe man das mit Typen und 
Variablen in einer Programmiersprache tut.


Egon D. schrieb:
> Ich HABE schon programmiert. Ich WEISS, wie eine CPU
> aufgebaut ist. Und gestützt auf genau dieses Vorwissen
> will ich jetzt C lernen!

Dann verlasse dich lieber NICHT auf das Gelaber in diesem Forum, sondern 
suche dir deinen Weg selber. Ich hatte vor Urzeiten am Umarbeiten des 
Sozobon von K&R auf Ansi mitgearbeitet, selber den Tiny von van Zandt 
von 8086 auf Z80 mit extrem mäßigem Erfolg die Performance betreffend 
umgearbeitet und benutze C seit langem für Mikrocontroller - aber nicht, 
weil ich C so toll fände, sondern nur mangels besserer Alternativen. 
Lies dich einfach ein anhand diverser Quellen - aber betrachte diese mit 
Abstand. Sei dir immer klar darüber, daß C keine logische 
Programmiersprache ist, sondern an fast allen grundlegenden Stellen nach 
dem Motto gestrickt ist "das ist hier eben so, basta!". Verliere beim 
Benutzen von C nicht deinen logischen Verstand über die diversen "ist 
eben so". Und sieh auch die diversen von selbsternannten Gurus verfaßten 
"Regeln" mit Abstand. Diese gehören nämlich nicht zum eigentlichen 
Sprachstandard und sind mehrheitlich nicht zuende gedacht. 
Wahrscheinlich ist es wirklich das Beste, hauptsächlich in Pascal 
(Delphi, Lazarus) zu programmieren und C an dem zu messen, was man am 
heutigen Pascal hat. Für einen Eindruck von C++ reicht es aus, sich mal 
den Stroustrup durchzulesen, um genug davon zu wissen. Und für das 
Programmieren von µC ist C++ herzlich irrelevant. Man kann es tun, genau 
so wie man ein Pseudo-Super-Mikro-Linux für einen Atmel AVR schreiben 
kann, aber es ist eben irrelevant.

W.S.

von Anton M. (antonm)


Lesenswert?

Dr. Sommer schrieb:
> Etwas das einem Experten völlig klar ist
> kann einem Anfänger große Verständnisprobleme bedeuten; das zu erklären
> ist dann schwierig.

Die Lern-Schwierigkeiten liegen nicht selten in den Programmiersprachen 
selbst begründet. Was man schließlich verstanden hat wird in der 
Anwendung zwar meistens einfach. Die viel entscheidendere Frage ist 
jedoch, welchen Aufwand der durchschnittliche Programmierinteressierte 
überhaupt treiben muss um zu diesem Verständnis zu gelangen.

Beitrag #5689389 wurde von einem Moderator gelöscht.
von Axel S. (a-za-z0-9)


Lesenswert?

Egon D. schrieb:
> Die Art, wie Helmut S. den Stoff gliedert,
> gefällt mir schon mal.

O tempora o mores!

Ich erinnere mich noch gut an Helmut Schellong und die Diskussionen mit 
und über ihn. Das war damals™ noch im Usenet (die Älteren erinnern 
sich?) und er galt als Gruppenclown und Lachnummer.

Hat er es jetzt ernsthaft zur Authorität und Respektsperson in Sachen 
C-Programmierung geschafft? Dann kann der Weltuntergang nicht mehr fern 
sein. Ich pack dann mal die Koffer ...

von Percy N. (vox_bovi)


Lesenswert?

Egon D. schrieb:
> zitter_ned_aso schrieb:
>
>> Muss man erst mal die Grundlagen von OOP
>> beherrschen um "hallo" in der Console auszugeben?
>
> Wenn man eine objektoriente Sprache verwendet:
> Natürlich. Wie denn sonst?
>

Magst Du noch erläutern, wie weit Objekte für C relevant sind?

> Man sollte ja auch die Grundlagen der Zerspanung
> beherrschen, wenn ohne Gefahr für Leib und Leben
> ein Stück Ding planfräsen will. Wie denn auch
> anders?
>

Besser ist es. Aber was hilft dem Eleven dabei die hehre Schmiedekunst?
>

>> die C-Tutorials / Bücher setzen da wesentlich weniger
>> Vorwissen voraus (behaupte ich mal)
>
> Mag sein. Die Frage ist, ob das sinnvoll ist.
>
Die Antwort lautet "ja".

> Würdest Du Dich von einem Arzt operieren lassen, der
> lediglich "Hirnchirurgie für Dummies" gelesen hat?

Würdest Du Dich von jemandem beraten lassen, der auf solchermaßen 
erbärmlichem Niveau argumentiert?

von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Egon D. schrieb:
>> Nein -- wozu?
>
> Um eine stetige Lernkurve zu erhalten. Viele
> Informatiker sind Learning By Doing Menschen und
> probieren gerne alles sofort aus.

Hmm. Interessant. Vielleicht führt der Gedanke
tatsächlich weiter.

Ich lerne i.d.R. sehr ausgeprägt zweiphasig.

Je komplizierter das Thema ist, desto stärker bin ich
am Anfang darauf angewiesen, dass ich mich erstmal
grob im Stoff orientieren kann. Das hat wenig mit dem
reinen Schreibstil oder mit didaktischer Zuckerbäckerei
zu tun, sondern mit einer schwer erklärbaren Fähigkeit
des jeweiligen Autors, die innere Struktur des Stoffes
deutlich werden zu lassen.
In dieser Phase habe ich nur zwei Möglichkeiten:
Entweder ich finde eine Quelle, die den Stoff so
darstellt, wie ich es brauche, oder ich muss mir ein
solches Dokument selbst erarbeiten. Ohne geht es nicht.

Den Übergang zu Phase Zwei habe ich nicht in der Hand,
das passiert einfach. Irgendwann kommt eine Idee: "Ach,
das ist ja interessant, da müsste man doch eigentlich
... tun können", und das probiere ich dann.


> Wenn man erst das ganze Buch lesen muss um das
> simpelste Hello World schreiben zu können weil
> "puts" unter "P" zu finden ist wie im Lexikon,
> geht das nicht.

Wie schon gesagt: Es stört mich nicht, mit dem
Ausprobieren etwas länger zu warten, wenn ich mich
im Gegenzug auf mein Wissen verlassen kann.

Überdies ist das Schellong-Buch nicht wie ein Lexikon
strukturiert, sondern es versucht, die Schwierigkeiten
in der Reihenfolge zu behandeln, in der sie typischer-
weise auftreten. Es ist völlig stringent, erstmal etwas
zur Struktur des Entwicklungssystems zu sagen, dann auf
den zulässigen Zeichenvorrat, die Schlüsselworte, die
Operatoren, das Typsystem und so weiter zu kommen. Die
Sprache wird völlig konsequent aus den elementaren
Bestandteilen aufgebaut.

Mir ist es -- gerade beim Selbststudium -- über die Maßen
wichtig, dass das, was ich mir aneigne, KORREKT ist, also
sachlich richtig und vollständig. Das ist bei Lehrmaterial,
das eine für mich ERKENNBARE innere Logik hat, wesentlich
leichter abzusichern als bei einem, wo das nicht der Fall
ist.


Ganz abgesehen davon ist es zwar weit verbreitet,
aber keineswegs zwingend, dass man das Erlernen einer
Programmiersprache von Anfang an mit dem SCHREIBEN von
Programmen verbindet.
Es gibt ganze Sprachschulen, die darauf aufbauen, dass
sich Erwachsene mit einer Sprache leichter durch Hören
und Lesen vertraut machen können, und was für lebende
Sprachen wahr ist, sollte für Programmiersprachen nicht
falsch sein.
"Hören" geht zwar bei Quelltexten nicht so gut, aber
"Lesen" schon.

von Percy N. (vox_bovi)


Lesenswert?

Egon D. schrieb:

> Ganz abgesehen davon ist es zwar weit verbreitet,
> aber keineswegs zwingend, dass man das Erlernen einer
> Programmiersprache von Anfang an mit dem SCHREIBEN von
> Programmen verbindet.
> Es gibt ganze Sprachschulen, die darauf aufbauen, dass
> sich Erwachsene mit einer Sprache leichter durch Hören
> und Lesen vertraut machen können, und was für lebende
> Sprachen wahr ist, sollte für Programmiersprachen nicht
> falsch sein.
> "Hören" geht zwar bei Quelltexten nicht so gut, aber
> "Lesen" schon.

Das beschreibt wahrscheinlich recht gut den Grund dafür, dass Max 
Berlitz in Armut starb und heute völlig vergessen ist.

von Egon D. (Gast)


Lesenswert?

Axel S. schrieb:

> Egon D. schrieb:
>> Die Art, wie Helmut S. den Stoff gliedert, gefällt
>> mir schon mal.
>
> O tempora o mores!
>
> Ich erinnere mich noch gut an Helmut Schellong und die
> Diskussionen mit und über ihn. Das war damals™ noch im
> Usenet (die Älteren erinnern sich?) und er galt als
> Gruppenclown und Lachnummer.

Das sagt mehr über Gruppendynamik als über Helmut S.

Und wenn ich eines im UseNet gelernt habe, dann ist es,
dass das Argument -- und NUR das Argument -- zählt, und
nicht, als was eine Person angeblich gilt.


> Hat er es jetzt ernsthaft zur Authorität und
> Respektsperson in Sachen C-Programmierung geschafft?

Häh?!

Nochmal ganz langsam zum Mitschreiben: Ich habe -- der
Not gehorchend, nicht dem eigenen Triebe -- vor einigen
Monaten begonnen, mir ein Repetitorium zur Programmier-
sprache C zusammenzuschreiben.

Durch den laufenden Thread bin ich darauf gestoßen
worden, dass das Buch von Helmut S. EXAKT dieselbe
inhaltliche Gliederung verwendet wie mein eigener
Text -- und zwar ohne dass ich Helmuts Text gekannt
oder irgendwie als Quelle verwendet hätte.

Du wirst mir also BITTE verzeihen, wenn meine
Auffassung von Autorität und Gruppenclowns mit der
Deinen nicht ganz deckungsgleich ist.

Und nur vorsorglich: Ich kann sehr gut damit leben,
jetzt auch in Deiner Gruppenclown-Schublade zu stecken.


> Dann kann der Weltuntergang nicht mehr fern sein. Ich
> pack dann mal die Koffer ...

Nun ja.

Ich glaube, es ist Max Planck gewesen, der gesagt hat,
der Fortschritt in der Wissenschaft vollziehe sich nicht
so, dass ihre Gegner nach und nach überzeugt würden,
sondern vielmehr würden die Gegner einfach aussterben,
und die Jugend würde von Vornherein mit der Wahrheit
vertraut gemacht.

von rbx (Gast)


Lesenswert?

Anton M. schrieb:
> Die viel entscheidendere Frage ist
> jedoch, welchen Aufwand der durchschnittliche Programmierinteressierte
> überhaupt treiben muss um zu diesem Verständnis zu gelangen.

Ich weiß noch, als das mit Basic losging, gingen ein paar Wochen und 
Monate ins Land bis die "Abstrakta" einigermaßen saßen. Viel war es ja 
nicht. Die Hürde waren nur noch komplexere Programme und coole 
Herausforderungen - sprich - das Motivationsszenario und Glück im 
Ausbildungsweg.
Auch noch eine Rolle spielt die Lerngeschwindigkeit. Man muss z.B. das 
Tempo von Uni-Onlinekursen nicht mitgehen. Wenn man aber am Ball bleibt, 
kommt man schnell vorwärts. Aber je schneller gelernt, desto schneller 
vergessen, d.h. auch  darauf muss man achten, dass das Gelernte nicht 
gleich wieder abhaut.
Im Studium habe ich noch gelernt, dass besonders schwierige, abstrakte 
Bücher für mich leichter verständlich werden, wenn ich auf Fernsehen und 
andere Medien verzichte.
Das plakative, Aufmerksamkeit heischende Schlagzeilenszenario der Medien 
stört die innere Strukturfindung sehr.
Das dauert eine Weile bis man das merkt, so 2-3 Wochen.

Wenn man am Ball bleibt, kann man für die erste Einstiegshürde 8 Wochen 
rechnen. Aber auch nur, wenn der Motivationsrahmen einigermaßen stimmt.
Ohne Motivation kein Lernen.
(das ist für Schlaganfallpatienten ein großes Problem, weil das 
Nervensystem (vermutlich)(auch) aus Schutzgründen Funktionen blockiert. 
D.h. die Krankenkassen lassen diese Patienten in "Selbsthilfegruppen" im 
Stich.) Das ist aber nur eine Nebenbemerkung.

Ohne Motivation kein Lernen!!

Programmieren ist auch immer Handwerk und als solches gilt das gleiche 
wie bei Musikinstrumenten:
Üben, üben, üben.
Die praktische Übung kann einem kein Buch abnehmen.
Den Aha-Effekt beim Problemlösen kann einem kein Buch abnehmen.

Früher gab es aber richtig gute Rätselbücher in Läden oder in 
Stadtbüchereien, die halfen weiterzukommen, heute dagegen..
(Bücherverbrennung 2.0)

von Dr. Sommer (Gast)


Lesenswert?

Au weia, man darf nicht schlafen gehen wenn man hier schreibt.

Egon: Du hast einen sehr unüblichen Lerntyp. Daher würde ich deine 
Vorgehensweise nicht pauschal jedem Anfänger vorschlagen. Ich könnte so 
nicht lernen. Und die allerwenigsten schreiben sich erstmal ein 
Repetitorium.

Objekte sind übrigens auch sehr wohl für C relevant. Der Linux Kernel 
z.B. ist in C größtenteils objektorientiert programmiert. Und C++ ist 
natürlich auch für uC relevant - wie schon wiederholt bewiesen wurde, 
kann man das da sehr gut benutzen. Tatsächlich sehe ich überhaupt keinen 
Grund C zu lernen. Warum nicht gleich C++? Sollte man doch irgendwann 
mal C brauchen, lässt man all das weg was C nicht hat (und fragt sich 
warum man sich mit so etwas eingeschränkten abgeben muss) und fügt die 3 
Details hinzu die C-exklusiv sind.

Die Frage ist jetzt aber - wie würde Egon C++ lernen? C++ ist in seiner 
Gesamtheit extrem komplex. Man braucht mindestens 5-10 Jahre um das 
alles zu verstehen. Wenn man das A-Z durcharbeitet, hat man nach 5 
Jahren dann sein erstes Hello World und hoffentlich nicht vergessen, was 
man ganz am Anfang gelernt hat! Natürlich sind all diese Details für die 
praktische Anwendung völlig irrelevant - man könnte innerhalb kürzerer 
Zeit die Dinge lernen, die man für "normale" Programme braucht. Das 
ginge aber nicht mit einem Schellong-artigen Buch.

Hast du unter den Hunderten Büchern wirklich nur K&R und Schellong 
gefunden? Da gab es kein besseres, welches sich an Programmierer richtet 
aber nicht erstmal ein Repetitorium erfordert?

von Percy N. (vox_bovi)


Lesenswert?

Dr. Sommer schrieb:

> Objekte sind übrigens auch sehr wohl für C relevant. Der Linux Kernel
> z.B. ist in C größtenteils objektorientiert programmiert.

Prächtig. Noch prächtiger finde ich allerdings, dass der Anfänger in C 
nicht gezwungen ist, gleich sein erstes HelloWorld mit Objekten zu 
überfrachten.

> Und C++ ist
> natürlich auch für uC relevant - wie schon wiederholt bewiesen wurde,
> kann man das da sehr gut benutzen.

Nun, es wutde ausdrücklich nach C gefragt. Als Zusatzinformation mag 
Deine Bemerkung angehen.

Tatsächlich sehe ich überhaupt keinen
> Grund C zu lernen.

Das ist dann vermutlich allgemeinverbindlich ...

> Warum nicht gleich C++? Sollte man doch irgendwann
> mal C brauchen, lässt man all das weg was C nicht hat (und fragt sich
> warum man sich mit so etwas eingeschränkten abgeben muss) und fügt die 3
> Details hinzu die C-exklusiv sind.
>

Wenn Du in der Kneipe ein Schankbier bestellst und der Kellner schenkt 
ein Vollbier aus, weil das ja sowieso besser ist  - bist Du dann 
zufrieden?

> Die Frage ist jetzt aber - wie würde Egon C++ lernen?

Warum? Erst einmal ist Philip dran!


> C++ ist in seiner
> Gesamtheit extrem komplex. Man braucht mindestens 5-10 Jahre um das
> alles zu verstehen. Wenn man das A-Z durcharbeitet, hat man nach 5
> Jahren dann sein erstes Hello World und hoffentlich nicht vergessen, was
> man ganz am Anfang gelernt hat! Natürlich sind all diese Details für die
> praktische Anwendung völlig irrelevant - man könnte innerhalb kürzerer
> Zeit die Dinge lernen, die man für "normale" Programme braucht. Das
> ginge aber nicht mit einem Schellong-artigen Buch.

Das berühmte C++ Kompendium?

> Hast du unter den Hunderten Büchern wirklich nur K&R und Schellong
> gefunden? Da gab es kein besseres, welches sich an Programmierer richtet
> aber nicht erstmal ein Repetitorium erfordert?

Für C++ oder für C?

von Dr. Sommer (Gast)


Lesenswert?

Percy N. schrieb:
> Prächtig. Noch prächtiger finde ich allerdings, dass der Anfänger in C
> nicht gezwungen ist, gleich sein erstes HelloWorld mit Objekten zu
> überfrachten.

Da ist gar nix überfrachtet. OOP ist eine sehr intuitive Auffassung der 
Welt. Wer direkt damit anfängt kann sich damit super orientieren.

Percy N. schrieb:
> Nun, es wutde ausdrücklich nach C gefragt.

W.S. hat aber Unfug über C++ geschrieben. Dem wollte ich entgegenwirken.

Percy N. schrieb:
> Wenn Du in der Kneipe ein Schankbier bestellst

Wenn ich Anfänger bin und die Vorteile nicht beurteilen kann, ist das 
doch sehr nett von ihm.

Percy N. schrieb:
> Das berühmte C++ Kompendium?

Hä? Es gibt gute Bücher über C++. z.B. die von Stroustrup. Die gehen 
auch nicht A-Z vor. "The C++ programming language" setzt z.B. Kenntnisse 
i n einer Sprache voraus, fängt also nicht bei Adam und Eva an, aber 
arbeitet sich von einfachen C++ Programmen an vor. Man muss es also 
nicht komplett durchlesen um damit arbeiten zu können - das würde auch 
ganz schön lange dauern, und am Ende hätte man vergessen was am Anfang 
stand.

Percy N. schrieb:
> Für C++ oder für C?

Bezog sich auf C. Gilt aber auch für andere Sprachen.

von Percy N. (vox_bovi)


Lesenswert?

Dr. Sommer schrieb:

> Da ist gar nix überfrachtet. OOP ist eine sehr intuitive Auffassung der
> Welt. Wer direkt damit anfängt kann sich damit super orientieren.
>
Gleichwohl ist es komplexer als ohne.

> Percy N. schrieb:
>> Nun, es wutde ausdrücklich nach C gefragt.
>
> W.S. hat aber Unfug über C++ geschrieben. Dem wollte ich entgegenwirken.
>
Das scheint eine größere Aufgabe zu werden ;-))

> Percy N. schrieb:
>> Wenn Du in der Kneipe ein Schankbier bestellst
>
> Wenn ich Anfänger bin und die Vorteile nicht beurteilen kann, ist das
> doch sehr nett von ihm.
>
Bitte sieh mir nach, dass ich diese Auffassung nicht teile. Wenn ich 
etwas bestelle, dann möchte ich genau das geliefert bekommen. Wenn ein 
Verkäufer mir ohne Nachfrage etwas anderes als das bestellte 
präsentiert, falte ich ihn zusammen und verlasse den Laden. Wenn er mir 
zunächst entgegen hält, Metabo sei aber viel besser als Haribo, dann 
gibt es auch Ärger. Falls er fragt, ob er auch etwas anderes andienen 
darf, ist alkes in bester Ordnung und der Bursche hat ein Lob verdient.

Dir steht es selbstverständlich frei, durch das Verschulden eines 
eigenmächtigen Kellners Deinen Führerschein einzubüßen.

> Percy N. schrieb:
>> Das berühmte C++ Kompendium?
>
> Hä? Es gibt gute Bücher über C++. z.B. die von Stroustrup. ...

Vergiss es ...

Btw: Wieso begründet die Möglichkeit, in C oo zu programmieren, wenn man 
es denn unbedingt will, die Relevanz von Objekten für das Erlernen von 
C? Wenn Du Fieber hast, legst Du Dich vermutlich ins Bett und schluckst 
ASS. Mit einem übelst verdorben Magen wirst Du vermutlich auch das Bett 
hüten. Also schluckst Du auch da ASS, auf nüchternen Magen? Gute 
Besserung!

: Bearbeitet durch User
von Dr. Sommer (Gast)


Lesenswert?

Percy N. schrieb:
> Gleichwohl ist es komplexer als ohne.

Da wär ich mir nicht so sicher. OOP-Sprachen (Java, C++, Python, ...) 
haben z.B. auch einfachere String-Verarbeitung. Das hilft einem Anfänger 
auch sehr. Ich würde einem Anfänger lieber OOP erklären als die 
Bedeutung von "char* argv []".

Percy N. schrieb:
> Bitte sieh mir nach, dass ich diese Auffassung nicht teile.

Man kann ja wohl zumindest vorschlagen, eine Alternative in Betracht 
zu ziehen.

Percy N. schrieb:
> falte ich ihn zusammen und verlasse den Laden.

Weil du also aufgrund von (vermutlich) Unwissen und mangelnder 
Überlegung (so sieht es beim TO aus) etwas bestimmtes haben willst, 
bestehst du felsenfest darauf das zu bekommen und stellst dich absolut 
beratungsresistent? Der Albtraum eines jeden Service-Mitarbeiters.

Percy N. schrieb:
> Btw: Wieso begründet die Möglichkeit, in C oo zu programmieren, wenn man
> es denn unbedingt will, die Relevanz von Objekten für das Erlernen von
> C?

Weil OOP auch die meisten C-Programme besser strukturiert. Da kann man 
sich gut dran halten.

von Christopher J. (christopher_j23)


Lesenswert?

Habe selber leider viel zu spät den K&R "entdeckt" weil ich dachte "der 
ist doch sooo alt". Ist aber meiner Meinung nach immer noch das Buch der 
Wahl, wenn man schon etwas Ahnung vom Programmieren hat (das ist leider 
Vorraussetzung) und wenn man eine kurze und knappe Einführung sucht, die 
trotzdem vollständig ist.

Wem der K&R zu kurz greift, dem empfehle ich "C Primer Plus" von Stephen 
Prata. Ein richtiger Schinken, voller Beispiele und Erklärungen, sowie 
auch Übungen. Es bleiben eigentlich keine Fragen offen. Wenn man nur ein 
einziges Buch über die Sprache C besitzen dürfte, dann würde ich 
definitiv dieses empfehlen.

von Marten Morten (Gast)


Lesenswert?

Walter T. schrieb:
> Offensichtlich ist es deutlich wichtiger, den blöden Anfängern klar zu
> machen, warum dieses oder jenes Buch schlecht ist, als zu erklären, was
> an bestimmten Büchern gut ist.

Dann mache ich das mal aus dem Kopf für den ANSI-K&R:

Es ist klar strukturiert, vom Einfachen zum Komplexen. Ausnahme, das 
klassische "Hello World" zum Einstieg, das dann systematisch abgehandelt 
wird.

Es setzt keine spezielle IDE voraus. Überhaupt, es konzentriert sich auf 
die Sprache, nicht auf das mechanische Antrainieren von Klickpfaden 
durch Tools wie IDEs, Editoren für Codemonkeys die klicken ohne 
Nachzudenken. So verschwendet es nicht die Zeit des Lesers damit ihm als 
Computerbenutzern zu erklären wie er seinen Computer einzuschalten hat 
oder wie er ein Programm installieren.

Allgemein, der Leser wird nicht für komplett verblödet gehalten, man 
gesteht ihm zu das er selbstständig Denken kann, sich alleine Anziehen 
kann und seine Hose nicht mit der Kneifzange zu macht.

Der Leser wird auch nicht verarscht mit irgendwelche Jubel-Lob wenn er 
irgendwas erfolgreich gemacht hat, als ob man ein Hund wäre "Fein 
gemacht! Ganz toll wie du das Stöckchen geholt hast".

Dem Leser wird keine tolle Karriere, keine goldene Zukunft mit viel Koks 
und leichten Mädchen in Silicon Valley versprochen, nur weil er C lernt. 
Auch gibt es keinen Bullshit wie "Teach Yourself C in 24 Hours" und 
keinen Trash-Talk über andere Programmiersprachen.

Nicht zuletzt weil so ein Blödsinn fehlt ist es kompakt. Es ist trotz 
der Kompaktheit unterhaltend und nicht langweilig.

Es ist nahezu zeitlos, trotz des Alters. Das wenige Zeit­ko­lo­rit stört 
nicht und trägt zur Unterhaltung bei.

Als Beispiele werden fast ausschließlich komplette (lauffähige) 
Mini-Programme oder wenigstens Funktionen, statt zusammenhanglose 
Codefragmente, verwendet. Der Leser wird von Anfang an animiert selber 
Mini-Programme zu schreiben oder wenigstens die gezeigten Programme 
auszuprobieren.

Neben dem Lehrbuch-Teil ist eine Sprachreferenz enthalten. Ebenso gibt 
es einen Blick in die wichtigsten Funktionen aus der Standardbibliothek. 
Nicht nur von außen, sondern auch was intern abläuft.

von Percy N. (vox_bovi)


Lesenswert?

Dr. Sommer schrieb:

> Percy N. schrieb:
>> Bitte sieh mir nach, dass ich diese Auffassung nicht teile.
>
> Man kann ja wohl zumindest vorschlagen, eine Alternative in Betracht
> zu ziehen.
>
Vorschlagen ja. Oktroyieren nein.

> Percy N. schrieb:
>> falte ich ihn zusammen und verlasse den Laden.
>
> Weil du also aufgrund von (vermutlich) Unwissen und mangelnder
> Überlegung (so sieht es beim TO aus) etwas bestimmtes haben willst,
> bestehst du felsenfest darauf das zu bekommen und stellst dich absolut
> beratungsresistent? Der Albtraum eines jeden Service-Mitarbeiters.
>
Wenn Du nicht des Willens oder nicht in der Lage bist, mehrere Sätze im 
Zusammenhang zu verstehen, brauchst Du noch lange nicht ausfallend zu 
werden. Das erwähnte Lob kam allerdings ohnehin nicht mehr in Frage.

> Percy N. schrieb:
>> Btw: Wieso begründet die Möglichkeit, in C oo zu programmieren, wenn man
>> es denn unbedingt will, die Relevanz von Objekten für das Erlernen von
>> C?
>
> Weil OOP auch die meisten C-Programme besser strukturiert. Da kann man
> sich gut dran halten.

Das las sich oben etwas anders.

von Dr. Sommer (Gast)


Lesenswert?

Wenn du die kurze Begründung schon als "Oktroyieren" siehst... Da ist 
wohl jemand auf dem C++-Auge überempfindlich.

von Percy N. (vox_bovi)


Lesenswert?

Dr. Sommer schrieb:
> Wenn du die kurze Begründung schon als "Oktroyieren" siehst... Da ist
> wohl jemand auf dem C++-Auge überempfindlich.

Aber nicht doch. Dein Disput mit Egon war so kurz nicht. Aber vielleicht 
schert nicht jeden sein Geschwätz von gestern.

von Nop (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Rufus Τ. F. schrieb:
>> Ich hab' das Gefühl, daß Du mit der "Lernbetty" von W.S. glücklich
>> werden könntest.
>
> Bei der krieg ich Ausschlag wenn ich den Programmierstil sehe. Die kann
> man als Negativbeispiel nutzen, wie man es nicht machen sollte...

Hier mal ein "Juwel" aus der Lernbetty:
1
if (!Focussed)
2
{ *P = 0;
3
  Tem = self->Members;
4
  while (Tem)
5
  { if (Tem->Flags & canFocus)
6
    { *P = Tem;
7
      goto der_erstbeste;
8
    }
9
    else Tem = Tem->danach;
10
  }
11
12
  isEditing = 0;  /* ohne Fokussierbaren gibt es nix zu editieren! */
13
  return;         /* und ohne Fokussierbaren gibt es auch sonst nichts zu tun! */
14
15
  der_erstbeste:
16
  Focussed = Tem;
17
}

Dieser ständige Mischmasch aus deutsch und englisch kenne ich sonst nur 
von Anfängern, aber das Gehacke mit dem goto ist dann schon echt grob. 
Und das sage ich als jemand, der goto zur Fehlerbehandlung (besonders 
der gestackten) durchaus befürwortet.

Auch "hübsch":
1
loop1:
2
  CgPixel_at(x,y,mode);
3
  if (x == B.X) return;
4
  x = x + xInc;
5
  D = D + M;
6
  if (D > HX)
7
   { y = y + yInc;
8
     D = D - c;
9
   }
10
  goto loop1;

Da hat offensichtlich jemand ein Problem, sich mal vernünftige 
Schleifenbedingungen zu überlegen. So ein Murks ist allenfalls gut, 
damit man testet, ob das Codereview was taugt und sowas durchfallen 
läßt.

Und dann noch das ganze Gewürge mit byte, word und dword, was so 
aussieht, als wenn ein Pascal-Programmierer sich seine Pascal-Typen in C 
zusammendefiniert hätte. Auch nicht zur Nachahmung empfohlen.

von Nop (Gast)


Lesenswert?

> Dieser ständige Mischmasch aus deutsch und englisch kenne ich

Dieser ständige Mischmasch aus deutsch und englisch - sowas kenne ich

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Um noch ein Buch in die Runde zu werfen:
Die deutschsprachige Dokumentation zu Turbo C 2.0 von Borland. Die war 
keine Übersetzung der englischen Dokumentation, sondern wurde von Arne 
Schäpers mehr oder weniger komplett neu geschrieben.

Das zusammen mit dem K&R (in zweiter Ausgabe) ist für den Anfang 
ausreichend gutes Werkzeug. Problem ist die Verfügbarkeit, ich hatte 
mein Exemplar vor jetzt 30 Jahren gekauft ...

von Axel S. (a-za-z0-9)


Lesenswert?

Egon D. schrieb:
> Axel S. schrieb:
>
>> Ich erinnere mich noch gut an Helmut Schellong und die
>> Diskussionen mit und über ihn. Das war damals™ noch im
>> Usenet (die Älteren erinnern sich?) und er galt als
>> Gruppenclown und Lachnummer.
>
> Das sagt mehr über Gruppendynamik als über Helmut S.

Nein.

> Und wenn ich eines im UseNet gelernt habe, dann ist es,
> dass das Argument -- und NUR das Argument -- zählt

Ja. Eben.

Die Beurteilung von H. Schellong haben wir damals ja nicht aus dem 
Kaffeesatz gelesen, sondern die ergab sich aus seinem Auftreten. Aus 
dem, was er gesagt und vor allem was er gefragt hat.

Damals war er in der Situation, in der unser TE heute ist - er wollte 
eine Programmiersprache lernen und hat sich an ein Forum gewandt, um 
Hilfe zu bekommen. Soweit alles ok. Allerdings hat er sich dann (milde 
ausgedrückt) sehr ungeschickt angestellt. Die einfachsten Dinge mußten 
ihm zigmal erklärt werden. Das hat viele Leute die Decke hochgetrieben 
und ihm seinen Ruf eingebracht.

Ich habe Details vergessen. Aber vielleicht findet man es noch in einem 
Archiv. War eine der de.comp.lang Gruppen. Mußmaßlich de.comp.lang.c.

>> Hat er es jetzt ernsthaft zur Authorität und
>> Respektsperson in Sachen C-Programmierung geschafft?
>
> Häh?!

Ja. Stell dir einfach vor, der dümmste Schüler aus deiner Schulklasse 
(zweimal sitzen geblieben) würde für den Physik-Nobelpreis nominiert. 
Das wäre ungefähr der gleiche Grad an Überraschung.

Aber wer weiß, vielleicht ist er ja ein Spätstarter oder war damals noch 
sehr jung (im Usenet weiß man nicht, wie alt ein Teilnehmer ist, nach 
einem gängigen Sprichwort könnte es sogar ein Hund sein). Ich kenne sein 
Buch nicht und die Chancen, daß ich es mal lese, sind gering. Ich kann C 
mittlerweile und habe wichtigeres zu Lesen.

von Marten Morten (Gast)


Lesenswert?

Nop schrieb:
> Hier mal ein "Juwel" aus der Lernbetty:

Das steht da ernsthaft? Und der Autor dieses Codes will uns in diesem 
Thread erklären das wir unfähig zu Denken sind?

Ich bin dann mal raus. "Muss los, Nasenbluten."

von Dr. Sommer (Gast)


Lesenswert?

Am Besten gefällt mir das:
1
#ifndef _STDTYPES_INCLUDED
2
#define _STDTYPES_INCLUDED
3
4
5
/************** Daten-Typen ********************/
6
7
#define  integer   short int
8
#define  word      unsigned short int
9
#define  byte      unsigned char
10
#define  dword     unsigned long
11
#define  qword     unsigned long long
12
#define  int64     long long
13
#define  bool      unsigned char
14
15
#define  TRUE      1
16
#define  true      1
17
#define  FALSE     0
18
#define  false     0
19
20
/* schlecht merkbare Kringels */
21
#define     MOD   %
22
#define     XOR   ^
23
#define     NOT   ~
24
#define     AND   &
25
#define     OR    |
26
27
28
29
#define POINT struct TPoint
30
struct TPoint
31
{ integer X, Y; };
32
33
#define RECT  struct TRect
34
struct TRect
35
{ integer  left,
36
           top,
37
     right,
38
     bottom;
39
};
40
41
42
/*  ---  */
43
#endif

Es fängt schon damit an dass die Include Guards verbotene Bezeichner 
sind (fangen mit Unterstrich an). Dann werden Makros statt typedef für 
Typaliase verwendet. Dann werden ziemlich skurrile Typnamen verwendet 
(warum nicht stdint.h?). Dann wird "true" definiert obwohl man einfach 
stdbool.h nehmen könnte. Dann werden Makros für Operation definiert 
obwohl man einfach "and", "or" usw. nutzen könnte. Seltsame 
Einrückungsstile ignorier ich mittlerweile sowieso.
In anderen Dateien immer "extern" an Funktionsdeklarationen, obwohl es 
absolut keine Wirkung hat.
Aber immer dran denken - W.S. ist der einzige Intellektuelle hier und so 
"Regeln" wie die sinnvolle Verwendung von "typedef" oder "and" schränken 
sein Genie unnötig ein.

Beitrag #5690149 wurde vom Autor gelöscht.
von Nop (Gast)


Lesenswert?

Marten Morten schrieb:

> Das steht da ernsthaft?

Jepp, siehe Beitrag "Re: Die Lernbetty: Die SwissBetty von Pollin als ARM-Evalboard" . Hier 
noch ein Leckerli:
1
Schleife:
2
  if (c=='.') { c=  *Pt++; dp_seen=1; }
3
  if (c<'0') goto Schlend;
4
  if (c>'9') goto Schlend;
5
  i = c - '0';
6
  R = R * 10.0 + i;
7
  if (dp_seen) T = T * 10.0;
8
  c = *Pt++;
9
  goto Schleife;
10
11
Schlend:

So ein Murks - sieht doch jeder, daß es Schlaaand hätte heißen müssen.

> Und der Autor dieses Codes will uns in diesem
> Thread erklären das wir unfähig zu Denken sind?

Frag Dich lieber, was herausgekommen, wenn ihn auch noch jemand auf die 
Existenz von setjmp/longjmp hingewiesen hätte. Damit kann man jede 
unnütze goto-Orgie wie einen Kindergeburtstag aussehen lassen.


Dr. Sommer schrieb:

> > /* schlecht merkbare Kringels */

LOL - Bester!

von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Egon: Du hast einen sehr unüblichen Lerntyp.

Ja, das ist sicherlich richtig.


> Daher würde ich deine Vorgehensweise nicht pauschal
> jedem Anfänger vorschlagen.

Um Himmels Willen -- nein. Natürlich nicht. Das
Allerwichtigste ist, dass jeder für sich selbst erkennt,
welcher Lerntyp er ist.
Einer der vernünftigsten Ratschläge hier im Thread war,
einfach in die Bibliothek zu gehen und verschiedene Bücher
durchzuprobieren. Mit welchen Stil man klarkommt, ist eine
sehr individuelle Sache, die sich schlecht erklären oder
von einer Person auf die andere übertragen lässt.

Ich bin in diese Diskussion auch nur eingestiegen, weil
das Schellong-Buch in Grund und Boden verrissen wurde,
was ich in dieser Form nicht angemessen fand.


> Objekte sind übrigens auch sehr wohl für C relevant.
> [...]

Ist das noch an mich adressiert?
Ich habe bisher absichtlich noch keine Stellung zu C++
genommen; ich wollte den Thread nicht noch weiter kapern.


> Die Frage ist jetzt aber - wie würde Egon C++ lernen?

Das ist eine sehr gute Frage. Tatsächlich habe ich kurz
mit dem Gedanken gespielt, gleich C++ statt erst C zu
lernen (auch, weil das vielfach so empfohlen wurde), ihn
dann aber bald verworfen: Ich hatte einfach das Gefühl,
dass dieser Brocken zu groß für mich ist. Der Spatz in
der Hand ist mir lieber als die Taube auf dem Dach.

Das ist aber ein weites Feld, was auch damit zusammenhängt,
dass das Konzept der OOP zwar gut ist, die Erklärungen aber
IMHO überwiegend bescheuert sind.


> Hast du unter den Hunderten Büchern wirklich nur K&R
> und Schellong gefunden?

Nee. Auf den Schellong bin ich ja erst in diesem Thread
aufmerksam gemacht worden. (Vielleicht besorge ich mir
tatsächlich mal die gedruckte Ausgabe.)

Der K&R war zufällig ohnehin schon da -- außerdem wurde
er als DER Klassiker vielfach empfohlen. Ich finde ihn
auch interessant -- aber ich lese ihn als historisches
Dokument. Er repräsentiert den Stand von vor 30 Jahren.

Wenn man irgend ein Detail über die Sprache verbindlich
wissen will, muss man sowieso in den Standard gucken...


> Da gab es kein besseres, welches  sich an Programmierer
> richtet aber nicht erstmal ein Repetitorium erfordert?

Ach, nee,... ich glaube, das kommt irgendwie falsch
'rüber.

Die Mühe, mich mit dem Stoff selbst auseinanderzusetzen,
nimmt mir letztlich niemand ab.
Mein Problem ist ja weniger, dass ich unsicher wäre, wie
ein bestimmtes Sprachelement wirkt -- mein Problem ist,
dass ich mich auf Schritt und Tritt frage: "Warum? WARUM?
WARUM NUR ist das dermaßen gehirntot festgelegt worden?"
Diese Fragen -- und die zugehörigen Antworten, so ich denn
welche finde -- tippe ich in den Computer. Das ist schon
alles.
Das ist im Moment mein Weg, mich mit dem Lernstoff vertraut
zu machen. Andere schreiben Dutzende seitenlange Programme,
ich schreibe nur ab und an mal einen Dreizeiler und arbeite
ansonsten an meinem Repetitorium.

Sicher könnte mir ein gutes Buch einen Teil der Mühe
abnehmen, aber bisher war der Leidensdruck noch nicht
groß genug, um ernsthaft auf die Suche zu gehen.

Außerdem gibt es da noch die Diskussionen auf µC.net als
Informationsquelle... :)

von Egon D. (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Dann werden ziemlich skurrile Typnamen verwendet

Skurril nur für den, der Pascal skurril findet.


> Dann wird "true" definiert obwohl man einfach
> stdbool.h nehmen könnte.

Bei ANSI-C?


> Dann werden Makros für Operation definiert obwohl
> man einfach "and", "or" usw. nutzen könnte.

Bei ANSI-C?


> Seltsame Einrückungsstile ignorier ich mittlerweile
> sowieso.

Soviel Kompromissbereitschaft muss auch sein. Ich bin
eigentlich auch nicht bereit, meinen Klammerungs- und
Einrückungsstil nur deshalb zu ändern, weil der Rest
der Welt noch nie von Tcl gehört hat...

von Dr. Sommer (Gast)


Lesenswert?

Egon D. schrieb:
> "Warum? WARUM?
> WARUM NUR ist das dermaßen gehirntot festgelegt worden?"

C ist halt so :-) Deswegen nutzt man das auch nur wenn es unbedingt sein 
muss. Leider hat es noch sehr viele Fans die das genau so gut finden 
(Torvalds & Konsorten). Ist wohl so eine Art Stockholmsyndrom.

Egon D. schrieb:
> Skurril nur für den, der Pascal skurril findet.
Zumindest mal sehr unüblich für C und C++. Die Namensgebung ist 
mindestens mal inkonsistent.

Egon D. schrieb:
> Bei ANSI-C?

Warum muss man unbedingt den C-Standard von 1989 benutzen? Seitdem sind 
viel Zeit und neue Standards ins Land gegangen. Die Prozessor (LPC2220) 
ist von 2004, man hätte also von Anfang an mal C99 nehmen können.

von Egon D. (Gast)


Lesenswert?

Axel S. schrieb:

> Egon D. schrieb:
>> Axel S. schrieb:
>>
>>> Ich erinnere mich noch gut an Helmut Schellong und die
>>> Diskussionen mit und über ihn. Das war damals™ noch im
>>> Usenet (die Älteren erinnern sich?) und er galt als
>>> Gruppenclown und Lachnummer.
>>
>> Das sagt mehr über Gruppendynamik als über Helmut S.
>
> Nein.

Du gestattest, dass ich bei meiner abweichenden Meinung
bleibe.


>> Und wenn ich eines im UseNet gelernt habe, dann ist es,
>> dass das Argument -- und NUR das Argument -- zählt
>
> Ja. Eben.
>
> Die Beurteilung von H. Schellong haben wir damals ja nicht
> aus dem Kaffeesatz gelesen, sondern die ergab sich aus
> seinem Auftreten.

Ja -- aber nicht nur.

Sie ergab sich auch aus eurem Urteil über sein Auftreten,
aus eurer (gemeinsamen) Reaktion und seiner Gegenreaktion.
Genau das ist das, was man Gruppendynamik nennt.

Du musst mir nix vom Pferd erzählen; ich war lange genug
im UseNet dabei (wenn auch nicht in *.lang.c), und ich
bin auch hier schon lange genug dabei.
Ich weiss auch, wie aggressiv Diskussionen zwischen Leuten
hochkochen können, die einzeln ganz normal und friedlich
sind. Erzähl' mir nix.

Dass jemand mit der Mehrheit mitgröhlt, ist kein Beleg
dafür, dass er Recht hat, und dass er als Außenseiter
ausgegrenzt wird, kein Beweis, dass er Unrecht hat.
(Umgekehrt natürlich auch nicht.)


> Damals war er in der Situation, in der unser TE heute
> ist - er wollte eine Programmiersprache lernen und hat
> sich an ein Forum gewandt, um Hilfe zu bekommen. Soweit
> alles ok. Allerdings hat er sich dann (milde ausgedrückt)
> sehr ungeschickt angestellt. Die einfachsten Dinge mußten
> ihm zigmal erklärt werden. Das hat viele Leute die Decke
> hochgetrieben und ihm seinen Ruf eingebracht.

Das glaube ich Dir alles aufs Wort -- aber ich ziehe wohl
lediglich eine andere Schlussfolgerung als Du. Ich lese
aus Deiner Schilderung nur heraus, dass er ein Außenseiter
war und hartnäckig einen (=seinen) Minderheitenstandpunkt
vertreten hat.
Ob dieser "richtig" oder "falsch" ist, ist bis hierhin
noch völlig offen.


>>> Hat er es jetzt ernsthaft zur Authorität und
>>> Respektsperson in Sachen C-Programmierung geschafft?
>>
>> Häh?!
>
> Ja. Stell dir einfach vor, der dümmste Schüler aus
> deiner Schulklasse (zweimal sitzen geblieben) würde
> für den Physik-Nobelpreis nominiert.

Naja... nimm mir's nicht übel, aber ich kann nix für
Deine Arroganz, die Dich offenbar verleitet hat,
Außenseitertum mit Dummheit zu verwechseln. (Und ich will
mich gar nicht über Dich erheben -- ich bin auch nicht
frei davon; mir ist das auch passiert.)


> Aber wer weiß, vielleicht ist er ja ein Spätstarter
> oder war damals noch sehr jung (im Usenet weiß man
> nicht, wie alt ein Teilnehmer ist, nach einem gängigen
> Sprichwort könnte es sogar ein Hund sein). Ich kenne
> sein Buch nicht und die Chancen, daß ich es mal lese,
> sind gering. Ich kann C mittlerweile und habe
> wichtigeres zu Lesen.

Nun ja... es mag ja eine der Todsünden sein, aber es
erfüllt mich mit tiefer, hämischer Freude, dass es
offensichtlich jemand, der im UseNet in der C-Gruppe
niedergebrüllt wurde, geschafft hat, ein C-Lehrbuch bei
Springer (!) zu veröffentlichen.

Ich werde mir sein Buch also sehr gründlich ansehen :)

von Rainer V. (a_zip)


Lesenswert?

Philipp L. schrieb:
> Jetzt habe ich wieder ein paar Ideen, möchte aber gern mit C beginnen.

Hi, ich habe jetzt nicht alles gelesen :-) aber ich mache es 
folgendermassen: suche dir ein Tutorial (vorzugsweise als PDF-Datei) und 
suche dir ein Forum dazu. Arbeite das Tutorial durch und stelle Fragen 
im Forum, wenn du Probleme hast. Dabei wirst du möglicherweise auf zwei 
Dinge stossen: es wird dir vielleicht gesagt, dass dein Tutorial "Mist" 
ist! Sofern diese Aussage für dich nachvollziehbar begründet ist, kannst 
du das vorgeschlagene Tutorial probieren. Zweitens wirst du vielleicht 
feststellen, dass dir im Forum nicht wirklich geholfen wird...aus 
verschiedensten Gründen...dann suchst du dir ein neues Forum! Die eigene 
Lernkurve ist dabei "fast" opimal. Besonders die Formulierung der Fragen 
fürs Forum ist eine exellente Übung, um ein Problem wirklich zu 
verstehen. Das klappt nach einigen Versuchen immer besser!
Gutes Gelingen, Rainer

von Dubslav von Stechlin (Gast)


Lesenswert?

Egon D. schrieb:

> Naja... nimm mir's nicht übel, aber ich kann nix für
> Deine Arroganz, die Dich offenbar verleitet hat,
> Außenseitertum mit Dummheit zu verwechseln. (Und ich will
> mich gar nicht über Dich erheben -- ich bin auch nicht
> frei davon; mir ist das auch passiert.)


Such doch einfach mal hier im Forum nach Beiträgen von diesem Axel S.
Immer der gleiche Stil, immer die gleiche Arroganz Anderen gegenüber.

von Egon D. (Gast)


Lesenswert?

Dubslav von Stechlin schrieb:
> Egon D. schrieb:
>
>> Naja... nimm mir's nicht übel, aber ich kann nix für
>> Deine Arroganz, die Dich offenbar verleitet hat,
>> Außenseitertum mit Dummheit zu verwechseln. (Und ich will
>> mich gar nicht über Dich erheben -- ich bin auch nicht
>> frei davon; mir ist das auch passiert.)
>
> Such doch einfach mal hier im Forum nach Beiträgen von
> diesem Axel S. Immer der gleiche Stil, immer die gleiche
> Arroganz Anderen gegenüber.

Nicht immer nur den Teil lesen, der einem gefällt. Da
steht noch ein Nachsatz in Klammern.

"Wer ohne Sünde ist, der werfe den ersten Stein."

von Yalu X. (yalu) (Moderator)


Lesenswert?

Nop schrieb:
> Hier mal ein "Juwel" aus der Lernbetty:
> ...
> Auch "hübsch":
> ...


Dr. Sommer schrieb:
> Am Besten gefällt mir das:
> ...

Nop schrieb:
> noch ein Leckerli:
> ...


Jetzt verstehe ich endlich, warum W.S. ein so engagierter C-Gegner
ist. Wann man in C tatsächlich nur in diesem Stil programmieren
könnte, würde ich C ebenfalls entschieden ablehnen und auf Pascal
umschwenken ;-)

Zurück zum Thema:

Hat sich eigentlich schon einmal jemand das Buch "C Programming: A
Modern Approach" von K. N. King angeschaut? Es deckt C99 ab, wird in
englischsprachigen Foren oft als umfassendes Werk für C-Einsteiger
vorgeschlagen und wird auch auf Amazon recht gut bewertet.

Es ist mit 66,23€ nicht ganz billig und hat mit 832 Seiten eher den
Umfang eines C++-Buchs, was für meinen Geschmack viel zu viel ist¹.

Trotzdem scheint das Buch von King weniger kritisiert zu werden als
andere C99- oder C11-Bücher. Vielleicht hat es ja das Zeug dazu, sich
sich zum Standardwerk für C99 zu entwickeln.

——————————————
¹) Zum Vergleich: K&R (2nd edition) benötigt für C89 nur 272 Seiten,
   hochgerechnet auf C99 oder C11 wären das maximal ca. 320 Seiten.

von Nico W. (nico_w)


Lesenswert?

Ich finde dieses hier noch recht interessant. Habe bisher leider noch 
nicht die Zeit gefunden darin länger als ein paar Stunden zu lesen.
http://icube-icps.unistra.fr/index.php/File:ModernC.pdf

Und für etwas später vielleicht noch ein paar "Patterns in C".
https://stackoverflow.com/a/9125140/6621062

von Percy N. (vox_bovi)


Lesenswert?

Rufus Τ. F. schrieb:
> Um noch ein Buch in die Runde zu werfen:
[...]
>
> Das zusammen mit dem K&R (in zweiter Ausgabe) ist für den Anfang
> ausreichend gutes Werkzeug. Problem ist die Verfügbarkeit, ich hatte
> mein Exemplar vor jetzt 30 Jahren gekauft ...

Zumindest K&R ist auf pdfdrive zu haben, ebenso Stroustrup. Schäpers 
wird wohl schwieriger...

von Walter T. (nicolas)


Lesenswert?

Nico W. schrieb:
> Ich finde dieses hier noch recht interessant. Habe bisher leider noch
> nicht die Zeit gefunden darin länger als ein paar Stunden zu lesen.

Das scheint das dedizierte Schicksal dieses Buches zu sein: Es sieht auf 
den ersten Blick gut aus. Es ist kostenlos. Also speichert man es 
irgendwo auf der Festplatte unter 
"G:/vielleicht_spaeter_mal_lesen/ModernC.pdf".

Ob es schon jemand wirklich gelesen hat?


Ein weiteres Buch, das auf den ersten Blick gut aussieht und im Netz als 
PDF zu finden ist ist "C Interfaces and Implementations: Techniques for 
Creating Reusable Software, David R. Hanson, 1997". Das Buch habe ich 
gelesen, aber es ist verschwendete Zeit. Es erklärt nicht die 
Prinzipien, nach denen man Interfaces entwirkt, sondern stellt nur die 
Softwarestruktur, die der Autor verwendet, vor.

: Bearbeitet durch User
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.