2009-08-06 36 views
8

Với tư cách là một người bắt chước C++, điều này thực sự đã làm tôi khó chịu. Tôi luôn thích ý tưởng về "khung độc lập về ngôn ngữ" mà Microsoft đã đưa ra với khoảng một thập kỷ trước. Tại sao họ lại bỏ bóng vào ý tưởng này? Có ai biết lý do đằng sau nó?Tại sao WPF không hỗ trợ C++. NET - cách WinForms hoạt động như thế nào?

+0

Tôi đoán là nhóm trình biên dịch C++ không được hỗ trợ và duy trì hai ngôn ngữ (C++ và C++/CLI) là quá nhiều gánh nặng. C++/CLI sẽ chết với VS11, và bạn sẽ viết các đối tượng COM với sự trợ giúp của các phần mở rộng trình biên dịch nhẹ, IMHO có nhiều tính năng (và .NET thân thiện như C++/CLI). Tôi thích một trình biên dịch chính xác cho một ngôn ngữ hơn là một trình biên dịch không có thật cho hai ngôn ngữ. –

Trả lời

4

Một phần lý do sẽ là hỗ trợ C++ thực ra là hai ngôn ngữ trong một - các biến thể gốc và CLI; rằng tải phát triển thêm đã được thừa nhận bởi đội Visual C++ là lý do mà việc tích hợp MSBuild thích hợp bị trễ (trễ? Tôi chưa kiểm tra trong năm 2008 hoặc sau này) đằng sau các ngôn ngữ khác.

Một phần khác sẽ liên quan đến việc tạo mã trong quá trình biên dịch diễn ra trong bản dựng C# để hỗ trợ ví dụ: ràng buộc "ma thuật"; Tôi đã tìm thấy rằng ngay cả trong F #, bạn không nhận được nó "chỉ xảy ra".

1

Nó cũng gây lỗi cho tôi, nếu họ đã hỗ trợ nó, chúng tôi có thể di chuyển mã C++ sang GUI mới dễ dàng hơn và rẻ hơn về cơ bản viết lại mọi thứ trong C#. Chi phí của chúng tôi là một tài sản để làm lại các ứng dụng của chúng tôi, chỉ là những gì chúng tôi muốn trong một cuộc suy thoái.

Tôi tưởng tượng lý do là C# là phổ biến (và không phải là nền tảng chéo như C++) nên họ đã quyết định giữ cho nỗ lực phát triển của họ ở mức tối thiểu bắt buộc.

2

Nếu đó là lý do của tôi thì C++ sẽ không được sử dụng để viết GUI.

Tôi không cố gắng để được snarky ở đây, có thể ai đó có thể cho tôi thấy lỗi của cách của tôi nhưng tôi không nghĩ rằng đó là một ý tưởng tốt. Tôi đang rối tung xung quanh với một ngay bây giờ và phát triển chậm hơn nhiều so với nếu ứng dụng đã được viết bằng C#. Cảm giác của tôi là nếu các tính năng trong C++ Net hoặc chỉ là C++ thông thường được yêu cầu cho ứng dụng, nó có vẻ như là một ý tưởng tốt hơn là tạo một DLL để thực hiện việc nâng hạng nặng và có thể giao tiếp với C#.

+2

đó đơn giản chỉ vì C# có tất cả những nỗ lực đưa vào nó để làm cho nó dễ dàng. Họ có thể làm điều đó với C++, nếu họ muốn. Họ chỉ không. – gbjbaanb

+0

Có lý do chính đáng nào không? –

+0

Có lý do chính đáng để có thời gian chạy đa ngôn ngữ không, nếu nó trở thành quá nhiều công việc để hỗ trợ lập trình GUI bằng tất cả các ngôn ngữ? –

0

Bạn có thể thực hiện WPF với C++ được quản lý.

Lý do là gần như tất cả lập trình ứng dụng mới hiện được thực hiện bằng JavaScript, Java, VB.NET hoặc C# - tất cả ngôn ngữ GC. Sự nhấn mạnh là chất lượng cao hơn cho một bộ kỹ năng thấp hơn và C++ đòi hỏi quá nhiều từ nhà phát triển, các công ty muốn mọi người viết mã lỗi đăng nhập vào ngày đầu tiên của họ.

C++ cho các ứng dụng chủ yếu để bảo trì các ứng dụng hiện có hoặc khi cần thực hiện hiệu năng cực đoan. Trình điều khiển thiết bị và hệ điều hành vẫn thường được viết bằng C++ nhưng ngay cả khi đang thay đổi (Coyotos là Cbit, E #, Cosmos/Mosa là C#, Singularity/Midori).

Các vấn đề liên quan