Trước hết, hãy để tôi làm rõ đầu tiên rằng những suy nghĩ dưới đây hoàn toàn là ý kiến cá nhân của tôi và do kiến thức hạn chế của tôi. Tôi không có ý định nói rằng C++ không phải là mát mẻ.C++ từ chế độ xem Java: Tôi phải bỏ lỡ một vài điều
Tôi đã lập trình C++ trong một năm và tôi nghĩ nó thực sự có một số tính năng thú vị. Tuy nhiên, tôi cảm thấy hơi trống rỗng và thất vọng vì tôi không thực sự học bất cứ thứ gì "thay đổi tâm trí" từ C++, từ quan điểm của một người đã từng học Java trước đây (là ngôn ngữ thứ nhất).
Theo nhiều bài đăng tôi đã đọc, mọi người thích C++ vì nó nhanh hơn. Đối với một lập trình viên như tôi, những người chưa lập trình các ứng dụng thời gian quan trọng trước đây, tôi chưa có cơ hội để đánh giá cao điều này.
Cho đến nay, những gì tôi đã học dường như với tôi là tất cả về cú pháp. Đây là cách chúng ta viết một lớp trong Java, và đây là cách viết nó trong C++. Đây là cách làm kế thừa trong Java và đó là cách làm trong C++ và vân vân. (Tôi biết, nhiều thừa kế là mát mẻ, nhưng đối với tôi, không phải là một điều thay đổi tâm trí. Tôi nghĩ rằng điều thú vị là có thể trả lời tại sao Java không/không thể hỗ trợ đa thừa kế, được cho là tổng quát hơn so với thừa kế đơn).
Bằng cách nào đó với tôi, tất cả chỉ là cú pháp và tâm trí của tôi dường như không phát triển sau khi mã hóa C++, cho đến nay. Tôi nghĩ rằng vấn đề của tôi là viết các chương trình C++ với một "Java-mind". Điều tôi thực sự muốn là, như nhiều người đã đề xuất, để thay đổi cách suy nghĩ của tôi sau khi học một ngôn ngữ mới. Tôi chưa đạt được điều đó với C++ của tôi.
Tôi cũng có thể viết một vài chương trình Python nhỏ. Tuy nhiên, tôi cảm thấy sợ phải tìm hiểu thêm về nó như với tôi, một lần nữa, nó sẽ chỉ là học một cú pháp mới, một cách mới để làm những điều khác biệt, mà không biết lý do.
Tôi dự định học C để thực sự tìm hiểu mọi thứ. Tôi nghĩ rằng nó sẽ là một ngôn ngữ khá "liên quan".
Hãy cho tôi biết suy nghĩ của bạn và vui lòng cho tôi một số lời khuyên.
PS: Btw, có một câu hỏi cụ thể trong C++ tôi muốn xác nhận. Trong C++, viết theo cách sau là không hiệu quả, nếu tôi đúng:
private A computeAndReturnA(){...}
Thay vào đó, hãy viết nó như:
private void computeAndReturnA(A& a){...}
như trong cách đầu tiên, các giá trị trả được sao chép (khi chúng ta gán b = tính toán ...) và giới thiệu một số sự thiếu hiệu quả? (Trong Java, tôi đoán cách thứ nhất rõ ràng về ý nghĩa và hiệu quả khi nó vượt qua mọi thứ bằng cách tham khảo)
C++ và Java là cả hai ngôn ngữ Hướng đối tượng với trọng tâm nhấn mạnh vào OOP. Trong ý nghĩa đó, chúng quá giống với nó để thực sự "thay đổi tâm trí" để học cái này sau cái kia. Cả C++ và Java đều có điểm mạnh và điểm yếu tương đối. Để có một trải nghiệm "thay đổi tâm trí" thực sự, hãy học một loại ngôn ngữ hoàn toàn khác. Python (và cũng Ruby) cũng tốt, nhưng bạn có thể thử một ngôn ngữ chức năng như chương trình hoặc haskell hoặc thậm chí thử một ngôn ngữ như một prolog để có được một cái nhìn thực sự khác nhau của lập trình. Nhưng bây giờ tôi sẽ đi với Python. – MAK
@ MAK: Bạn rõ ràng chưa làm đủ C++. C++ là một ngôn ngữ đa mô hình bằng nhau. Đúng là nhiều thư viện chuẩn của C++ được cung cấp ở định dạng OO, nhưng có rất nhiều thư viện không có. – Puppy
@MAK: Tôi sẽ phải đồng ý với DeadMG tại đây. Chuyển dịch mô hình chuyển từ Java sang C++ là rất lớn. Sự tương đồng duy nhất giữa các ngôn ngữ là cú pháp (và đó là cố ý). Cách mọi thứ được thực hiện một cách chính xác là không giống nhau đến nỗi thật khó cho một lập trình viên Java thực sự chuyển đổi (vì chúng có xu hướng viết Java như mã trong C++). –