Cách tốt nhất để chuyển từ Java/C# sang C++ là gì?


10

Tại trường đại học của tôi, hầu hết các lớp học của tôi đều có trong Java. Gần đây tôi đã học được C# (và môi trường Visual Studio) tại một kỳ thực tập mùa hè. Bây giờ tôi đang tham gia một lớp giới thiệu về đồ họa máy tính và học sinh tốt nghiệp giảng dạy lớp thích chúng tôi sử dụng C++ để truy cập các ràng buộc OpenGL thông qua GLUT.

Có ai có bất kỳ tài nguyên nào tốt về cách thực hiện chuyển đổi tốt từ Java/C# sang C++ không? Rõ ràng con trỏ sẽ là một vấn đề lớn, nhưng bất kỳ điều gì khác tôi nên tìm kiếm? Bất kỳ hướng dẫn, hướng dẫn, vv sẽ rất hữu ích!

Cảm ơn!

8

Vâng, tôi bị lỗi do lỗi tương tự. Các trường đại học có xu hướng dựa vào Java, và sau đó cho phép bạn chọn ngôn ngữ mà bạn muốn làm việc với trong các dự án.

Cách tốt nhất là chỉ cần tham gia. Bắt đầu nhỏ, thực hiện các bước cho em bé và chỉ những thứ của Google làm bạn bối rối khi bạn đến đó. Cũng tìm thấy các dự án đã phát hành mã nguồn của họ. Xem cách họ cấu trúc chương trình của họ. Về cơ bản, chỉ cần tinker với các khái niệm. Có rất nhiều thông tin trên web.

Làm cho nó thú vị và lấy một số C++ game development book để nó không trở thành tâm trí quá nhanh.

Dưới đây là một số nơi mà tôi thấy hữu ích khi học tập

http://www.cprogramming.com/

http://www.wikipedia.com

http://www.cplusplus.com/


4

Nếu bạn đã biết Java/C# Tôi khuyên bạn nên chuyển trực tiếp đến C thay vì C++. Theo trang web, GLUT có cùng các ràng buộc cho C như C++, do đó bạn nên được tất cả các thiết lập. Dù sao, cách tốt nhất để học C là mua và đọc một bản sao của "Ngôn ngữ lập trình C" và ngồi xuống với trình biên dịch C của bạn và làm cho công cụ của bạn chạy.


2

Hiệu quả C++ của Scott Meyers là một cuốn sách tuyệt vời để giúp bạn tìm hiểu C++. Cung cấp cho bạn tổng quan về ngôn ngữ và giới thiệu rất nhiều khái niệm chính mà bạn sẽ sử dụng trong suốt quá trình phát triển về cơ bản bất kỳ chương trình C++ nào.


2

Effective C++ của Scott Meyers là một cuốn sách tuyệt vời để giúp bạn học C++. Cung cấp cho bạn tổng quan về ngôn ngữ và giới thiệu rất nhiều khái niệm chính mà bạn sẽ sử dụng trong suốt quá trình phát triển về cơ bản bất kỳ chương trình C++ nào.

Tôi thích cuốn sách này trong cả 3 ấn bản, và đó là một trong những cuốn sách tôi đã học ở cấp độ cao, nhưng đó không phải là một cuốn sách bắt đầu. Bạn có thể trở nên thoải mái trong C++ với ít hơn rất nhiều, mặc dù bạn chắc chắn sẽ không phải là một với trình biên dịch cho đến khi bạn đã đọc công việc của Meyer.

Tôi không biết nếu nó vẫn còn trong in nhưng tôi thấy Điều hướng C++ hữu ích, nhưng tôi cũng rất thoải mái với con trỏ từ Pascal. Err tất nhiên tôi quên rằng 15 năm trước, bạn đã phải học những gì OOP, bây giờ nó là một chút giả định hơn. Vì vậy, có lẽ Meyer không nằm ngoài hàng. Suy nghĩ?


2

Wikipedia có một bài viết trên comparisons between Java and C++.

Bạn không phải lo lắng về ngoại lệ đã kiểm tra trong C++, nhưng bạn cần biết về const correctness.


2

Có hai điểm khác biệt chính: cú pháp và quản lý bộ nhớ.

Trong C++, bạn có các con trỏ, các tài liệu tham khảo đối tượng mạnh hơn (hoặc ít mạnh hơn tùy thuộc vào cách giải thích quyền lực của bạn) mà bạn đã biết từ Java.

Trong Java bạn có thể làm điều này:

Thing mything = new Thing(); // mything is an object reference 
mything.method(); 

Trong C++ bạn sẽ làm điều này:

Thing * mything = new Thing(); // mything is an object pointer 
mything->method(); 
delete mything; 

Sự khác biệt cú pháp là hiển nhiên: - '' '>' thay vì khi gọi một phương thức đối tượng từ một con trỏ đến một đối tượng. Trong C++, bạn phải giải phóng bộ nhớ một cách rõ ràng khi bạn hoàn thành một đối tượng. Vào cuối ngày, bạn đang làm điều tương tự trong C++ và Java, khởi tạo các đối tượng và các phương thức gọi, đặt dấu chấm phẩy vô dụng ở cuối mỗi dòng, v.v. Có bất kỳ thắc mắc nào rằng Python đang trở nên phổ biến ?:

mything = Thing() # mything is whatever I want it to be 
mything.method() 

Lướt qua bất kỳ văn bản C++ nửa nào sẽ giúp bạn điền vào phần còn lại của chi tiết.


2

Tôi cũng khuyên bạn nên sử dụng số Thinking in C++ của Bruce Eckel. Một cuốn sách tuyệt vời cho các lập trình viên đã có kinh nghiệm muốn tham gia tư duy C++.

Anh ấy đủ tử tế để tạo các phiên bản điện tử của sách của mình available for free.


2

Tôi đặc biệt khuyên mọi người nên học C++ đọc Stroustrups "Ngôn ngữ lập trình C++". Meyers và Eckel có những thứ tuyệt vời, nhưng không có gì đánh bại việc học hỏi từ anh chàng đã quyết định ngôn ngữ nên là gì và cách anh ta định dùng nó.


2

Tôi gặp vấn đề tương tự. Cuốn sách duy nhất tôi có thể tìm thấy là "Pro Visual C++ 2005 for C# Developers" by Dean C. Wills. Đó là một đọc tốt với các ví dụ tuyệt vời, và tôi nghĩ rằng góc mà từ đó cuốn sách đến có lẽ là những gì bạn đang tìm kiếm.


1

Bạn sẽ cần cảm giác hoàn toàn khác biệt để xử lý bộ nhớ. Cũng nghĩ về giải phóng mọi thứ bạn không cần nữa. Trong Java và C# bạn chỉ cần bỏ đi các đối tượng của bạn và bộ nhớ được gọn gàng cho bạn - bạn không thể làm điều đó trong CPP