Forum: PC-Programmierung Einschätzung zu C-Lehr-Seite


von Dennis S. (eltio)


Lesenswert?

Hallo zusammen,

da "C von A bis Z" von Jürgen Wolf völlig verpönt ist und das KR-Buch 
meines Erachtens einfach nicht mehr Up-To-Date ist, suche ich oft nach 
neuen Quellen für die Fortbildung in C.

Dabei bin ich auf Seite [1] gestoßen, die eine frühe Online-Version 
eines C-Buchs darstellt. Frage: kennt jemand von euch diese Seite? Was 
ist euer erster spontaner Eindruck von der Qualität mit folgenden 
Kriterien:

- Qualität des Quellcodes
- didaktischer Aufbau
- Auswahl der Themen
- optische Präsentation

Gruß
Dennis

[1]: http://c.learncodethehardway.org

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dennis S. schrieb:
> das KR-Buch meines Erachtens einfach nicht mehr Up-To-Date ist

Abgesehen davon, daß C99 nicht behandelt wird, was bitte spricht 
dagegen?

Ansonsten ist das verlinkte "Buch" ein Tutorial, und kein Buch, das C 
beschreibt. Da sehe ich einen sehr deutlichen Unterschied.

Obendrein ist das Tutorial nur unter unixoiden Betriebssystemen 
verwendbar:
1
For Windows users I'll show you how to get a basic Ubuntu Linux 
2
system up and running in a virtual machine so that you can still
3
do all of my exercises, but avoid all the painful Windows
4
installation problems.
5
6
... have to figure this one out.


Das sind reichlich eng angeschnallte Scheuklappen.

: Bearbeitet durch User
von Dennis S. (eltio)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Abgesehen davon, daß C99 nicht behandelt wird, was bitte spricht
> dagegen?
Kannst du das genauer erläutern? K&R2 kam 1990 raus, dazwischen liegt 
(grob) C95, C99 und C11. An sich ist es doch nicht schlecht gleich mit 
modernen Konzepten in Berührung zu kommen? Oder sind neue Entwicklungen 
so unwichtig?

> Ansonsten ist das verlinkte "Buch" ein Tutorial, und kein Buch, das C
> beschreibt. Da sehe ich einen sehr deutlichen Unterschied.
Da stimme ich dir zu, auch wenn ich das pauschal nicht nachteilig sehe, 
weil die Kapitel aufeinander aufzubauen scheinen.

> Obendrein ist das Tutorial nur unter unixoiden Betriebssystemen
> verwendbar:
>
>
1
> For Windows users I'll show you how to get a basic Ubuntu Linux
2
> system up and running in a virtual machine so that you can still
3
> do all of my exercises, but avoid all the painful Windows
4
> installation problems.
5
> 
6
> ... have to figure this one out.
7
>
>
>
> Das sind reichlich eng angeschnallte Scheuklappen.

Hmm.. da steht aber nicht "keiner dieser C-Beispiele ist unter Windows 
lauffähig".

Versteh mich nicht falsch: ich finde es gut, dass du dich hier an der 
Diskussion beteiligst und ich bin mir auch sicher, dass du fachlich 
ausgezeichnete Kenntnisse hast. Dennoch würde ich mir hier etwas mehr 
"Substanz" wünschen. Mir geht es nicht darum die K&R-Fans zu bekehren 
(funktioniert eh nicht) sondern in erster Linie eine sinnvolle 
Alternative zu evaluieren. Wichtig ist hier mMn in erster Linie die 
Qualität des Codes.

Sprich: wenn ein Einsteiger das Programmieren mit dieser Seite lernen 
würde, wird er dann für den Rest des Lebens unglücklich sein!? ;-)

Gruß Dennis

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dennis S. schrieb:
> K&R2 kam 1990 raus, dazwischen liegt
> (grob) C95, C99 und C11. An sich ist es doch nicht schlecht gleich mit
> modernen Konzepten in Berührung zu kommen? Oder sind neue Entwicklungen
> so unwichtig?

Nun, es gibt nach wie vor Compiler, die nichts neueres als C90 
unterstützen. Das betrifft insbesondere kommerzielle Compiler.
Und daß das "Tuotorial" hier in irgendeiner Weise auf "moderne Konzepte" 
eingeht, kann ich beim besten Willen nicht erkennen. Ja, stdint.h wird 
erwähnt, aber das war es dann auch schon.


Dennis S. schrieb:
> Da stimme ich dir zu, auch wenn ich das pauschal nicht nachteilig sehe,
> weil die Kapitel aufeinander aufzubauen scheinen.

Das tun sie zwar, aber erklären sie etwas? In 
http://c.learncodethehardway.org/book/ex3.html wird munter mit printf 
hantiert, ohne daß irgendwo erwähnt wird, was Datentypen sind.

Die kommen erst einige "Kapitel" später, und 
http://c.learncodethehardway.org/book/ex6.html halte ich für sehr, sehr 
dürftig. Jemand, der keine Ahnung davon hat, was Variablen und 
Datentypen sind, kann hier zwar herumspielen, aber Verständnis, was 
das ganze ist, wozu es da ist, lernt man da nicht.

Auch das hier http://c.learncodethehardway.org/book/ex21.html ist sehr 
fragwürdig.



> Hmm.. da steht aber nicht "keiner dieser C-Beispiele ist unter Windows
> lauffähig".

Kein einziges der Beispiele ist mit der gelieferten Anleitung unter 
Windows zum Laufen zu bekommen. Da muss entweder mit cygwin ein 
kompletter Linux-Emulations-Layer verwendet werden, oder, wie der Autor 
vorschlägt, gleich mit einem Linux in einer virtuellen Maschine 
gearbeitet werden.
Und durch die Verwendung von Sprachfeatures, die nach wie vor von vielen 
Compilern nicht unterstützt werden, werden die Nutzer dieser Compiler 
ausgeschlossen.
(Wie z.B. hier: http://c.learncodethehardway.org/book/ex24.html)


Ein gutes C-Buch konzentriert sich auf die Sprache, nicht auf die 
Nutzung eines spezifischen Compilers unter einem spezifischen 
Betriebssystem.

Dieses Tutorial ist die Linux-Variante der etlichen 
"Ich-klicke-mich-durch-VC++(irgendeine-Version)-durch"-Bücher. Weniger 
Screenshots, aber auch kein Verständnis.

von dadada (Gast)


Lesenswert?

Es ist die Frage, was Du machen willst. Was nützt es Dir einen neuen 
Standard zu lernen, und dann zu merken, dass Dein Compiler den nicht so 
richtig unterstützt.

Siehe auch
http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/
http://blog.smartbear.com/codereviewer/c11-a-new-c-standard-aiming-at-safer-programming/

D.h. es kommt wirklich darauf an, was Du machen willst. Es ist nicht 
verkehrt den minimal-Standard (K&R) sehr gut zu kennen, um sich dann 
später die weiteren Möglichkeiten anzuschauen, um dann vor der 
jeweiligen Plattform vor der man Sitzt entsprechend Abstriche machen zu 
können.

von Dennis S. (eltio)


Lesenswert?

Danke für eure Einschätzung.. ich persönlich werde mir das Ganze 
trotzdem genauer ansehen. Ich finde den Ansatz "Ausprobieren", 
"Verändern", "Verstehen" ganz gut. Auch, das Tools wie "Valgrind" und 
"GDB" eingeführt werden finde ich sinnvoll.


Rufus Τ. Firefly schrieb:
> Jemand, der keine Ahnung davon hat, was Variablen und
> Datentypen sind, kann hier zwar herumspielen, aber Verständnis, was
> das ganze ist, wozu es da ist, lernt man da nicht.
Naja, wer - wie empfohlen - bereits eine Programmiersprache beherrscht 
und dann noch keine Ahnung hat was das ist, hat auch was falsch gemacht 
oder?

Mal sehen wie die Seite aussieht wenn sie aus der Alpha-Version raus 
ist..

Gruß Dennis

von Karl H. (kbuchegg)


Lesenswert?

Dennis S. schrieb:

> Mal sehen wie die Seite aussieht wenn sie aus der Alpha-Version raus
> ist..


Ich wollte mich da eigentlich nicht wirklich einmischen, aber ich hoffe 
dann doch, dass sich da noch viel tut bzw. im Hintergrund schon getan 
hat. Das Inhaltsverzeichnis dieses Tutorials liest sich ja nicht 
schlecht, aber wenn ich mir die einzelnen Kapitel ansehe, dann sind 
eigentlich die meisten Kapitel schon sehr dürftig abgehandelt.
Eine Bildschirmseite Erklärung, dann ein längerer Programmtext. Soll 
sich der Leser die Details aus dem Programmtext herausfischen?

> Kannst du das genauer erläutern? K&R2 kam 1990 raus, dazwischen
> liegt (grob) C95, C99 und C11. An sich ist es doch nicht schlecht
> gleich mit modernen Konzepten in Berührung zu kommen?

Welche modernen Konzepte meinst du, die C99 (oder C11) so grundlegend 
von C90 unterscheiden?

> Oder sind neue Entwicklungen so unwichtig?

Keineswegs.
Ich sehe das so. Wenn jemand einen wirklich soliden Grundstock in C90 
hat, dann gibt es für ihn in C99 oder C11 nicht mehr allzuviel, was ein 
radikales Umdenken erfordern würde. C11 funktioniert zu mindestens 95% 
genau gleich wie C90 und die Basics ... sind nach wie vor genau 
dieselben.
Gut, ok. die Neuerungen sind im K&R2 natürlich nicht drinnen, aber wer 
den K&R2 beherrscht, kann mehr als die meisten, die sich durch derartige 
Tutorien durchgearbeitet haben.

Nur als Beispiel:
http://c.learncodethehardway.org/book/ex9.html
Was? Das ist alles was dem Autor zum Thema C-style Strings einfällt? Das 
kann doch nicht alles gewesen sein. Da ist ja der String-Teil hier in 
der FAQ umfangreicher und der ist schon auf das Aller-Aller-Notwendigste 
abgespeckt.

: Bearbeitet durch User
von Quak (Gast)


Lesenswert?

Jedes Mal, wenn ich den K&R in die Hand nehme, denke ich mir: Dieses 
alte Buch kann unmoeglich noch die Referenz in Sachen C sein. Und in der 
Tat ist es recht angestaubt - aber ein wuerdiger Nachfolger ist mir noch 
nicht in die Finger gekommen. Es gibt dickere Buecher, umfangreichere 
Buecher - aber ich kenne keines, das so gut strukturiert und trotz 
seiner Kompaktheit auch mit Tiefgang alles Wichtige behandelt.

von Stefan Salewski (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Ich wollte mich da eigentlich nicht wirklich einmischen,

Ich eigentlich auch nicht -- aber sind die C Wikibooks denn nicht recht 
gut?

 http://en.wikibooks.org/wiki/C_Programming

http://de.wikibooks.org/wiki/C-Programmierung

Ich dachte eigentlich C wäre damit erschlagen.
Für C++ wüsste ich nichts wirklich vollständiges freies aktuelles -- 
Thinking in C++ von Bruce Eckel ist ja schon etwas angestaubt, aber ich 
habe es auch auf Papier und werde es wohl noch mal lesen...

von Karl H. (kbuchegg)


Lesenswert?

Stefan Salewski schrieb:

> Ich eigentlich auch nicht -- aber sind die C Wikibooks denn nicht recht
> gut?

Gleich vorweg: Ich hab da jetzt nur schnell drübergeschaut und einzelne 
Kapitel überflogen.

>
>  http://en.wikibooks.org/wiki/C_Programming

Das macht eigentlich einen recht guten Eindruck

>
> http://de.wikibooks.org/wiki/C-Programmierung

Ich dachte erst, das wäre eine deutsche Übersetzung vom ersten Link. Bei 
genauerem Hinsehen ist dem aber nicht so. Das englischsprachige Wiki ist 
definitiv besser.

> Ich dachte eigentlich C wäre damit erschlagen.

Ja, sieht gut aus.

> Für C++ wüsste ich nichts wirklich vollständiges freies aktuelles --
> Thinking in C++ von Bruce Eckel ist ja schon etwas angestaubt, aber ich
> habe es auch auf Papier und werde es wohl noch mal lesen...

Ich out mich mal als Oldtimer. Ich hab generell die Papierversion lieber 
als eine Online-Version. Das Buch kann die ganze Zeit neben dem Monitor 
liegen, Postit's reingeklebt werden, mit Bleistift Anmerkungen gemacht 
werden. Ganz gerne hab ich dann auch zwischen den Seiten Ausdrucke von 
Programmen eingelegt, welche irgendwelche Besonderheiten zeigen, die im 
Buch vielleicht nur angesprochen werden, Alternativen. etc. etc.
Kurz gesagt: Ich bin mit Online-Büchern nie richtig warm geworden. 
Allerdings bin ich auch Old-school mit Büchern aufgewachsen.

von Sven P. (Gast)


Lesenswert?

Ich oute mich dann auch mal als Oldtimer...

Nein ernsthaft, ich empfehle dir unbedingt, den K&R zu lesen. Und zwar 
aus vielen Gründen: Zunächst kann man den tatsächlich lesen. Es ist ein 
(wirklich angenehm) lesbarer, zusammenhängender Text und kein 
Nachschlagewerk. Die aktuelle deutsche Übersetzung ist m.M.n. ganz 
hervorragend gelungen. Beispielsweise kommt der Übersetzer mit 
erstaunlich wenigen Lehnwörtern aus; stattdessen werden deutsche 
Fachbegriffe eingeführt und dann konsequent verwendet (das stiftet 
nämlich keine Verwirrung). Es liest sich also fast ganz ohne Denglisch.
Dann wurde das Buch von den Erfindern dieser Programmiersprache (...) 
geschrieben und zwar zu einer Zeit, als die Sprache selbst auch noch 
nicht in aller Munde war. Es liest sich so, als ob jemand neben dir 
steht und dir etwas ganz neues vorstellen und erklären möchte. Beim 
Lesen bekommt man daher auch etwas Gefühl für die Programmiersprache, 
das halte ich für sehr wichtig. Man erfährt, warum etwas gerade so ist, 
wie es eben ist.

Wie du anschließend den Schritt zu C99 und so weiter machst, dafür gibts 
viele Möglichkeiten. Aber es hilft in jedem Fall, C zu begreifen.

Ein schönes Werk als Ergänzung wäre dann z.B. 'C in a nutshell' 
(O'Reilly).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sven P. schrieb:
> Die aktuelle deutsche Übersetzung ist m.M.n. ganz
> hervorragend gelungen.

Nur für Antiquare interessant:
Die Übersetzung der ersten Ausgabe, also die, die das klassische K&R-C 
vor C89 beschreibt, die ist hingegen grauenerregend.

von Reinhard Kern (Gast)


Lesenswert?

Dennis S. schrieb:
> wenn ein Einsteiger das Programmieren mit dieser Seite lernen
> würde, wird er dann für den Rest des Lebens unglücklich sein!? ;-)

Wessen Glück DAVON abhängt, der sollte den Beruf wechseln oder sich 
gleich erschiessen.

Gruss Reinhard

von Seano L. (Gast)


Lesenswert?

Stefan Salewski schrieb:
> Karl Heinz Buchegger schrieb:
>> Ich wollte mich da eigentlich nicht wirklich einmischen,
>
> Ich eigentlich auch nicht -- aber sind die C Wikibooks denn nicht recht
> gut?
> http://de.wikibooks.org/wiki/C-Programmierung
> Ich dachte eigentlich C wäre damit erschlagen.
Da fehlt ja die Hälfte.

> Für C++ wüsste ich nichts wirklich vollständiges freies aktuelles --
> Thinking in C++ von Bruce Eckel ist ja schon etwas angestaubt, aber ich
> habe es auch auf Papier und werde es wohl noch mal lesen...
Das Buch ist grauenhaft, von jemandem geschrieben der nur die 
Sprachfeatures runterleiert und keine Ahnnung von der Praxis hat, der 
andere Guru mit der grottigen 70er Frisur dessen Name mit gerade nicht 
einfällt, gibt das sogar noch offen zu. Der macht ausser den Standard 
auswendig zu lernen und Bücher darüber zu schreiben/Vorträge zu halten 
nichts anderes, der hat das ganze Zeug nie in der Praxis benutzt, das 
ist doch lächerlich.

Diese Zwangsneurose speziell unter deutschen Entwicklern sich penibel an 
den Standard einer Sprache zu orientieren ist eine typisch deutsche 
Beamtenmacke. In der Praxis hat man es immer mit einem konkreten 
Compiler zu tun der ist mehr oder weniger Standardkonform, an dem muss 
man sich orientieren, da nützt mir der Standard nix, wenn der Compiler 
sich nicht daran hält. Noch lustiger wird es wenn man auf einen anderen 
Compiler auch noch auf einem anderen System umsteigt der hat dann wieder 
andere Lücken was den Standard betrifft von noch ganz anderen Problemen 
wie Systemaufrufen,... Diese Standards sind eine Richtlinie für 
Compilerbauer, für Entwickler ist das verlorene Zeit bzw. vergebene Mühe 
sich penibel daran zu halten in der Hoffnung damit wenig Probleme zu 
haben. Da ist eher das Gegenteil der Fall, weil eben die meisten 
Compiler nicht 100% Standardkonform sind, ok vielleicht bei so 
Primitivsprachen wie C, da besteht ja eh der halbe Standard aus "not 
defined", das zeigt doch schon wie butterweich diese Standards sind, in 
C++ ist es ähnlich, da lässt man bewusst vieles offen, aber viele 
Entwickler die später mit dem Compiler arbeiten raffen nicht warum das 
so ist und der Standard deshalb kein Zwangskorsett ist und dass Code 
auch noch automatisch besser und portabler (LOL) macht. Lerne die Macken 
deiner Toolchain kennen (Compiler, Linker,..) damit wirst du dich mehr 
rumschlagen müssen als über Standardkonformität, das ist als Anfänger 
völlige Nebensache.

An den Ursprungsposter: Nimm irgendein Buch, das "deine" Platform und 
Compiler behandelt die du später nutzt, das arbeitest du durch und wenn 
noch Lücken offen sind nimmst du das nächste Buch oder Tut. das kann 
dann auch allgemein gehalten sein oder für eine andere 
Platform/Compiler, meist hat man dann nur noch Detailfragen zu 
bestimmten Dingen, die das erste Buch nur streifte oder ganz weglies. 
Bücher über C für Microcontroller setzen andere Schwerpunkte als 
C-Bücher für Systemprogrammierung, also nicht verrückt machen lassen, 
von dem Oberlehrergelaber hier.
Mach dir keinen Kopf über Standards, setz dich einfach hin und schreib 
fleissig Programme, mit C kannst du da nicht viel falsch machen von dem 
butterweichen "Standard" abzuweichen und wenn ist es auch erst mal egal. 
Gute Programme entstehen durch andere Dinge als sich penibel an 
ISO-Standards zu halten.

von Salewski, Stefan (Gast)


Lesenswert?

Schwen Gel schrieb:
>> Ich eigentlich auch nicht -- aber sind die C Wikibooks denn nicht recht
>> gut?
>> http://de.wikibooks.org/wiki/C-Programmierung
>> Ich dachte eigentlich C wäre damit erschlagen.
> Da fehlt ja die Hälfte.
>
Mag sein, dass noch etwas fehlt. Soweit ich mich errinnere hatte ich mir 
auch mehr die englische Version angesehen -- wer sich auskennt und 
meint, dass etwas fehlt kann ja Ergänzungen schreiben.

>> Für C++ wüsste ich nichts wirklich vollständiges freies aktuelles --
>> Thinking in C++ von Bruce Eckel ist ja schon etwas angestaubt, aber ich
>> habe es auch auf Papier und werde es wohl noch mal lesen...
> Das Buch ist grauenhaft,

Nun, die letzte Auflage ist von 2000, damals hatte das Buch recht gute 
Bewertungen. Ich hatte es gekauft, da es auch als PDF frei verfügbar 
ist, das finde ich schon sehr löblich. Persönlich gefällt es mir nicht 
so ganz, ich hatte vor 6 Jahren die ersten 200 Seiten gelesen, dann aber 
unterbrochen, da mir C++ eh nicht wirklich gefällt und ich zum Glück C++ 
auch nicht benötigt habe -- mir einer Ausnahme, momentan nutze ich von 
Ruby aus einige Funktionen von CGAL und Boost, und musste die Binddings 
selber schreiben.

Das Buch ist sicher mehr ein Anfängerbuch, das ist klar. Die ersten 100 
Seiten haben mich sehr gelangweilt, da geht es allgemein um 
objektorientierte Programmierung, das kennt man ja eh. Templates kommen 
erst ganz hinten, mit denen kämpfe ich bei Boost und CGAL. Na ja, ich 
werde es nochmal zu ende lesen. Den Rest Deines Postings habe ich jetzt 
nicht mehr gelesen, ich hatte den Eindruck da kommt nicht mehr viel 
produktives.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Dennis S. schrieb:
> - Qualität des Quellcodes

Leider ist sehr viel Spaghetti-Code vorhanden: Keine Kommentare, keine 
Verbreitetet Coding-Rules.

Nur beim Überfliegen gesehen: int = 32 Bit ist schon mal ein 
Killer-Kriterium, es kann ebenso 16 oder 64 Bit groß sein oder sogar 
128, auch wenn ich keine Implementation kenne die 128 verwendet.

> - didaktischer Aufbau
> - Auswahl der Themen

Auf Dinge wie Dinge wie "Duff's Device" lann man locker verzichten, man 
muß nicht die komplette Vorhölle von C durchwandern, um es zu lernen.

"Awesome Debug Macros" ist m.E. ebenfalls übel und zeigt alles andere 
als gute Coding-Rules (Makro-Wahn, goto aus Makros heraus, etc.)

> - optische Präsentation

Fehlende Coding-Rules machen sich unangenehm bemerkbar, etwa bei sehr 
langen Zeilen, die aus dem Design rausschießen.

Für meinen Geschmack ist die Source-Formatierung sehr unruhig.  Eine 
rein farbliche Unterlegung der Quelle ist m.E. besser und 
ermüdungsfreier lesbar als alldauern den Schriftschitt zu wechseln 
(Makros, Kommentare, Klammern, ...)

An vielen Stellen wird sich auf Zeilen der Quelle bezogen, ohne daß die 
Quellzeilen nueriert sind.  Jedenfalls lernt man zählen beim Lesen :-P

> [1]: http://c.learncodethehardway.org

Insgesamt ist das, was ich gesehen habe, nicht dazu angetan es weiter zu 
lesen oder jemand zu empfehlen, der gerne C lernen möchte.

von Rolf Magnus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Und durch die Verwendung von Sprachfeatures, die nach wie vor von vielen
> Compilern nicht unterstützt werden, werden die Nutzer dieser Compiler
> ausgeschlossen.
> (Wie z.B. hier: http://c.learncodethehardway.org/book/ex24.html)

Das wäre mir ehrlich gesagt aber auch egal. Es ist ja nicht so, daß 
diese Features erst seit gestern existieren. Vielmehr sind sie seit fast 
15 Jahren eigentlich Pflicht für jeden konformen C-Compiler. Bei den 
meisten Features war es zusätzlich schon Jahre davor bekannt, daß sie 
Teil von C werden sollten. Es gab also schon genug Vorlauf, um bereits 
1999 einen
zu C99 konformen Compiler rauszubringen. Was kann das Tutorial dafür, 
wenn Microsoft das bis heute nicht geschafft hat?

> Ein gutes C-Buch konzentriert sich auf die Sprache, nicht auf die
> Nutzung eines spezifischen Compilers unter einem spezifischen
> Betriebssystem.

Das dürfte außer unter Windows eigentlich unter fast jedem halbwegs 
aktuellen Betriebssystem funktionieren. Und es ist auch nicht nur für 
einen spezifischen Compiler gemacht. cc ist unter Unix-artigen Systemen 
traditionell der Link auf den default-Compiler des Systems. Das muß 
nicht zwingend gcc sein.

von Dennis S. (eltio)


Lesenswert?

@Johann: Danke für deine interessante Einschätzung! Ich denke dann kann 
ich mir das Durcharbeiten dieser Seite sparen. ;-)

Gruß
Dennis

von Udo S. (urschmitt)


Lesenswert?

Schwen Gel schrieb:
> Diese Zwangsneurose speziell unter deutschen Entwicklern sich penibel an
> den Standard einer Sprache zu orientieren ist eine typisch deutsche
> Beamtenmacke. In der Praxis hat man es immer mit einem konkreten
> Compiler zu tun der ist mehr oder weniger Standardkonform, an dem muss
> man sich orientieren, da nützt mir der Standard nix, wenn der Compiler
> sich nicht daran hält.

Etwas kurzsichtig gedacht. Es gibt ein Leben ausserhalb deines 
Lieblingsbetriebssystems / Compilers.
Unser Produkt hier musste auf Windows, OS/2, Linux, HP-UX, Sun, Vax, 
IBM-Z/OS, AS400 und Siemens BS2000 compilierbar und Lauffähig sein.
Inzwischen istdie Plattformvielfalt zum Glück etwas geschrumpft.
Aber da lernt man Standards zu schätzen und Compiler zu verfluchen die 
sich nicht daran halten!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Das wäre mir ehrlich gesagt aber auch egal. Es ist ja nicht so, daß
> diese Features erst seit gestern existieren. Vielmehr sind sie seit fast
> 15 Jahren eigentlich Pflicht für jeden konformen C-Compiler.

Der Verzicht auf diese Features aber ist kein Beinbruch, insbesondere 
sehe ich bei diesem Tutorial hier auch keinerlei didaktischen Mehrwert.

> cc ist unter Unix-artigen Systemen
> traditionell der Link auf den default-Compiler des Systems.

Wenn man die Scheuklappen absetzt, erkennt man, daß es tatsächlich auch 
nicht-unixoide Betriebssysteme gibt. Ob man das schön findet oder nicht, 
hilft nicht. Und auch wenn sich MS Mühe gibt, Windows immer 
unbedienbarer zu machen, so weit verschwunden, daß es irrelevant ist, 
ist es noch lange nicht.

von Karl H. (kbuchegg)


Lesenswert?

Johann L. schrieb:

>> [1]: http://c.learncodethehardway.org
>
> Insgesamt ist das, was ich gesehen habe, nicht dazu angetan es weiter zu
> lesen oder jemand zu empfehlen, der gerne C lernen möchte.


Jetzt mal abgesehen vom C Teil.
Was ich löblich finde, ist der Versuch, grundlegende Konzepte zu 
vermitteln. Wie zb Listen, Hashmaps oder auch einfache Binary Trees.

zb
http://c.learncodethehardway.org/book/ex40.html

Aber:
Ich will ja nicht sagen, dass meine Art diese Dinge zu vermitteln die 
einzige wahre ist, möchte aber schon auch anführen, dass solche Konzepte 
(gilt auch für Listen bzw. meistens für dynamische Datenstrukturen) 
meiner Erfahrung nach am schnellsten und einprägsamsten mit einer paar 
Grafiken gezeigt werden. Sowohl den generellen Aufbau der Datenstruktur, 
die Zusammenhänge in der Struktur als auch den Ablauf der Operationen 
kann man mit Diagrammen so präsentieren, dass jeder Neuling auf Anhieb 
versteht was das wichtige daran ist und wie die Operationen prinzipiell 
laufen müssen. Die für einen Neuling spannende Frage ist dann, wie bzw. 
wo findet sich die Operation im Code wieder. Wobei ihm das vorhergehende 
konzeptionelle Verständnis der jeweils untersuchten Funktionalität aus 
dem Diagramm enorm hilft, die einzelnen Anweisungen zuzuordnen. Mal ganz 
davon abgesehen, dass derartige Grafiken auch eine nicht zu 
unterschätzende Hilfe beim Debuggen sind, wenn der Neuling wieder mal 
die Reihenfolge der Pointer-Manipulationen so durcheinander gebracht 
hat, dass er sich einen Pointer unter dem Allerwertesten weggeschossen 
hat, den er später noch brauchen würde.

Ein Buch, welches bei der Besprechung von dynamischen Datenstrukturen 
kein einzige derartige Grafik/Diagramm zeigt, ist m.M. nach in diesem 
Bereich unbrauchbar. Wir Mensch sind nun mal visuelle Tiere.
Ich kann nur hoffen, dass der Autor in diesem Bereich noch nachbessert. 
So ist das nicht Fisch, nicht Fleisch.

von Rolf Magnus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
>> cc ist unter Unix-artigen Systemen
>> traditionell der Link auf den default-Compiler des Systems.
>
> Wenn man die Scheuklappen absetzt, erkennt man, daß es tatsächlich auch
> nicht-unixoide Betriebssysteme gibt.

Ich weiß das. Ich würde da eher dir die Scheuklappen vorwerfen. Denn für 
dich gibt's offenbar nur zwei Systeme, nämlich Windows und Linux, denn 
du behauptest ja, es funktioniere nur auf genau einem Betriebssystem, 
weil es mit Windows nicht geht. Ich behaupte dagegen, daß es nicht mit 
allen, aber vielen Betriebssystemen geht.

> Und auch wenn sich MS Mühe gibt, Windows immer unbedienbarer zu machen,
> so weit verschwunden, daß es irrelevant ist, ist es noch lange nicht.

Richtig. Aber wenn man ein C-Tutorial so aufbaut, daß es mit allen 
Betriebssystemen und Compilern funktioniert, sind 90% davon 
Beschreibungen von IDEs, Makefiles und Compiler-Optionen, und das 
Erlernen der Sprache geht dazwischen unter. Der Autor hat sich halt dazu 
entschieden, sich auf Unixoide Systeme zu konzentrieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Denn für
> dich gibt's offenbar nur zwei Systeme, nämlich Windows und Linux, denn
> du behauptest ja, es funktioniere nur auf genau einem Betriebssystem,
> weil es mit Windows nicht geht.

Wo soll ich so etwas behauptet haben?

Ich schrieb
1
Obendrein ist das Tutorial nur unter unixoiden
2
Betriebssystemen verwendbar.

> Aber wenn man ein C-Tutorial so aufbaut, daß es mit allen
> Betriebssystemen und Compilern funktioniert, sind 90% davon
> Beschreibungen von IDEs, Makefiles und Compiler-Optionen

Nein. Wenn man ein C-Tutorial so aufbaut, daß es universell verwendbar 
ist, dann geht es auf diese Dinge überhaupt nicht ein. Sondern nur auf 
die Programmiersprache an sich, nicht, wie man den Compiler bedient.

von Rolf Magnus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Rolf Magnus schrieb:
>> Denn für dich gibt's offenbar nur zwei Systeme, nämlich Windows und
>> Linux, denn du behauptest ja, es funktioniere nur auf genau einem
>> Betriebssystem, weil es mit Windows nicht geht.
>
> Wo soll ich so etwas behauptet haben?

Ich beziehe mich auf diese Aussage:

Rufus Τ. Firefly schrieb:
> Ein gutes C-Buch konzentriert sich auf die Sprache, nicht auf die
> Nutzung eines spezifischen Compilers unter einem spezifischen
> Betriebssystem.

Rufus Τ. Firefly schrieb:
> Nein. Wenn man ein C-Tutorial so aufbaut, daß es universell verwendbar
> ist, dann geht es auf diese Dinge überhaupt nicht ein. Sondern nur auf
> die Programmiersprache an sich, nicht, wie man den Compiler bedient.

Du findest es also besser, wenn man dem Lernenden gar nicht sagt, wie er 
aus seinem Code ein lauffähiges Programm bekommt, als wenn man es ihm 
zumindest für manche, aber eben nicht für alle Systeme sagt?
C kann man nicht als "Trockenübung" lernen. Man muß Code schreiben und 
ausprobieren, also muß man zwingendermaßen die Nutzung eines Compilers 
zusammen mit der Sprache lernen.

von Karl H. (kbuchegg)


Lesenswert?

Rolf Magnus schrieb:

> Du findest es also besser, wenn man dem Lernenden gar nicht sagt, wie er
> aus seinem Code ein lauffähiges Programm bekommt, als wenn man es ihm
> zumindest für manche, aber eben nicht für alle Systeme sagt?

Ob das besser ist oder nicht, will ich nicht beurteilen.
Aber ja, genau so haben wir das damals gelernt.
Die Bedienung des Compilers, Switches etc. musste man sich dann eben aus 
den Dokus rauslesen.
Meiner Erinnerung nach gab es im Ur-K&R keine einzige Zeile darüber, wie 
Editor, Compiler, Linker aufzurufen sind. C haben wir trotzdem damit 
gelernt.

von Reinhard Kern (Gast)


Lesenswert?

Rolf Magnus schrieb:
> also muß man zwingendermaßen die Nutzung eines Compilers
> zusammen mit der Sprache lernen.

Lernen muss man das, es hat aber mit der Sprache garnichts zu tun, bei 
Pascal ist das nicht anders als bei C. Andrerseits hat man ja in den 
meisten Fällen die Wahl unter mehreren IDEs oder auch garkeiner, man 
kann das auch zu Fuss erledigen oder sich ein Makefile schreiben - aber 
die Make-Logik ist ganz sicher nicht etwas was zur Sprache gehört, das 
ist vielmehr eine eigene Sprache.

Es ist auch für einen Lernenden nicht hilfreich, wenn man ihm weismacht, 
C wäre etwas Buntes mit Menüs und Buttons.

Gruss Reinhard

von C Dummy (Gast)


Lesenswert?

Dennis S. schrieb:
> da "C von A bis Z" von Jürgen Wolf völlig verpönt ist und das KR-Buch
> meines Erachtens einfach nicht mehr Up-To-Date ist, suche ich oft nach
> neuen Quellen für die Fortbildung in C.

Mal eine frage von einem abseluten C-Dummy: Was ist das "KR Ruch"?
Bei Ama***on hab ich nichts passendes gefunden...

von Karl H. (kbuchegg)


Lesenswert?

Kernighan&Ritchie Programming in C
(oder in der deutschen Version: The C Programming Languag)

Der C-Klassiker schlechthin.

http://de.wikipedia.org/wiki/The_C_Programming_Language

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Karl Heinz Buchegger schrieb:
> (oder in der deutschen Version: The C Programming Languag[e])

Das Buch heißt in der deutschsprachigen Ausgabe "Programmieren in C".

ISBN 978-3446154971

von Karl H. (kbuchegg)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Karl Heinz Buchegger schrieb:
>> (oder in der deutschen Version: The C Programming Languag[e])
>
> Das Buch heißt in der deutschsprachigen Ausgabe "Programmieren in C".
>
> ISBN 978-3446154971


Oh, danke.
Da ist mir was durcheinander gekommen. Ich wollte eigentlich den 
englischen Titel noch richtig stellen und hab den deutschen verändert.
Heut ist wieder mal ein Tag, an dem sollte man gar nicht erst aufstehen 
:-)

von C Dummy (Gast)


Lesenswert?

vielen Dank...

ein C Dummy

von Udo S. (urschmitt)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Heut ist wieder mal ein Tag, an dem sollte man gar nicht erst aufstehen

Das heisst du liegst noch im Bett und surfst da im Forum? :-)

von Oliver (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Meiner Erinnerung nach gab es im Ur-K&R keine einzige Zeile darüber, wie
> Editor, Compiler, Linker aufzurufen sind.

Ich sach mal, zu Zeiten des  Ur-K&R brauchte man das auch nicht zu 
wissen. Da hat man seinen Lochkartenstapel mit dem Programm ins 
Eingangsfach des Rechenzentrums abgelegt, und durfte sich dann ein paar 
Tage später den Ausdruck abholen. Der war dann lkeider meistens arg 
kurz, meistens in der Art: "Syntax Error in line #2"...

Oliver

von Udo S. (urschmitt)


Lesenswert?

Oliver schrieb:
> Der war dann lkeider meistens arg
> kurz, meistens in der Art: "Syntax Error in line #2"...

Zu Zeiten der 2. Auflage von K&R gabs sogar schon Turbo-C.
Die erste IDE, die ihren Namen wirklich verdiente und die dem damaligen 
MS-C ganz schön den Rang abgelaufen hat. :-)

von Vision (Gast)


Lesenswert?


von Vision (Gast)


Lesenswert?

Huch, irgendwie hat der Browser gesponnen...

von Oliver (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Zu Zeiten der 2. Auflage von K&R gabs sogar schon Turbo-C.

Je nun, zu Zeiten der ersten aber nicht.

> Die erste IDE, die ihren Namen wirklich verdiente

Nur der Vollständigkeit halber: Das war Turbo-Pascal. Turbo-C kam erst 
viel später.

Oliver

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Udo Schmitt schrieb:
> Zu Zeiten der 2. Auflage von K&R gabs sogar schon Turbo-C.

Erstaunlicherweise implementierte Turbo-C 2.0 (Anfang '89) bereits den 
in der 2. Auflage des K&R beschriebenen C-Standard und nicht das damals 
schon arg steinzeitliche "K&R-C".

Das war die erste brauchbare C-IDE, und das war einer der seltenen 
Fälle, wo die eingedeutschte Version dem englischen Original deutlich 
überlegen war, insbesondere die Dokumentation.

Die hatte Arne Schäpers übersetzt, wenn nicht eher komplett 
neugeschrieben.

von Reinhard Kern (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Die hatte Arne Schäpers übersetzt, wenn nicht eher komplett
> neugeschrieben.

Die Firma Heimsoeth war ja auch weit mehr als bloss ein Distributor von 
US-Paketen. So viel Service würde jeden heutigen Softwarevertrieb binnen 
Tagen in den Ruin treiben.

Gruss Reinhard

von Udo S. (urschmitt)


Lesenswert?

Oliver schrieb:
> Das war Turbo-Pascal. Turbo-C kam erst
> viel später.

Ich meinte für C. Turbo Pascal hatte ab Version 4 ine gute IDE.

Rufus Τ. Firefly schrieb:
> Das war die erste brauchbare C-IDE, und das war einer der seltenen
> Fälle, wo die eingedeutschte Version dem englischen Original deutlich
> überlegen war, insbesondere die Dokumentation.

Ich hatte die 2.0 Doku. Das war wenn ich mich erinnere fast ein drittel 
Meter Bücher. Von sowas träumt man heutzutage.

von Oliver (Gast)


Lesenswert?

Ich hab vor ein paar Jahren einen laufenden Meter 3.0-Doku ins Altpapier 
gegeben.

Der halbe Zemtimeter K&R steht aber immer noch im Regal ;)

Oliver

von Udo S. (urschmitt)


Lesenswert?

Oliver schrieb:
> Ich hab vor ein paar Jahren einen laufenden Meter 3.0-Doku ins Altpapier
> gegeben.
>
> Der halbe Zemtimeter K&R steht aber immer noch im Regal ;)

Jepp, das gleiche bei mir. Die Turbo C 3.0 Doku war noch besser.

Früher war halt alles besser, da habe ich noch dynamische Listen und 
Hash-Tabellen selbst programmiert, heute sage ich nur noch "new 
HashMap()" und bin schon fertig.
:-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Udo Schmitt schrieb:
> Ich hatte die 2.0 Doku. Das war wenn ich mich erinnere fast ein drittel
> Meter Bücher.

Nein, das war später. Die Dokumentation von "Borland C++ 3.0", das war 
ein fetter Schuber, eher fast ein halber Meter.

Turbo C 2.0 kam mit zwei Handbüchern, die zusammen keine 10 cm dick 
waren. Das englische Original war noch dünner.

von Udo S. (urschmitt)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Nein, das war später. Die Dokumentation von "Borland C++ 3.0", das war
> ein fetter Schuber, eher fast ein halber Meter.
>
> Turbo C 2.0 kam mit zwei Handbüchern, die zusammen keine 10 cm dick
> waren. Das englische Original war noch dünner.

Kann sein, war das dann TurboC++ für Windows mit dem ganzen Packen an 
farbigen Büchern?
Sorry dann hatte ich das verwechselt.
Habe die ganzen Pakete (Pascal und C) vor 3-4 Jahren endlich schweren 
Herzens entsorgt :-(

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Udo Schmitt schrieb:
> Kann sein, war das dann TurboC++ für Windows mit dem ganzen Packen an
> farbigen Büchern?

Möglich, richtig fett war Borland C++, aber es gab zeitgleich eine mit 
reduziertem Umfang, die noch als Turbo C++ vertrieben wurde.

Das Windows-Geraffel hat das so aufgebläht.

Das erste Turbo C++ hingegen kam mit hellrosa oder hellgrünen 
Handbüchern und war in einem vielleicht 10cm dicken Schuber 
untergebracht. Die deutschen Handbücher waren im Gegensatz zu denen von 
Turbo-C 2.0 deutlich schlechter.

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.