Czy C99 sprawia, że ​​książka K&R jest przestarzała? Jeśli tak, to co polecić na jego miejsce? [Zamknięte]

10

C99 jest z nami już jakiś czas. Wprowadza wiele funkcji, których nie ma w K & R The C Programming Language . Żaden z nich nie jest szczególnie radykalny. Jednak nawet małe funkcje, takie jak możliwość przeplatania się deklaracji i kodu, zmieniają sposób jego organizacji.

Chociaż nadal uważam książkę K&R za nieocenioną referencję i podobnie jak jej styl pisania, czy istnieje lepsza książka, która uwzględnia standard C99? Kupiłbym trzecią edycję K&R w mgnieniu oka, ale nie sądzę, że tak się stanie.

Justin Dearing
źródło
Naprawdę nie ma zaktualizowanej wersji angielskiej C99? Czeskie tłumaczenie tej książki zostało zaktualizowane do wersji C99.
Šimon Tóth,
@Let_Me_Be Drugie wydanie książki K&R zostało opublikowane w 1988 roku. Nie ma nowszej angielskiej wersji książki. To wydanie obejmuje ANSI C z 1988 r.
Thomas Owens
Z powodu konfiguracji praw autorskich / honorariów autorskich K&R nie zrobiłby niczego, pisząc trzecie wydanie, dlatego jeszcze go nie widzieliśmy.
BlackJack,
@BlackJack to prawdziwy wstyd.
Justin Dearing
2
@Let_Me_Be - Ile kosztuje przetłumaczenie czeskiego tłumaczenia na angielski? :-) Myślę, że to może być jedyny sposób, aby uzyskać wersję K&R C99 ...
voretaq7

Odpowiedzi:

8

Nadal sugerowałbym (druga edycja ANSIf) K&R wszystkim, którzy dopiero uczą się języka C i chcą nauczyć się prostej procedury C (bez obiektów). Podwoiłbym to zalecenie, jeśli pewnego dnia zamierzają włamać się do kodu jądra * NIX, ponieważ K&R naprawdę ma „Unix Mentality” w książce programistycznej.

Po zapoznaniu się z podstawami składni języka C i zrozumieniu rozsądnego stylu możesz przedstawić je innym źródłom, które mówią o funkcjach C99 i wyjaśnić, że może to zmienić sposób organizowania tego, co piszą, ale będą mieli ( ogólnie) dobre nawyki, zaczynając od K&R (np. robienie deklaracji z góry), a oni będą wiedzieć, dlaczego stoją za czymś sprzecznym z tymi nawykami - myślę, że w ten sposób budujesz lepszych programistów.

voretaq7
źródło
3
Wykonywanie deklaracji z góry jest właściwie złą praktyką odziedziczoną po stylu C89, zmienne powinny być deklarowane tuż przed ich pierwszym użyciem. Zobacz na przykład odpowiedź na to pytanie
Étienne
2
@ Étienne Przez „z góry” rozumiem „Zmienne powinny być deklarowane jak najwcześniej w zakresie, w którym będą używane”. co jest zasadniczo tym, co popiera ta inna odpowiedź (lub przynajmniej pokazuje w swoich bardzo uproszczonych przykładach). Zgadzam się z tym, co sugeruje ta odpowiedź, ale chcesz upewnić się, że nowi programiści zdają sobie sprawę, że „O rany, potrzebuję {licznika, zmiennej temp itp.} - Pozwól, że zadeklaruję to tutaj w środku mojej logiki”. jest złą rzeczą, ponieważ czyniąc to rozbija czytelność, tak jak ta inna odpowiedź wskazuje (przynajmniej tak robi IMHO)
voretaq7
2
Nie ma konsensusu, z szacunkiem nie zgadzam się, że jest to zła rzecz, a wiele osób uważa, że ​​dobrze jest zadeklarować to w środku logiki, zobacz także programmers.stackexchange.com/questions/56585/…
Étienne
@ Étienne To jest twoja opinia i na pewno masz do niej prawo, ale szczerze mówiąc, nie ma sposobu, aby zmienić MOJĄ opinię: Jestem zepsutym starym hakerem uniksowym, a styl kodowania C jest bardzo religijny dla mnie. Na szczęście nikt z nas nigdy nie będzie musiał czytać kodu drugiego :-)
voretaq7
Mam nadzieję, że nie ;-)
Étienne
8

Chcesz Harbison i Steele: „ C: Podręcznik referencyjny

Wyraźnie obejmuje C99 i porównuje / kontrastuje z innymi smakami C. Uznałem, że jest to bardzo przydatne.

Angelo
źródło
1
Szczerze mówiąc, H&S jest dokładnie tak, jak mówi: podręcznik referencyjny i sam w sobie nie jest świetnym źródłem wiedzy, takim jak K&R.
John Bode
Zgodzić się! Myślę jednak, że OP szuka odniesienia.
Angelo
1

Polecam King's C Programming: A Modern Approach . Jest grubszy niż K&R, ale nadal nie jest specjalnie wyściełany, a autor wskazuje, co jest i nie jest nowe w C99, a także wskazówki dotyczące stylu i inne tego typu rzeczy.

Inżynier świata
źródło
1
95 USD na Amazon, whoah!
Ernest Friedman-Hill
Właściwie powinieneś wskazać w swojej odpowiedzi, że masz na myśli C Programming: A Modern Approach (Second Edition). Mam też pytanie, czy możemy porozmawiać na krótką chwilę?
Suraj Jain,