Macht C99 das K & R-Buch veraltet? Wenn ja, was an seiner Stelle zu empfehlen? [geschlossen]

10

C99 ist jetzt schon eine Weile bei uns. Es werden viele Funktionen vorgestellt, die nicht in K & Rs The C Programming Language enthalten sind . Keiner von ihnen ist besonders radikal. Aber auch kleine Funktionen wie das Vermischen von Deklarationen und Code ändern die Art und Weise, wie Code organisiert wird.

Obwohl ich das K & R-Buch immer noch als unschätzbare Referenz betrachte und wie sein Schreibstil, gibt es ein besseres Buch, das den C99-Standard berücksichtigt? Ich würde sofort eine dritte Ausgabe von K & R kaufen, aber ich glaube nicht, dass das passieren wird.

Justin Dearing
quelle
Es gibt wirklich keine aktualisierte englische Version von C99? Die tschechische Übersetzung dieses Buches wurde für C99 aktualisiert.
Let_Me_Be
@Let_Me_Be Die 2. Ausgabe des K & R-Buches wurde 1988 veröffentlicht. Es gibt keine neuere englische Version des Buches. Diese Ausgabe behandelt ANSI C von 1988.
Thomas Owens
Aufgrund der Einrichtung des Urheberrechts / der Lizenzgebühr würde K & R durch das Schreiben einer dritten Ausgabe nichts erreichen, weshalb wir noch keine gesehen haben.
BlackJack
@ BlackJack das ist eine echte Schande.
Justin Dearing
2
@Let_Me_Be - Wie viel kostet es, die tschechische Übersetzung wieder ins Englische zu übersetzen? :-) Ich denke, es ist vielleicht die einzige Möglichkeit, eine C99-Version von K & R zu bekommen ...
voretaq7

Antworten:

8

Ich würde immer noch (die ANSIfied zweite Ausgabe von) K & R für jeden empfehlen, der gerade C lernt und Straight Procedural C (minus Objekte) lernen möchte. Ich würde diese Empfehlung verdoppeln, wenn sie beabsichtigen, eines Tages * NIX-Kernel-Code zu hacken, da K & R wirklich die "Unix-Mentalität" in einem Programmierbuch hat.

Sobald sie die Grundlagen der C-Syntax verstanden haben und eine vernünftige Vorstellung vom Stil haben, können Sie ihnen andere Referenzen vorstellen, die über die C99-Funktionen sprechen, und erklären, dass dies die Art und Weise ändern kann, wie sie das, was sie schreiben, organisieren, aber sie werden ( Im Allgemeinen) gute Gewohnheiten, wenn man mit K & R anfängt (wie Erklärungen im Vorfeld), und sie werden wissen, warum sie etwas tun, das diesen Gewohnheiten widerspricht - ich denke, Sie bauen auf diese Weise bessere Programmierer.

voretaq7
quelle
3
Das Vorabdeklarieren ist eine schlechte Praxis, die vom C89-Stil geerbt wurde. Variablen sollten unmittelbar vor ihrer ersten Verwendung deklariert werden. Siehe zum Beispiel die Antwort auf diese Frage
Étienne
2
@ Étienne Mit "vorne" meine ich "Variablen sollten alle so früh wie möglich innerhalb des Bereichs deklariert werden, in dem sie verwendet werden." Das ist im Grunde das, was diese andere Antwort befürwortet (oder zumindest in ihren sehr vereinfachten Beispielen zeigt). Ich bin damit einverstanden, was diese Antwort befürwortet, aber Sie möchten sicherstellen, dass neue Programmierer erkennen, dass "Oh drat, ich brauche einen {Zähler, eine temporäre Variable usw.} - lassen Sie es mich einfach hier in der Mitte meiner Logik deklarieren." ist eine schlechte Sache, weil dies die Lesbarkeit
beeinträchtigt,
2
Es gibt keinen Konsens, ich bin respektvoll anderer Meinung, dass es eine schlechte Sache ist, und viele Leute denken, dass es eine gute Sache ist, sie mitten in der Logik zu deklarieren, siehe auch programmers.stackexchange.com/questions/56585/…
Étienne
@ Étienne Das ist deine Meinung, und du hast sicherlich ein Recht darauf, aber um ehrlich zu sein, wirst du meine Meinung auf keinen Fall ändern : Ich bin ein launischer alter Unix-Hacker und der C-Codierungsstil ist eine sehr religiöse Sache mich. Glücklicherweise besteht die Möglichkeit, dass keiner von uns jemals den Code des anderen lesen muss :-)
voretaq7
Hoffentlich nicht ;-)
Étienne
8

Sie wollen Harbison und Steele: " C: Ein Referenzhandbuch "

Es deckt explizit C99 ab und vergleicht / kontrastiert mit anderen Geschmacksrichtungen von C. Ich fand es super nützlich.

Angelo
quelle
1
Um fair zu sein, H & S ist genau das, was es verspricht: ein Referenzhandbuch und an sich keine großartige Lernressource wie K & R.
John Bode
Zustimmen! Ich denke, das OP sucht jedoch nach einer Referenz.
Angelo
1

Ich würde King's C Programming: A Modern Approach empfehlen . Es ist dicker als K & R, aber immer noch nicht besonders gepolstert, und der Autor weist darauf hin, was für C99 neu ist und was nicht, sowie auf Stiltipps und andere solche Dinge.

Weltingenieur
quelle
1
$ 95 bei Amazon, whoah!
Ernest Friedman-Hill
Eigentlich sollten Sie in Ihrer Antwort darauf hinweisen, dass Sie C-Programmierung meinen: Ein moderner Ansatz (zweite Ausgabe). Ich muss auch etwas fragen, können wir uns kurz unterhalten?
Suraj Jain