Чи робить C99 застарілу книгу K&R? Якщо так, що рекомендувати на його місце? [зачинено]


10

C99 вже деякий час з нами. У ньому представлено безліч функцій, яких немає в мові програмування K & Rs . Жоден з них не є особливо радикальним. Однак навіть такі невеликі функції, як можливість змішувати декларації та код змінюють спосіб організації коду.

Хоча я все ще вважаю книгу K&R неоціненною посиланням, і як її стиль написання, чи є краща книга, яка враховує стандарт C99? Я б купив третє видання K&R із серцебиттям, але не думаю, що це станеться.


Насправді не існує оновленої англійською мовою версії C99? Чеський переклад цієї книги оновлений для C99.
Šimon Tóth

@Let_Me_Be Друге видання книги K&R було опубліковано в 1988 році. Немає нової англійської версії книги. Це видання висвітлює ANSI C з 1988 року.
Томас Оуенс

Через те, як налаштовані авторські права / роялті, K&R не зробить нічого, написавши третє видання, тому ми ще цього не бачили.
BlackJack

@BlackJack це справжній ганьба.
Justin Dearing

2
@Let_Me_Be - Скільки для того, щоб перекласти чеський переклад назад на англійську мову? :-) Я думаю, що це єдиний спосіб, коли ми отримаємо C99 версію K&R ...
voretaq7

Відповіді:


8

Я б все-таки пропонував (ANSIfied second edition of) K&R для тих, хто тільки вивчає C і хто хоче вивчити прямий процедурний C (мінус об'єкти). Я подвоїв би цю рекомендацію, якщо вони мають намір одного разу зламати * NIX-код ядра, оскільки K&R справді має "Unix Mentality" в книзі програмування.

Після того, як вони зрозуміли основи синтаксису С та мають розумне уявлення про стиль, ви можете ознайомити їх з іншими посиланнями, які розповідають про особливості C99 та пояснюють, що це може змінити спосіб їх організації, що вони пишуть, але вони матимуть ( загалом) хороші звички починати з K&R (як, наприклад, робити декларації наперед), і вони будуть усвідомлювати, чому слід робити щось протилежне цим звичкам - я думаю, ви будуєте кращих програмістів таким чином.


3
Виконання декларації заздалегідь - це погана практика, успадкована від стилю C89, змінні повинні бути оголошені безпосередньо перед їх використанням. Дивіться, наприклад, відповідь на це запитання
Étienne

2
@ Étienne Під "вперед" я маю на увазі "Змінні повинні бути оголошені якомога раніше в межах, де вони будуть використовуватися". що в основному є тим, що пропагує інша відповідь (або принаймні показує її дуже спрощені приклади). Я схвалюю те, що відповідає ця відповідь, але ви хочете переконатись, що нові програмісти зрозуміють, що "О драт, мені потрібна {лічильник, тимчасова змінна та ін.} - Дозвольте мені просто оголосити це тут посеред моєї логіки". це погана річ, тому що чинення крах читабельність, як це вказує інша відповідь (принаймні IMHO це робить)
voretaq7

2
Не існує єдиної думки, я з повагою не погоджуюся, що це погана річ, і багато людей вважають, що це добре, щоб заявити про це посеред логіки, див. Також програмісти.stackexchange.com/questions/56585/…
Етьєн

@ Étienne Це ваша думка, і ви, безумовно, маєте на це право, але, щоб бути тупим, немає ніякого способу змінити МОЮ думку: Я старий хакерський Unix-хакер і стиль кодування C - це дуже релігійна річ я. На щастя, шанси, що жодному з нас не доведеться читати код іншого :-)
voretaq7

Сподіваємось, ми не будемо ;-)
Етьєн

8

Ви хочете, щоб Гарбісон і Стіл: " C: Довідник "

Він явно охоплює C99 і порівнює / протиставляє інші аромати C. Я вважаю це дуже корисним.


1
Щоб бути справедливим, H & S є те , що він говорить , що це: довідка по експлуатації, і сам по собі не є великим навчанням ресурсу як K & R є.
Джон Боде

Погодьтеся! Я думаю, що ОП шукає посилання.
Анджело

1

Я рекомендую програмування King's C: сучасний підхід . Він товстіший за K&R, але все ще не особливо підтягнутий, і автор зазначає, що є і що не є новим для C99, а також поради щодо стилів та інших подібних речей.


1
95 доларів на Амазонії, ого!
Ернест Фрідман-Хілл

Насправді ви повинні вказати у своїй відповіді, що ви маєте на увазі програмування на C: сучасний підхід (друге видання). Також у мене є що запитати, чи можемо ми коротко поспілкуватися?
Сурай Джайн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.