Helpex - Trao đổi & giúp đỡ Đăng nhập
19

Ai đó có thể mô tả những lợi thế nào mà một lập trình viên C hoặc C ++ sẽ có so với lập trình .Net khi phát triển cho Windows không?

19 hữu ích 5 bình luận 1.3k xem chia sẻ
14 trả lời 14
29

Có một câu nói rằng mọi ứng dụng C đủ phức tạp cuối cùng sẽ hoàn thành lại các phần của C ++. Điều này cũng xảy ra với các chương trình C ++ và các ngôn ngữ cao hơn. Học C và C ++ sẽ gián tiếp khiến bạn trở thành một lập trình viên giỏi hơn bằng cách giúp bạn hiểu sâu hơn về cách .Net thực sự hoạt động và lý do tại sao các nhà thiết kế lại đưa ra lựa chọn mà họ đưa ra.

Một lập trình viên chỉ giỏi bằng sự hiểu biết của anh ta về các lớp bên dưới anh ta. .Net thực hiện khá tốt việc trừu tượng hóa rất nhiều vấn đề về kiến ​​trúc máy ra khỏi tầm nhìn, nhưng nó không hoàn hảo. Vẫn có những rò rỉ trong lớp trừu tượng nơi mà sự hiểu biết về các vấn đề cấp thấp hơn sẽ giúp bạn đưa ra quyết định tốt ở lớp .Net.

Một danh sách ngắn, không đầy đủ các vấn đề này bao gồm:

  1. Tương tác với mã gốc, đặc biệt là với Windows API
  2. Đồng tiền mã hóa bộ nhớ cache của CPU (nếu bạn không tin tôi, hãy google các trang trình bày từ bản trình bày PLINQ tại PDC '09)
  3. Hiệu suất kiểu giá trị so với hiệu suất kiểu tham chiếu (điều này đã có mặt vững chắc trong thế giới .Net, nhưng việc học C / C ++ làm cho sự khác biệt giữa phân bổ ngăn xếp và heap rõ ràng hơn theo một số cách).
  4. Các vấn đề về lập lịch trình hạt nhân (tức là tại sao lại là một ý tưởng tồi nếu bạn quay ra 1000 luồng)
  5. Việc hiểu rõ bộ thu gom rác cũng đạt được hiệu quả tốt nhất bằng cách viết một vài lược đồ quản lý bộ nhớ bằng các ngôn ngữ không thu gom rác.
29 hữu ích 5 bình luận chia sẻ
10

Bạn nên học đủ C để có thể sử dụng Windows API gốc, vì nó khá tiện dụng khi viết giao diện người dùng phức tạp và khi tương tác với hệ thống.

10 hữu ích 3 bình luận chia sẻ
4

Chỉ một vài điều xảy ra với tôi ngay lập tức:

  1. Tốc độ.
  2. Tính di động.
  3. Tránh cài đặt .NET.
  4. Tùy thuộc vào loại công việc bạn đang làm, C ++ có thể hiệu quả hơn.
  5. Bạn không bao giờ phải tranh luận xem nha sĩ của bạn có đau hơn không P / Invoke.
4 hữu ích 0 bình luận chia sẻ
3

Mặc dù tôi đã cam kết chỉ lập trình trong .NET từ bây giờ, nhưng tôi biết sẽ có những trường hợp tôi phải sử dụng interop để sử dụng thư viện của bên thứ ba và có khả năng cũng sẽ phải tìm hiểu mã của họ để sửa lỗi.

3 hữu ích 0 bình luận chia sẻ
3

Thành thật mà nói, nó chỉ thực sự được sử dụng khi bạn cần truy cập Win32 API, nhưng hầu hết các chữ ký đó đều có sẵn trực tuyến (chẳng hạn như pinvoke.net ) và mọi phiên bản mới của .NET framework bao gồm nhiều trình bao bọc hơn cho các lệnh gọi API Win32 thường được sử dụng.

Có kiến ​​thức C / C ++ là điều đáng giá trong kế hoạch lớn hơn của mọi thứ, nhưng nếu bạn không sử dụng nó hàng ngày, bạn sẽ mất kiến ​​thức nhanh chóng!

3 hữu ích 0 bình luận chia sẻ
2

Những người khác đã đề cập đến sự cần thiết của tương tác Windows API, nhưng tôi cũng thấy lỗi với giả định rằng bạn có thể đảm bảo (hoặc bạn nhất thiết phải muốn bị giới hạn) phát triển .NET cho phần còn lại của sự nghiệp của bạn.

.NET là một khung công tác tuyệt vời, nhưng rất khó có khả năng là khung cuối cùng. Và, tốt nhất là nó không phải là sự lựa chọn tốt nhất cho mọi dự án.

Học những kiến ​​thức cơ bản - và tôi sẽ coi C / C ++ là những điều cơ bản cần thiết - sẽ mở đường cho bất kỳ số lượng đường dẫn nào, bao gồm .NET và bất cứ điều gì Next Great Framework.

2 hữu ích 0 bình luận chia sẻ
1

Việc hiểu C và C ++ thực sự khiến bạn đánh giá cao .NET hơn và cẩn thận hơn cũng như nhận thức được trách nhiệm đối tượng, khái niệm quản lý bộ nhớ và hiệu suất. Bạn sẽ có nhiều cảm nhận hơn về những gì có thể xảy ra khi bạn gọi một phương thức trong khuôn khổ và nó chỉ thực hiện công việc cho bạn.

Một số lập trình song song để tối đa hóa sức mạnh của phần cứng như CPU ​​đa lõi và GPU vẫn bị hạn chế hơn đối với ngôn ngữ cấp thấp hơn như C / C ++. Để chọn một cái để học ngay bây giờ, tôi sẽ làm C ++. C ++ là sự kế thừa của C và có nhiều khái niệm tiên tiến và hiện đại hơn được tích hợp vào nó. Cá nhân tôi học C ++ và thấy rằng việc chuyển đổi và làm việc trong môi trường C phức tạp khá dễ dàng.

1 hữu ích 0 bình luận chia sẻ
1

.NET rất tốt cho các dự án phía máy chủ, nhưng việc sử dụng .NET cho mã phía máy khách (ứng dụng WinForm hoặc dịch vụ Windows) có thể không được áp dụng trong mọi trường hợp. .NET có thời gian chạy lớn, chiếm dung lượng bộ nhớ đáng kể và mất nhiều thời gian để tải. Do đó, nếu ứng dụng hoặc dịch vụ của bạn không phải là công cụ chính cho người dùng cuối (ví dụ như phần mềm sao lưu), .NET có thể không phải là lựa chọn tốt nhất.

1 hữu ích 2 bình luận chia sẻ
1

Nếu bạn là một lập trình viên .Net Windows muốn làm việc tại Google vào một ngày nào đó (không phải tất cả chúng ta phải không?), Thì việc học C ++ sẽ rất hữu ích.

1 hữu ích 5 bình luận chia sẻ
0

Bạn có thể muốn học C ++ / CLI nếu bạn định thực hiện bất kỳ tương tác không tầm thường nào.

0 hữu ích 0 bình luận chia sẻ
0

C ++ có các thư viện tốt hơn cho nhiều tác vụ ít phổ biến hơn. Đặc biệt, liên quan đến toán học, nơi nó có được lợi thế lớn từ quyền truy cập vào SSE và một số tối ưu hóa dành riêng cho bộ xử lý khác. Có rất nhiều giao thức và tiêu chuẩn dựa trên C ++, COM sẽ không sớm đi đến đâu - và tương tác phức tạp thậm chí còn đòi hỏi nhiều kiến ​​thức bí truyền hơn là chỉ viết C ++.

C ++ đang dần lạc hậu, nhưng con đường sẽ còn dài.

Liên quan đến hiệu suất chung - mặc dù có thể viết mã C ++ nhanh hơn .NET tương đương, nhưng hầu hết các chương trình C ++ thì không và nhiều chương trình thực sự chậm hơn.

Và để "hiểu những điều cơ bản" câu trả lời ... hãy chọn một ngôn ngữ không có lập trình meta khuôn mẫu cho điều đó. Xin vui lòng.

0 hữu ích 0 bình luận chia sẻ
0

Sự hiểu biết của tôi là .NETnền tảng để hỗ trợ các ngôn ngữ lập trình, và bản thân nó, không phải là một ngôn ngữ. Có Visual Basic .NET , Visual C .NET , v.v.

Tôi khuyên bạn nên tiếp tục với C và C ++ vì bạn sẽ không bao giờ biết khi nào .NETsẽ được thay thế bằng công nghệ khác. Cho đến nay, C và C ++ chậm thay đổi và yêu cầu một tập đoàn phê duyệt các thay đổi đối với ngôn ngữ. Bạn cũng không thể giới hạn bản thân và học các ngôn ngữ hữu ích khác như Java, Perl, PHP và LISP. Tôi thực sự đề xuất LISP vì nó hoàn toàn khác với C hoặc C ++ và sẽ khai sáng cho bạn.

0 hữu ích 0 bình luận chia sẻ
0

Nếu bạn muốn trở thành một chú ngựa non 1-trick, hãy học C và C ++.

Windows sẽ biến mất vào một ngày nào đó, bởi vì đó là điều xảy ra với các công ty và sản phẩm. Có lẽ chúng ta sẽ nhận được Skylights thay vì từ Microsoft và .NET được cải tiến thành một thứ khác - .NEW. ( bạn muốn gọi nó là gì cũng được ).

Vậy thì .NET của bạn ở đâu? Nó đã biến mất, cũng như tính tổng quát về chuyên môn của bạn - bạn đã trở thành thế hệ tiếp theo của lập trình viên COBOL, một lập trình viên kế thừa.

Cách duy nhất để có thể luôn dẫn đầu là phải biết các nguyên tắc của mọi thứ từ assembly đến SQL.

Nhưng đó là sau đó . Còn bây giờ thì sao? Bạn có khả năng lập trình trò chơi triple-A cho Windows, có thể viết trình điều khiển cho Windows, có thể hiểu thế giới cấp hạt nhân của Windows, có thể hiểu chi tiết về các lỗi bảo mật cho Windows, có khả năng duy trì các ứng dụng cũ cho Windows, để có thể được thuê cho các công ty sử dụng C ++.

Và những lý do đó - IMO - là đủ.

0 hữu ích 0 bình luận chia sẻ
-1

C ++ thường an toàn hơn vì tính năng quản lý tài nguyên tự động của nó. Sự khác biệt về hiệu suất (có lợi cho C ++) thường không quan trọng nhưng việc sử dụng bộ nhớ thực sự có thể (GC lãng phí rất nhiều RAM).

-1 hữu ích 2 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ .net c++ c , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading