Có nên lập trình ứng dụng .net với C ++ không


9

Từ những gì tôi có thể hiểu, C # là ngôn ngữ defacto khi mã hóa ứng dụng .NET. Có nên lập trình các ứng dụng .NET [cho phép đó là ASP.NET, WinPhone 7, GUI, v.v.] trong C ++ không? Những cạm bẫy và nhược điểm nếu chúng ta chọn đi theo con đường này là gì?

Cám ơn vì đã chia sẻ.


3
C ++ / CLI khác với các ngôn ngữ .NET còn lại, vì nó tạo ra các cụm chế độ hỗn hợp (hạn chế sử dụng nghiêm ngặt khả năng của nó). Đó là một ý tưởng tốt để chỉ sử dụng các ngôn ngữ tuân thủ CLI, trừ khi bạn thực sự muốn có khả năng tương tác phức tạp với một cơ sở mã C ++ không được quản lý.
SK-logic

Câu trả lời:


16

Là một lập trình viên lâu năm đã sử dụng C ++ cho đến khi tôi chuyển sang C # /. Net, lời khuyên của tôi là không sử dụng C ++ để phát triển .Net. Trên thực tế, bạn không thể sử dụng C ++ thực để lập trình trong .Net nhưng một sự ghê tởm microsoft có tên C ++ / CLI với sự xấu xí không được tìm thấy trong ISO C ++. Tôi muốn nói chỉ từ quan điểm dễ đọc C ++ / CLI hoàn toàn không nên được xem xét. Bạn có muốn sử dụng _gc, gcnew, vv
Ngoài ra cho mục đích thực tế bạn sẽ không tìm thấy nhiều mẫu mã, hướng dẫn, blog vv sử dụng C ++ / CLI, cũng không phải bạn sẽ tìm thấy các lập trình viên biết hoặc sẵn sàng làm việc trong C ++ / CLI. Nó không phải là ngôn ngữ tự nhiên để phát triển .Net. C # / VB.Net / F # sẽ tiếp tục thay đổi nhanh hơn nhiều với các tính năng mới so với C ++ / CLI.


C ++ với các lớp được quản lý là thảm hại nhưng C ++ / CLI tốt hơn rất nhiều. Tôi không mua bit "ngôn ngữ tự nhiên" vì thực sự không khó để lập trình viên C ++ học C ++ / CLI. Ít nhất nó không dành cho tôi. Không trừ khi bạn phụ thuộc rất nhiều vào các mẫu mã để mã hóa. Và Microsoft không bao giờ có nghĩa là để tiêu chuẩn C ++ / CLI trở thành đối thủ cạnh tranh với tiêu chuẩn C ++ 0x mới. Chúng có nghĩa là cho hai điều khác nhau. Cho rằng C ++ / CLI đã tồn tại được 3-4 năm và tiêu chuẩn ISO mới đã sẵn sàng để phát hành, tôi nghĩ đó là điều hợp lý để MS làm.
DPD

2
C ++ / CLI phục vụ mục đích của nó tốt. Nó được thiết kế cho các lớp xen kẽ nhỏ giữa thế giới được quản lý và không được quản lý. Thật không khôn ngoan khi sử dụng nó cho bất cứ điều gì ngoài điều đó.
SK-logic

Vâng, tôi hiện đang sử dụng nó cho một dự án mới. Không cho khả năng tương tác, không bao bọc các thư viện bản địa, từ đầu. Vấn đề duy nhất tôi gặp phải là thời gian ban đầu cần để làm quen với cú pháp C ++ / CLI và khung Dot Net, mà tôi tin rằng, ít hơn nhiều so với thời gian để làm quen với C #. Vâng, mọi người đều có kinh nghiệm của riêng mình. Vì vậy, mỗi người đều có :-)
DPD

2
@DPD - Tôi không thấy loại dự án C ++ / CLI cho ASP.NET (MVC), LINQ, EF, ODATA, v.v. trong Visual Studio 2010. Vì vậy, ngay cả khi có thể làm như trên, sẽ không có công cụ nào hỗ trợ, thiếu tài liệu, v.v ... Vì vậy, tôi nghĩ rằng C ++ / CLI không phải là công dân hạng nhất trong thế giới .Net.
softveda

12

Ý tưởng của .Net là bạn có thể sử dụng bất kỳ ngôn ngữ nào bạn đã cảm thấy thoải mái và sử dụng nền tảng DotNet mà không phải học lại ngôn ngữ mới. Một cách nhìn vào nó là sự đảo ngược của kim tự tháp Java. Java có thể được giải thích là "hệ điều hành đơn ngôn ngữ đơn (IL)". dot net là "nhiều ngôn ngữ-một hệ điều hành-một hệ điều hành" (tất nhiên bit một hệ điều hành là không chính xác vì chúng tôi có Mono nhưng tôi không nghĩ đó là những gì Microsoft có trong tâm trí :-P).

Có C # có nghĩa là ngôn ngữ cho DotNet, nhưng không phải là "CHỈ". Microsoft có thể đã hy vọng sẽ khiến các lập trình viên C ++ chuyển sang C # trong thời gian dài, nếu không ngay lập tức. Nhưng điều đó dường như không xảy ra. C ++ vẫn là ngôn ngữ phổ biến thứ ba. Sự quen thuộc với một ngôn ngữ và nỗ lực cần thiết để chuyển một ứng dụng từ C ++ sang C # đã khiến hầu hết các nhà phát triển miễn cưỡng. Rốt cuộc, tại sao phải sửa cái gì đó không bị hỏng? Đó là lý do tại sao Microsoft đã đưa ra C ++ / CLI. Đó là một cách tuyệt vời để đưa các lập trình viên C ++ vào toa xe DotNet mà không phải học một ngôn ngữ mới. Tôi đã mất rất ít thời gian để làm quen với C ++ / CLI. Hạn chế duy nhất tôi thấy là ký hiệu con trỏ mới cho các lớp được quản lý có thể gây nhầm lẫn cho những người có hiểu biết yếu về con trỏ trong C ++. Không ảnh hưởng đến tôi mặc dù.


2
Hạn chế chính của C ++ / CLI là nó khác biệt đáng kể so với C ++ tiêu chuẩn, vì một số cấu trúc C ++ hoàn toàn không chuyển sang CLI. SK-logic cũng tuyên bố rằng nó không hoạt động trơn tru với .NET, vì vậy tôi khuyên bạn nên tránh nó.
David Thornley

9

Tôi không thấy lợi ích là gì. Lợi ích chính của C ++ là mã hiệu suất, mức độ thấp, khép kín / mã nguồn gốc. Khi bạn đang sử dụng môi trường được quản lý và tất cả hành lý mang theo, tôi không thể hiểu tại sao bạn không muốn một ngôn ngữ hiện đại hơn được thiết kế cho môi trường được quản lý.

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.