Mã nguồn C ++ tốt nhất để đọc cho người mới bắt đầu là gì? [đóng cửa]


25

Tôi đang cố gắng cải thiện kỹ thuật mã hóa c ++ của mình bằng cách đọc mã nguồn c ++. Dự án nguồn mở nào bạn muốn giới thiệu? Mã của Thư viện Boost C ++ có tốt không?


11
Tại sao đóng phiếu bầu? Câu hỏi rõ ràng và cụ thể.
Nemanja Trifunovic

Triển khai STL
dukeofgaming

12
@dukeofgaming: bạn đã quên thẻ "mỉa mai".
Doc Brown

1
Chà tôi đoán mã nguồn boost sẽ không phải là ý tưởng hay cho người mới bắt đầu. Bạn có thể sẽ chìm đắm trong các mẫu và kỹ thuật SFNINAE mà bạn chưa hiểu hoạt động và lý do của chúng.
Chris nói Phục hồi lại

7
Việc bỏ phiếu chặt chẽ là vì câu hỏi này, trong khi cụ thể, không mang tính xây dựng. Nó sẽ chỉ dẫn đến một danh sách các dự án của mọi người, trong đó không ai có thể trả lời là "câu trả lời". Để biết thêm đằng sau này, hãy xem FAQ .
Walter

Câu trả lời:


27

Tôi muốn giới thiệu bất kỳ mã C ++ mã nguồn mở nào của Google, chẳng hạn như sau:

Ưu điểm của việc sử dụng mã Google:

  • Nó được viết theo tiêu chuẩn cao và được đánh giá ngang hàng (không giống như một số mã nguồn mở).
  • Nó có tài liệu dành cho nhà phát triển tốt (giúp bạn dễ dàng tiếp thu và hiểu hơn).
  • Nó sử dụng một số kỹ thuật C ++ vừa phải tiên tiến (và do đó tốt cho việc học tập).
  • Có lẽ dễ hiểu hơn Boost vì nó không phụ thuộc quá nhiều vào siêu lập trình mẫu nâng cao và siêu lập trình tiền xử lý và không bị đè nặng bằng vô số các hack tương thích trình biên dịch và các trường hợp đặc biệt.

Các Google C Hướng dẫn ++ Phong cách đó của Google C ++ sử dụng code đang nhìn chung là tốt, nhưng nó có một số bit khá bất thường (ví dụ như một số nguyên tắc đặt tên của họ hoặc ngoại lệ không cho phép họ), vì vậy hãy ghi nhớ rằng C của họ ++ mã sẽ khác nhau về những khía cạnh từ những gì bạn sẽ thấy trong lĩnh vực này.


9

Tôi không khuyên bạn nên đọc một cơ sở mã. Tôi khuyên bạn nên đọc C ++ FAQ . Ngoài ra còn có một cuốn sách tuyệt vời đi cùng với trang web. Cách tốt nhất để cải thiện kỹ năng mã hóa C ++ của bạn.


13
-1: Tôi rất không đồng ý. Đọc mã người khác là một phần rất quan trọng để cải thiện kỹ năng mã hóa của một người. Sửa lỗi trong mã đó thậm chí còn tốt hơn.
Jan Hudec

6
@Jan Hoàn thành thỏa thuận từ tôi. Tuy nhiên, hầu hết các mã nguồn C ++ đều hút và sử dụng tất cả các loại mô hình xấu sẽ dạy các kỹ thuật xấu. Bạn có biết về một dự án OSS tốt có thể đóng vai trò đọc giới thiệu không?
Konrad Rudolph

Tôi đã đề cập đến cái này: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/ nhưng tôi có thể thấy có những cuốn sách khác bây giờ.
Onorio Catenacci

6

Đọc mã C ++ sạch hiện có là một cách tuyệt vời để học ngôn ngữ.

Mã trong bộ công cụ OpenFST là rất sạch, ví dụ. Nó có thể đọc được và sử dụng các tính năng hơi tiên tiến mà không cần quá nhiệt tình.

Mặt khác, Boost có thể hơi khó đọc, một phần vì họ sử dụng các thủ thuật C ++ khó hiểu và vì họ thường rắc mã với các cách giải quyết khác nhau cho các phiên bản trình biên dịch khác nhau.


6

Tôi sẽ đề nghị đọc " C ++ hiệu quả " của Scott Meyers và sử dụng các gợi ý anh ta có trong các chương trình đồ chơi nhỏ.


2
Bạn sẽ không học được gì trên các chương trình đồ chơi nhỏ. Bạn cần viết chương trình giải quyết các vấn đề thực tế. Chúng không phải lớn, bạn sẽ không thể viết các chương trình lớn một mình, nhưng chúng không chỉ là đồ chơi.
Jan Hudec

@JanHudec: Những gì bạn mô tả là những gì tôi gọi là chương trình đồ chơi : một đoạn mã giải quyết một vấn đề duy nhất. Vì vậy, ví dụ thuật toán Runge-Kutta sẽ là một "chương trình đồ chơi" trong khi mô phỏng toàn thân N sẽ không như vậy.
Sardathrion - Phục hồi Monica

2
Cả hai đều là "chương trình đồ chơi". Bởi vì các vấn đề là các ví dụ giả định của một vấn đề trừ khi bạn đang thực hiện mô phỏng số và hầu hết các lập trình viên đều không làm được. Vấn đề thực tế là thứ mà bạn hoặc ai đó bạn biết sẽ thực sự sử dụng. Nó có thể sẽ có GUI hoặc ít nhất là phân tích cú pháp dòng lệnh và thao tác phức tạp hoặc kết nối với mạng và sử dụng một số thư viện hiện có và sẽ không có bất kỳ thuật toán không tầm thường nào, bởi vì 99% chương trình không có.
Jan Hudec

1
@JanHudec bạn đang nói rằng một người không học được gì bằng cách làm việc với các vấn đề nhỏ, bị hạn chế trước? Nếu các lập trình viên nhảy trực tiếp vào các vấn đề lớn và phức tạp mà không học ít nhất một số nguyên tắc cơ bản và một số thành ngữ ngôn ngữ cơ bản, thì đây là cách chúng tôi kết thúc với các ứng dụng "Big Ball of Mud" khổng lồ này.
Onorio Catenacci

3
Tôi không chắc điều này có trả lời được câu hỏi không, nhưng mọi lập trình viên C ++ nên đọc cuốn sách đó (và phần tiếp theo của nó.)
Gort the Robot

2

Hãy thử đọc một cái gì đó đã tồn tại trong nhiều năm và có kích thước lớn. Sẽ mất vài tháng để bắt đầu hiểu mã và bắt đầu làm gì đó trong đó.

Firefox, Thunderbird, OpenOffice.org, LibreScript xuất hiện trong tâm trí. Nên có nhiều cái tương tự nữa. Các dự án này chạy trên nhiều hệ điều hành và nền tảng phần cứng. Ngoài ra, họ phải ghi điểm về khả năng đọc. Đây có thể là bạn nên các kỹ thuật bạn tìm kiếm.


0

Thậm chí tốt hơn là đọc mã sẽ làm việc với mã đó dưới dạng sửa lỗi và thêm các cải tiến nhỏ ở đây và đó. Chọn một số chương trình, tốt nhất là chương trình bạn đã sử dụng, đăng ký vào danh sách gửi thư, bắt đầu duyệt qua trình theo dõi lỗi của họ và cố gắng chẩn đoán một số lỗi. Hỏi trên danh sách gửi thư nếu bạn tìm giải pháp cho một cái gì đó cho dù nó hợp lý hoặc khi bạn gặp khó khăn. Điều đó sẽ cung cấp cho bạn một số mục tiêu cụ thể khi đọc mã, buộc bạn phải thực sự hiểu và là điều bạn sẽ làm hầu hết thời gian trong bất kỳ công việc nào.

Bạn có thể có thể nhìn vào một số ứng dụng KDE. Hầu hết được viết bằng C ++ và bạn có thể bắt đầu với một số nhỏ hơn trước.


-3

Đúng, mã của Thư viện Boost C ++ là một tài nguyên tuyệt vời để học hỏi, nếu không phải là một trong những thứ tốt nhất trên Hành tinh. Tuy nhiên, đối với người mới, học từ mã Boost có thể khiến việc học rất dốc. Nếu bạn thực sự muốn thử đọc Boost, hãy bắt đầu với một số thư viện nhỏ và đơn giản như Boost.Array .


2
Tôi nghĩ rằng nó giống như gợi ý một cách hay để học trượt tuyết là mua những con dốc kim cương đen kép.
Gort Robot

@StevenBurnap xin vui lòng, đọc câu trả lời của tôi một lần nữa và chỉ ra đề nghị vô lý mà tôi đã thực hiện. Dừng b ***** iting, bạn sẽ, và chỉ ra một thư viện toàn diện tốt hơn đáng để đọc bởi người mới bắt đầu. Bạn sẽ đi đến kết luận rằng những ví dụ tốt nhất phù hợp với người mới bắt đầu là từ một cuốn sách dành cho người mới bắt đầu.
mloskot

-3

Hãy thử đọc C ++ PDF. Nó miễn phí và tôi đã học được C ++ từ nó, mặc dù tôi không có kinh nghiệm lập trình nào khác và tôi chỉ mới 14. Tuyệt vời.


3
Bạn có thể thêm một liên kết đến một số tài nguyên liên quan đến dự án này?
Giorgio

3
Ý bạn là gì về C ++ PDF?
Martijn Pieters
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.