Tôi đã dành một vài ngày chơi với D để xem nó so sánh với C++ và java như thế nào. Nó được định vị như một cách khác để đạt được những điều tương tự như C++, nhưng không có tất cả các hành vi không xác định, và với việc bổ sung một bộ thu gom rác, vòng lặp foreach, và một số niceties hiện đại khác. Nó biên dịch mã gốc để bạn có thể truy cập vào tất cả các tối ưu hóa thông thường có thể xảy ra từ kịch bản này.
Toàn bộ ngôn ngữ C được đóng gói dưới dạng tập hợp con của D làm khối xây dựng cấp thấp hơn mà phần lớn ngôn ngữ được tạo. Điều này có thể giúp với tính di động, nhưng cũng ngăn cản D phát triển thành một phương pháp nhất quán duy nhất.
Khả năng chạy bất kỳ chức năng C tự nhiên trong D mở ra lĩnh vực khả năng bao gồm hệ thống lập trình - hệ điều hành, trình điều khiển, vv
Có hai khuôn khổ lớp học thường được sử dụng trong D. Giá trị mặc định là Phobos , đó là thiết kế khá đơn giản và dễ sử dụng, cho phép bạn tạo ra các cấu trúc bạn cần, nhưng cung cấp một vài khối xây dựng lớn hoặc phức tạp. Cái còn lại là Tango, gợi nhớ đến thư viện lớp java và chứa một khuôn khổ hoàn chỉnh hơn nhiều. Ngoài ra còn có một dự án cho phép khả năng tương tác của hai thư viện.
Theo kinh nghiệm của mình, D là ngôn ngữ khá tốt để viết mã, có nhiều điểm chung với C# và java, và cho phép truy cập vào máy móc thô thông qua C và thậm chí lắp ráp interop. Giới hạn chính mà tôi thấy là thiếu sự hỗ trợ công cụ phát triển tốt. Có một số IDE và plugin ngoài kia, nhưng không có gì hoàn chỉnh, vì vậy bạn có thể tốt hơn với trình soạn thảo văn bản và công cụ tạo dòng lệnh trong thời gian chờ đợi.
Có hai phiên bản ngôn ngữ, D1 và D2. D1 được hỗ trợ tốt hơn bởi các khung công tác và trình biên dịch hiện tại và D2 đã bổ sung thêm một số tính năng tiện lợi giúp ngôn ngữ dễ xử lý và sử dụng hơn.
Cập nhật (tháng 6 năm 2009): tôi gần đây đã được nhìn vào D một lần nữa và nghĩ rằng tôi nên chú ý đến DSource, mà bây giờ có một số dự án biên dịch khác nhau, và là nơi cư trú của thư viện Tango, khác nhau các ràng buộc, một số bộ công cụ GUI và một vài IDE. Một số dự án đã bị bỏ rơi trong giai đoạn trứng nước của họ, nhưng tôi tin rằng có một số khá mạnh mẽ ngày hôm nay, và tiến bộ tốt. Ở giai đoạn này, có vẻ như sự thành công của D sẽ được xác định bởi phong trào nguồn mở nhiều hơn so với các tổ tiên của nó.
Cập nhật (tháng 2 năm 2012) Trong khi tôi đã không nhìn nhiều tại D kể từ khi chỉnh sửa cuối cùng của tôi, tôi sẽ lưu ý rằng D2 là ra ngay bây giờ, với sự hỗ trợ của một cuốn sách tuyệt vời, The D Programming Language. Điển hình của Alexandrescu, nó cho thấy rất nhiều chi tiết của hệ thống mẫu, bao gồm các ràng buộc mẫu, làm cho D trở thành một công cụ biểu cảm và an toàn hơn nhiều so với trạng thái hiện tại của C++.
Khác với việc đọc sách, tôi không có liên hệ với ngôn ngữ D hoặc các công cụ và cộng đồng của nó kể từ năm 2009 vì vậy tôi không thể nhận xét về sự trưởng thành hoặc tăng trưởng của chúng cho đến nay.Tôi nhận thức được một cán bộ lập trình viên chuyên nghiệp nhỏ muốn họ được phép sử dụng ngôn ngữ tại nơi làm việc, nhưng hầu hết chúng ta thường bị mắc kẹt với C++ và các ngôn ngữ phổ biến khác trong các lĩnh vực mà D nên ở mức tốt nhất.
Đó là giá trị học tập bởi vì nó có một số tính năng thú vị nhưng không đáng để đầu tư để viết các ứng dụng thế giới thực bởi vì công cụ và thư viện là crap. Nó chỉ không được tổ chức tốt và quá nhiều vấn đề tinh tế với những thứ lãng phí nhiều thời gian hơn một người nhận ra. Không có doanh nghiệp nào muốn điều đó. Tôi nghĩ nhiều người có thể cảm nhận tiềm thức rằng đó là một loại giun. Nó giống như mua một porche trực tuyến cho 10k trông tuyệt vời và chạy tuyệt vời ... nhưng khi bạn lái nó trong một tháng bạn bắt đầu nhận thấy những thứ không chạy đúng ... sau đó, cuối cùng, mọi thứ bắt đầu sụp đổ. – Stretto
Tôi nghĩ rằng việc sử dụng tốt nhất cho D là thực hiện các thuật toán và công cụ cấp cao nhất định không lớn hoặc được kết nối với nhau, sau đó sử dụng chúng từ các ngôn ngữ khác. Bằng cách này, người ta chi tiêu ít hơn trong D nhưng có thể sử dụng các tính năng mạnh mẽ hơn một cách thuận lợi hơn. Thật không may, điều này là khó khăn vì interop giữa nó và các ngôn ngữ khác (Bạn sẽ kết thúc bằng văn bản trong C chứ không phải là C++ vì các mẫu không dịch giữa hai ... mặc dù có thể có thể khắc phục điều đó với một số hàm đóng gói hoạt động tốt). – Stretto