2011-12-12 34 views
16

Tôi đang tìm kiếm lại C; nó đã được nhiều năm và trong khi quen thuộc các sắc thái bị mất trong thời gian."K & R C" vẫn có thể áp dụng

tôi ban đầu học C từ K & R. Tuy nhiên, bây giờ tôi thấy nhiều người san lấp mặt bằng chỉ trích tại K & R.

Một ví dụ trưởng là http://c.learncodethehardway.org/book/learn-c-the-hard-waych55.html#x61-27200055

Top lý do dường như là nó là mã phong cách là quá terse, thực hành không áp dụng trong các chương trình lớn hơn và dẫn đến rò rỉ bộ nhớ hoặc có thể bị tấn công trong các hệ thống truy cập mạng chia sẻ.

Mọi người có cảm thấy những lời chỉ trích này là công bằng không? Họ có quan trọng với ai đó đang học C? Nếu có, mọi người có thể giới thiệu sách "hiện đại" C, tốt nhất có sẵn cho Kindle không?

+3

Hầu hết tất cả, K & R là từ trước khi ngôn ngữ được chuẩn hóa và đó là từ thời điểm cảnh quan máy tính trông hoàn toàn khác. Nó có thể là một cuốn sách tốt thứ hai, nhưng có lẽ có những cuốn sách tốt hơn để học thích hợp, hiện đại C. –

+1

Bình chọn để đóng vì nó chủ quan, nhưng chỉ FYI tôi ngừng đọc sau khi thấy rằng những lời chỉ trích đầu tiên có thể được tóm tắt là "chức năng này sẽ gây ra nếu bạn vượt qua các thông số không hợp lệ ". Nếu bạn nghĩ đó là "lỗi", bạn nên chuyển sang Java. – Jon

+0

@Kerrek SB - K & R 2nd. Ed. bao gồm tiêu chuẩn C89. –

Trả lời

15

Miễn là bạn đang nói về Ấn bản thứ 2, K & R vẫn là rất có liên quan.

Trong thực tế, tôi sẽ nói nó vẫn là cuốn sách duy nhất tốt nhất trên C, cả cho việc học, và để tham khảo.

Điều đó nói rằng, bạn cũng nên nhận được một bản sao của "Hướng dẫn tham khảo C: A của Steele" của Harbison &. Đó là tài liệu tham khảo hiện tại tốt nhất về C, và ấn bản thứ năm bao gồm C99, mà bạn nên sử dụng nếu bạn có thể.

Ngoài ra, khi bạn đã có một chút C phía sau bạn, tôi khuyên bạn nên đọc "Lập trình C chuyên nghiệp", bởi Peter van der Linden.

+0

Còn C11 thì sao? Có cuốn sách nào không? – Pacerier

+0

Vâng, K & R 2nd Ed. vẫn áp dụng cho C11, nhưng không, tôi không biết bất kỳ cuốn sách nào có trong C11."C: Một tài liệu tham khảo hướng dẫn sử dụng (5th Edition)" của Harbison & Steele là cuốn sách C cập nhật nhất mà tôi biết, nhưng nó chỉ bao gồm C99. Tôi vẫn hy vọng cho một Ed thứ 6. –

+0

Wikipedia viết cho [DragonFly BSD] (https://en.wikipedia.org/wiki/DragonFly_BSD) "Cũng như với FreeBSD và OpenBSD, các nhà phát triển của DragonFly BSD đang dần thay thế mã K & R theo phong cách C với nhiều hiện đại hơn, ANSI tương đương." Điều này có nghĩa là nhiều mã Kernel cho việc triển khai BSD Linux có trước C89 không? –

2

Nó vẫn có liên quan và vẫn rất hữu ích liên quan đến việc học ngôn ngữ. Học ngôn ngữ không yêu cầu bạn triển khai thực tiễn hoặc kiểu mới hỗ trợ khả năng đọc mã, v.v.

Ví dụ: ý tưởng về mã tự viết là bạn sử dụng biến tiết kiệm và tên hàm để giúp giải thích mục đích của một hàm hoặc một biến. K & R rõ ràng là trái ngược với điều này. Điều đó không có nghĩa là bạn không thể học ngôn ngữ C từ K & R, nó chỉ có nghĩa là phong cách của bạn sẽ cần được điều chỉnh/cập nhật dựa trên bất kỳ quy ước đặt tên nào bạn quyết định trong tương lai.

Tôi không thể đề xuất "Lập trình Expert C" đủ (như đã nêu bởi gregj).

+0

sau khi di chuyển từ C và Assembler tôi chủ yếu sử dụng C++ và Java, vì vậy tôi nghĩ rằng tôi có thể áp dụng một số thực hành tốt chung chung từ những người. Bạn có thể đề xuất bất kỳ tài liệu tham khảo cho các thực hành tốt C cụ thể hoặc những cuốn sách mà gregj và bạn đề nghị bao gồm đó? – retrodev

+0

Thưa ông, tôi bối rối Ở đây, tôi không phải là người nói tiếng Anh bản xứ, "Tôi không thể giới thiệu cuốn sách đủ". có nghĩa là bạn có gợi ý lập trình Expert C hay không? –

+0

@SurajCó, cụm từ đó có nghĩa là tôi không có đủ cách để giới thiệu sách cho bạn. –

Các vấn đề liên quan