Nâng cao mức độ mã C / C ++ của tôi


16

Tôi đã lập trình được 3-4 năm nay và cảm thấy mình không còn có thể được gọi là người mới bắt đầu, nhưng tôi đã đọc một số câu hỏi trên trang web này và nghĩ rằng WTF họ đang nói về điều gì? Tôi cũng cảm thấy như vậy khi tôi chọn sách lập trình ngày nay.

Tôi đã đọc một số sách lập trình bắt đầu, một số về C / C ++ và những cuốn khác về chơi game. Tôi đã viết một số thứ phức tạp hơn như AI rất cơ bản, giao diện nối tiếp và TCP / IP.

Tôi dự định trở thành một lập trình viên trò chơi, nhưng gần đây tôi đã trở nên có hứng thú với các hệ thống nhúng sau khi có cơ hội làm việc với chúng (giao diện nối tiếp).

Tôi đã gặp rất nhiều khó khăn để tìm tài liệu để tiếp tục việc học của mình sau khi hoàn thành các cuốn sách giới thiệu và người mới bắt đầu vì không có sách C ++ trung gian nào tôi có thể tìm thấy.

Bạn có lời khuyên nào để phát triển và nâng cao kiến ​​thức và kỹ năng của tôi? Tài nguyên cụ thể sẽ được đánh giá rất cao.


Đối với sách C ++, hãy xem câu hỏi này: stackoverflow.com/questions/388242/ từ
Naveen

Xem thêm: lập trình
Paul R

Câu trả lời:


10

Nếu bạn đang nói về C / C ++, thì bạn chắc chắn có thể sử dụng một số kinh nghiệm bổ sung. Gợi ý đầu tiên tôi sẽ cung cấp cho bạn là C và C ++ là hai ngôn ngữ hoàn toàn khác nhau . Tài nguyên tốt nhất để học C ++ là StackOverflow- có rất nhiều người ở đó có lượng kinh nghiệm và kiến ​​thức khổng lồ.

Điều tiếp theo cần làm là bắt đầu một dự án lớn, như cố gắng viết một công cụ đồ họa 3D trong API cấp thấp như DirectX và khi thiết kế của bạn thất bại thảm hại như tất cả các dự án đầu tiên, thì bạn sẽ học được điều gì đó về cách không để lập trình.

Bạn có thể kiểm tra liên kết này trên StackOverflow để biết danh sách lớn các cuốn sách hay để học C ++.


3
Không, tài nguyên tốt nhất để học C ++ là một cuốn sách hay, hay tốt nhất là sách.
Neil Butterworth

+1 Để bắt đầu một dự án lớn. Tôi đã học được nhiều hơn từ việc đấu tranh thông qua một công cụ đồ họa 3D hơn bất cứ điều gì tôi đọc trong một cuốn sách. Nó buộc bạn phải rơi vào những tình huống lạ lẫm cần nghiên cứu để giải quyết. Nó không đẹp, không hiệu quả, nhưng bạn sẽ học được điều gì đó.
SC Ghost

+1 cho "Nếu bạn đang nói về C / C ++, thì bạn chắc chắn có thể sử dụng một số kinh nghiệm bổ sung." -1 cho "Tài nguyên tốt nhất để học C ++ là StackOverflow", vì vậy không có phiếu bầu.
Residuum

5

Trước hết, tăng nền tảng lý thuyết cơ bản của bạn trong bất cứ điều gì bạn chưa biết. Nghiên cứu lý thuyết và viết một vài ví dụ ngắn.

Ví dụ nền tảng lý thuyết cơ bản bao gồm:

  • Thuật toán và dữ liệu
  • Thiết kế phần mềm (UML, mẫu thiết kế, OOP)
  • Hệ điều hành và lập trình song song

Sau đó, xem xét việc học một ngôn ngữ bổ sung (ví dụ Java hoặc C #). - Nghiên cứu các ngôn ngữ bổ sung giúp tốt hơn theo những ưu và nhược điểm của ngôn ngữ bạn đang sử dụng và giúp bạn tìm hiểu các thực tiễn tốt nhất mà bạn có thể không biết.

Tiếp theo chọn một tên miền mới (lập trình web, đồ họa máy tính, xử lý hình ảnh, thị giác máy tính, truy cập dữ liệu, ...). Nghiên cứu lý thuyết và viết một vài ví dụ ngắn.

Tiếp theo tạo một ví dụ lớn, đóng gói một ứng dụng nhiều lớp, xử lý truy cập dữ liệu, giao diện người dùng và một miền cụ thể mà bạn đã chọn. Tập trung vào kiến ​​trúc của ứng dụng (đảm bảo các bộ phận của nó được ghép lỏng lẻo nhất có thể).

Hy vọng, bạn sẽ học được cách học các phương pháp và công nghệ mới và tích hợp chúng với một kiến ​​trúc tốt.


Cụ thể cho lập trình trò chơi, tôi khuyên bạn nên chọn các tên miền / công nghệ sau:

  • Xử lý ảnh cơ bản
  • Bất kỳ công nghệ UI cụ thể nào
  • Khái niệm cơ bản về đồ họa máy tính
  • Bất kỳ công cụ đồ họa cụ thể nào (ví dụ DirectX, OpenGL, OGRE, ODG, Java3D, ...)
  • Cơ sở vật lý cơ học
  • Bất kỳ công cụ vật lý cụ thể nào (ví dụ PhysX, ...)
  • Bất kỳ công cụ trò chơi cụ thể nào (ví dụ XNA, ...)
  • Lập trình đa luồng
  • Lập trình phân tán


Biên tập:

Làm thế nào để học:

  • Đọc và chạy các ví dụ từ CodeProject.
  • Duyệt qua một vài cuốn sách trong thư viện sách / ebook hoặc lưu trữ cho đến khi bạn tìm thấy một vài cuốn sách mà bạn thích (phù hợp với phong cách đọc của bạn + bao gồm các chủ đề bạn muốn đọc).
  • Đọc blog.
  • Hãy thử mọi thứ và hỏi trên StackOverlow khi bạn gặp khó khăn.

Tôi biết trực tiếp x. Thứ hai tôi đã nghĩ về điều này nhưng không thể tìm thấy bất kỳ tài nguyên nào ngoài những điều cơ bản nhất, bạn có lời khuyên nào về CÁCH để học những điều này không?
Xiên

2
Bằng cách viết ví dụ - dùng thử và lỗi là cách tốt nhất. Ngoài ra, xem chỉnh sửa.
Daniel Varod

1

Sử dụng C ++ (kết hợp với C) giả sử rằng bạn sẽ có nhiều hơn để học cách hiểu WTF mà họ đang nói đến. C ++ là một số ngôn ngữ, một vài lớp trừu tượng sống ở cùng một nơi và phải mất rất nhiều thời gian để khám phá tất cả một lần, sau đó hiểu những gì bạn vừa thấy.

Tôi đã ở trong trường hợp của bạn và tôi vẫn đang học về những ngôn ngữ đó. Tôi cũng học được rất nhiều làm việc trên các hệ thống nhúng.

Đây là lời khuyên của tôi:

  • Đọc những cuốn sách đó: /programming/388242/the-definitive-c-book-guide-and-list -> Bắt đầu với những cuốn sách giới thiệu, ngay cả khi bạn cảm thấy mình không phải là người mới bắt đầu, bởi vì bạn có để giải quyết kiến ​​thức cơ bản của bạn rất nhiều trước khi tiếp tục. Sau đó tìm hiểu về siêu lập trình mẫu và các hạn chế hệ thống nhúng.
  • Thực hành nhiều: bạn càng áp dụng những gì bạn học, bạn càng hiểu nó nhiều hơn. Về điểm này, cách làm của tôi là kiểm tra bất kỳ góc nào của ngôn ngữ và ngữ cảnh trong các dự án thử nghiệm nhỏ. Tôi cũng có các dự án nhà "lớn" nơi tôi kiểm soát mọi thứ và tôi thực hành các kỹ thuật mới và đẩy chúng cho đến khi chúng bị phá vỡ.

Đừng cho rằng bạn đã biết nhiều về lập trình. Hầu hết các nhà phát triển đã trưởng thành trong lập trình chỉ sau hơn 10 năm thực hành trong thế giới thực, với bối cảnh và loại dự án, nền tảng khác nhau, v.v.

Bạn chỉ mới bắt đầu hành trình của mình.


3
Chưa kể đến việc "trưởng thành", như bạn đang sử dụng nó, khác xa với "không còn gì để học". Bạn càng học nhiều, bạn càng biết nhiều thứ mà bạn không biết.
David Thornley

0

Dựa trên sở thích của bạn trong lập trình nhúng và trò chơi, tôi cũng khuyên bạn nên làm như sau - bạn có thể xem qua danh sách sách từ các bài đăng trên để tìm tài liệu nguồn tốt về tất cả các chủ đề này. Một cuốn sách tôi thấy cần thiết là Thư viện chuẩn C ++: Hướng dẫn và tham khảo

  • Nếu bạn không thoải mái với những điều cơ bản của OOP - hãy học những điều đó trước. Hiểu những điều cơ bản của thừa kế và đóng gói. Biết cách các từ khóa ảo, công khai / được bảo vệ và riêng tư và tĩnh hoạt động.

  • Hãy thoải mái sử dụng con trỏ và tài liệu tham khảo (và thường thích tham khảo hơn). Tìm hiểu và sử dụng cấu trúc smart_ptr <> để đạt được quản lý bộ nhớ "tự động".

  • Tìm hiểu cách sử dụng các mẫu C ++ - ban đầu chỉ là các kiểu dữ liệu chứa. Bạn sẽ liên tục khám phá các kỹ thuật mới và mạnh mẽ hơn mà các mẫu C ++ có thể thực hiện thông qua lập trình meta.

  • Tìm hiểu STL: sử dụng chuỗi, iostream, ngoại lệ và các lớp container và thích chúng hơn các kiểu dữ liệu char *, FILE * và char [] cấp thấp bất cứ khi nào thực tế.

  • Bắt đầu sử dụng các phần của thư viện Boost - Tôi sẽ khuyên bạn nên tìm hiểu thư viện chủ đề và asio của họ trước khi có sở thích của bạn. Đây là một cơ sở nguồn C ++ đa nền tảng, mã nguồn mở, rất mạnh mẽ, cho phép bạn viết mã chất lượng cao cũng có thể mang theo được. (Nhiều bổ sung cho tiêu chuẩn C ++ cốt lõi có nguồn gốc từ các đóng góp Boost)

  • Chúc vui vẻ! Nghiêm túc - chọn một số dự án thú cưng để mã hóa. Có thể tinker với bảng Arduino nếu bạn thích các dự án lập trình nhúng.

  • Có được một số kinh nghiệm - nếu bạn chỉ sử dụng Windows / Visual Studio C ++, hãy thử viết một số mã cho Linux / g ++ hoặc OS X / XCode (bạn có thể mã C ++ trên máy Mac hoặc bạn thực sự có thể mở rộng tầm nhìn của mình và đi cho Objective-C, để xem một nhánh khác của ngôn ngữ OOP giải quyết mọi thứ như thế nào!)

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.