C99 có làm cho cuốn sách K & R trở nên lỗi thời không? Nếu vậy những gì để giới thiệu ở vị trí của nó? [đóng cửa]


10

C99 đã được với chúng tôi trong một thời gian. Nó giới thiệu rất nhiều tính năng mà không phải là trong K & R C Programming Language . Không ai trong số họ đặc biệt triệt để. Tuy nhiên, ngay cả các tính năng nhỏ như có thể xen kẽ các khai báo và mã thay đổi cách thức tổ chức mã.

Mặc dù tôi vẫn coi cuốn sách K & R là một tài liệu tham khảo vô giá, và giống như phong cách viết của nó, có cuốn sách nào tốt hơn có tính đến tiêu chuẩn C99 không? Tôi sẽ mua phiên bản thứ ba của K & R trong tích tắc, nhưng tôi không nghĩ điều đó sẽ xảy ra.


Có thực sự không có phiên bản tiếng Anh cập nhật C99? Bản dịch tiếng Séc của cuốn sách này được cập nhật cho C99.
Let_Me_Be

@Let_Me_Be Ấn bản thứ 2 của cuốn sách K & R được xuất bản năm 1988. Không có phiên bản tiếng Anh mới hơn của cuốn sách. Phiên bản đó bao gồm ANSI C từ năm 1988.
Thomas Owens

Vì cách thiết lập bản quyền / tiền bản quyền, K & R sẽ không tạo ra bất cứ điều gì bằng cách viết một phiên bản thứ ba, đó là lý do tại sao chúng tôi chưa thấy một bản nào.
BlackJack

@BlackJack đó là một sự xấu hổ thực sự.
Justin thân mến

2
@Let_Me_Be - Bao nhiêu để dịch bản dịch tiếng Séc sang tiếng Anh? :-) Tôi nghĩ rằng đó có thể là cách duy nhất chúng tôi sẽ có phiên bản C99 của K & R ...
voretaq7

Câu trả lời:


8

Tôi vẫn sẽ đề xuất (phiên bản thứ hai của ANSIfied) K & R cho bất kỳ ai mới học C và muốn học C thủ tục thẳng (trừ các đối tượng). Tôi sẽ nhân đôi khuyến nghị đó nếu họ có ý định hack mã nhân * NIX một ngày vì K & R thực sự có "Unix Mentality" trong một cuốn sách lập trình.

Khi họ đã nắm được những điều cơ bản về cú pháp C và có ý tưởng hợp lý về phong cách, bạn có thể giới thiệu cho họ các tài liệu tham khảo khác nói về các tính năng của C99 và giải thích rằng nó có thể thay đổi cách họ tổ chức những gì họ viết, nhưng họ sẽ có ( nói chung) những thói quen tốt từ khi bắt đầu với K & R (như khai báo trước) và họ sẽ nhận thức được lý do tại sao đằng sau làm điều gì đó trái với những thói quen đó - Tôi nghĩ bạn xây dựng các lập trình viên tốt hơn theo cách đó.


3
Thực hiện khai báo trước là thực tế xấu được kế thừa từ kiểu C89, các biến phải được khai báo ngay trước khi chúng được sử dụng lần đầu tiên. Xem ví dụ câu trả lời cho câu hỏi này
Étienne

2
@ Étienne Bởi "lên trước" Ý tôi là "Các biến nên được khai báo càng sớm càng tốt trong phạm vi chúng sẽ được sử dụng." về cơ bản đó là những gì mà câu trả lời khác đang ủng hộ (hoặc ít nhất là hiển thị trong các ví dụ rất đơn giản của nó). Tôi tán thành câu trả lời đó là gì, nhưng bạn muốn chắc chắn rằng các lập trình viên mới nhận ra rằng "Oh drat, tôi cần một {counter, biến temp, v.v.} - Hãy để tôi khai báo nó ở giữa logic của tôi." là một điều tồi tệ bởi vì làm như vậy phá hỏng khả năng đọc như câu trả lời khác này chỉ ra (ít nhất là IMHO nó làm)
voretaq7

2
Không có sự đồng thuận, tôi tôn trọng không đồng ý rằng đó là một điều xấu, và nhiều người nghĩ rằng đó là một điều tốt để tuyên bố nó ở giữa logic, xem thêm các lập trình viên.stackexchange.com/questions/56585/
Étienne

@ Étienne Đó là ý kiến của bạn, và bạn chắc chắn được nó, nhưng phải thẳng thắn không có cách nào bạn sẽ thay đổi MY ý kiến: Tôi một hacker Unix cũ cáu kỉnh và C phong cách mã hóa là rất nhiều một điều tôn giáo cho tôi. May mắn thay, không ai trong chúng ta sẽ phải đọc mã của người khác :-)
voretaq7

Hy vọng chúng tôi sẽ không ;-)
Étienne

8

Bạn muốn Harbison và Steele: " C: Sách hướng dẫn tham khảo "

Nó rõ ràng bao gồm C99 và so sánh / tương phản với các hương vị khác của C. Tôi đã thấy nó siêu hữu ích.


1
Công bằng mà nói, H & S chính xác như những gì nó nói: hướng dẫn tham khảo và bản thân nó không phải là một tài nguyên học tập tuyệt vời theo cách của K & R.
John Bode

Đồng ý! Tôi nghĩ rằng OP đang tìm kiếm một tài liệu tham khảo, tuy nhiên.
Angelo

1

Tôi muốn giới thiệu Lập trình King C: Cách tiếp cận hiện đại . Nó dày hơn K & R nhưng vẫn không được đệm đặc biệt và tác giả chỉ ra những gì không phải là mới đối với C99 cũng như các mẹo về phong cách và những thứ khác.


1
$ 95 trên Amazon, whoah!
Ernest Friedman-Hill

Trên thực tế, bạn nên chỉ ra câu trả lời của bạn rằng bạn có nghĩa là Lập trình C: Cách tiếp cận hiện đại (Ấn bản thứ hai). Ngoài ra tôi có một cái gì đó để hỏi, chúng ta có thể có một cuộc trò chuyện ngắn?
Suraj Jain
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.