Ngôn ngữ lập trình D trong thế giới thực? [đóng cửa]


138

Có ai ở ngoài đó sử dụng D cho các ứng dụng trong thế giới thực không? Nếu vậy, bạn đang sử dụng nó để làm gì? Tôi dường như không thể tìm thấy bất cứ điều gì lớn trên web được viết bằng D.

Mặc dù thiếu người dùng lớn được biết đến, D dường như là một ngôn ngữ rất hứa hẹn với tôi, và theo TIOBE , nó khá phổ biến.


11
Gần đây được công bố trên các diễn đàn dlang , Facebook hiện đang sử dụng D trong sản xuất.
sghill

Không có gì lớn vì bản thân D khá kém khi xây dựng các ứng dụng phức tạp lớn. Bề ngoài trông rất tuyệt nhưng một khi bạn cố gắng làm bất cứ điều gì thương mại thì tất cả các vết nứt bắt đầu hiển thị và có rất ít mong muốn của các chàng trai hâm mộ để tạo ra phần mềm có cấu trúc phù hợp cho khán giả thương mại (Tôi chắc chắn có rất nhiều tiền để làm nó nhưng lãnh đạo và tổ chức cũng vậy. Đó là một điều để viết một tiện ích dòng lệnh hoặc thuật toán dòng 5k nhưng hoàn toàn khác nhau để tạo ra một ứng dụng kinh doanh rất phức tạp bao gồm nhiều lĩnh vực như gui, âm thanh, v.v.
Stretto

Chắc chắn bạn có thể hack một cái gì đó cùng nhau nhưng đó không phải là thương mại. Một doanh nghiệp sẽ không đầu tư thời gian / tiền bạc của họ vào một thứ gì đó quá dễ vỡ. Không có IDE phù hợp và mọi ứng dụng tôi đã sử dụng đều khiến tôi muốn làm hỏng một cái gì đó. Nó chậm hơn khoảng 10 lần để gỡ lỗi ứng dụng vì các thông báo lỗi rất tệ, trình gỡ lỗi không hoạt động hoặc chống lại bạn, các tính năng hiện đại mà chúng tôi mong đợi là không tồn tại hoặc nghèo nàn, và thư viện bị loại bỏ bởi vì nó không có cấu trúc logic (mọi thứ được di chuyển "tùy tiện", các sơ đồ đặt tên kỳ lạ như "chomp" và "detabber", v.v.
Stretto

Tôi đoán đó là âm / dương. Một số thứ trong D rất tuyệt vời và không có gì đến gần (nhưng) ... nhưng mặt khác, nó lại thất bại khá mạnh. Người ta chỉ tìm thấy những điều đó khi họ thực sự dành thời gian để viết các ứng dụng thực sự chứ không phải làm những thứ tầm thường hoặc thuật toán. Cho đến khi tổ chức D nhận được nó cùng nhau (họ sẽ mất bao lâu? 10, 20 năm?) Các doanh nghiệp thực sự sẽ không đầu tư vào nó. Thời gian là tiền bạc và không doanh nghiệp nào muốn mất 10 lần để gỡ lỗi một ứng dụng vì IDE không phải là để hít vào.
Stretto

@Stretto có nghĩa là gì? dlang.org/orgs-USE-d.html
Bauss

Câu trả lời:


77

Tôi đang sử dụng D cho công việc nghiên cứu của mình trong lĩnh vực đồ họa máy tính. Tôi và những người khác đã có các bài báo được xuất bản trong các lĩnh vực của chúng tôi dựa trên công việc được thực hiện bằng cách sử dụng D. Tôi nghĩ rằng nó chắc chắn đã sẵn sàng để sử dụng cho các dự án nghiên cứu quy mô vừa và nhỏ trong đó vấn đề hiệu suất. Nó rất phù hợp cho công việc nghiên cứu vì dù sao bạn thường bắt đầu từ đầu, vì vậy bạn không có nhiều mã kế thừa để lo lắng về việc tích hợp.

Một lĩnh vực phổ biến khác để sử dụng dường như là các dịch vụ web. Hy vọng ai đó có thể nhận xét ai trong không gian này, nhưng tôi cũng nghĩ rằng ý tưởng là hiệu suất thường thực sự quan trọng nên bạn muốn có một ngôn ngữ được biên dịch thành kim loại. Các dịch vụ thường khá nhỏ, các quy trình khép kín, do đó, việc xen kẽ với số lượng lớn mã C ++ kế thừa là không thực sự cần thiết hoặc hữu ích. Do đó, D có thể đặt chân vào cửa.

Tôi nghĩ rằng D sẽ tiếp tục có được những người theo dõi cơ bản theo cách này - trong các dự án nhỏ hơn vì bất kỳ lý do gì có thể bỏ qua di sản C ++ để có được ngôn ngữ lập trình thú vị hơn khi sử dụng và có lẽ cũng hiệu quả hơn.

Nhưng cho đến khi có một số lượng lớn người dùng cơ sở, tôi sẽ không nghi ngờ gì nhiều về người dùng doanh nghiệp lớn.


10
Tôi phát triển các ứng dụng khách / máy chủ hoàn toàn bằng D với một số ràng buộc với thư viện C, nhưng chỉ dành cho phần GUI của máy khách cho một trong những dịch vụ phổ biến hơn ở Hà Lan. Mặc dù tôi đã phải thuyết phục ông chủ của mình, nhưng anh ta dường như không hối tiếc. ;-) - D đặc biệt tỏa sáng ở đây vì thư viện tiêu chuẩn cung cấp việc triển khai các socket BSD, ngay cả trên Windows. Viết một lần, triển khai ở mọi nơi, rất hay.
Thương hiệu Jesse

@JlieBrands Bạn có sử dụng phobos hoặc tango không?
qed

88

Tôi làm công việc tin sinh học ở D. Đối với tôi, điều quan trọng nhất ở D là nó cần một cách tiếp cận rất cấp độ để đánh đổi và nhận ra nguyên tắc giảm lợi nhuận.

Không giống như C ++, tuân thủ nghiêm ngặt nguyên tắc không chi phí, D cho phép các tính năng có thể có chi phí hiệu năng / không gian nhỏ nếu chúng làm cho ngôn ngữ trở nên hữu dụng hơn rất nhiều. Chúng bao gồm bộ sưu tập rác, một đối tượng giám sát cho từng lớp, thông tin loại thời gian chạy, v.v.

Không giống như Ruby, Python, PHP, v.v., D cố gắng nhanh như C, ngay cả khi nó kém năng động hơn và khó lập trình hơn một chút so với các ngôn ngữ script.
Kết quả là một ngôn ngữ là tối ưu khi cả thời gian phát triển và thời gian thực hiện đều quan trọng như nhau, trong lĩnh vực của tôi hầu hết là thời gian.

Tương tự như vậy, D có một cách tiếp cận rất cấp độ để an toàn và linh hoạt. Nó giả định rằng các lập trình viên về cơ bản biết họ đang làm gì, nhưng lại phạm sai lầm.

Không giống như C và C ++, nó giả định rằng bạn không muốn sử dụng con trỏ, phôi không an toàn, quản lý bộ nhớ thủ công, v.v., ở mọi nơi trong mã của bạn, vì chúng dễ bị lỗi và giả sử rằng bạn không muốn lọc qua nhiều thông báo lỗi mẫu -page khi bạn bắt vít chỉ để sử dụng các mảng có thể thay đổi kích thước.

Không giống như Java và các ngôn ngữ ràng buộc và kỷ luật khác, D giả định rằng đôi khi con trỏ, phôi không an toàn, quản lý bộ nhớ thủ công, v.v ... là một điều ác cần thiết và cho rằng bạn đủ thông minh để xử lý các mẫu thực, quá tải toán tử, v.v. mã bị xáo trộn. Nó cũng giả định rằng bạn có thể làm hỏng và truy cập một mảng ngoài giới hạn, nhưng lập trình viên biết rõ nhất nên đánh đổi giữa an toàn và tốc độ trong bất kỳ tình huống nào. Do đó, việc các mảng có giới hạn được kiểm tra hay không chỉ được xác định bởi một trình chuyển đổi trình biên dịch.


2
Một đối tượng màn hình là gì? Tôi dường như không thể tìm thấy kết quả cho việc này.
Samaursa

2
Tôi yêu ngôn ngữ D rất nhiều so với C ++. Thời gian biên dịch nhanh hơn, khả năng sử dụng ít mã hơn, không có tệp tiêu đề, v.v. Tuy nhiên, vấn đề là nó thiếu bất kỳ ai làm GUI nghiêm trọng. Chắc chắn, tôi có thể sử dụng GtkD, nhưng hãy thử và vẽ một loạt các biểu đồ ưa thích. Tôi thấy công việc đầy hứa hẹn trong việc tích hợp với Chromium cho GUI, nhưng dự án đó phần lớn không có giấy tờ và cần nhiều người chơi hơn trong không gian đó. Tôi hy vọng điều đó sẽ thay đổi, nhưng đó là những gì tôi thấy ở đây vào tháng 9 năm 2015.
Volomike

Màn hình đối tượng là nhảm nhí **. Nó khóa toàn bộ phương thức, nó thực sự rất lãng phí ...
dev1223

@Volomike Gần đây tôi cũng đã xem xét D và tương tự, thật khó để tạo ra các công cụ giao diện đồ họa với nó. Hiện tại tôi không có bất kỳ giải pháp defacto nào để tạo các công cụ GUI thanh lịch với D và đó là điều tôi có thể bắt đầu giải quyết sớm.
dimiguel

32

Tôi biết một công ty nhỏ đã gửi một sản phẩm máy chủ mail ra thị trường. Họ đã có ít nhất 2 người làm việc toàn thời gian cho dự án.

Ngoài ra, một người chơi chính trong doanh nghiệp CNTT có một số nhân viên sử dụng D trong các dự án nội bộ lớn hơn.

Hơn nữa tôi biết một công ty đang tìm kiếm nguồn vốn liên doanh, một số (ít nhất 4) nhân viên trong các công ty nhỏ hơn sử dụng D một phần hoặc toàn thời gian, và ít nhất một cặp vợ chồng (bao gồm cả tôi) tích cực tìm kiếm cơ hội trong thị trường tư vấn.

Có lẽ tôi đã bỏ qua một vài điều mà tôi nên biết, và có lẽ một số tôi chưa từng nghe nói đến, nhưng điều đó vẫn tồn tại, vì những điều trên ít nhiều là những gì tôi biết về bản thân mình thông qua cộng đồng.

Một tỷ lệ nhỏ thu nhập hiện tại của tôi đến từ D.


Bạn có thể vui lòng đề cử các tổ chức? Nó cũng sẽ là tốt đẹp để biết thêm về các dự án này.
nbro

28

Tôi sử dụng D để phát triển web và nó tỏ ra hiệu quả hơn rất nhiều so với C / C ++. Tất nhiên, có rất nhiều khung dựa trên ruby ​​/ php / python. Nhưng khi bạn muốn phát triển một thứ gì đó độc đáo cũng phải nhanh như C và dễ dàng lập trình như bạn làm trong nhiều ngôn ngữ kịch bản, thì D là một lựa chọn tốt.


3
Tôi xin hỏi? Khung hoặc thư viện nào để bạn sử dụng?
Zelenova

26

Tôi sử dụng D cho một phần cứng trong môi trường kiểm tra vòng lặp (HIL). Đây là để kiểm tra phần mềm trong khu vực ô tô. D có thể được sử dụng ở đây, vì là ngôn ngữ lập trình hệ thống, có thể được sử dụng trong các chương trình thời gian thực (trình xử lý IRQ trong RTAI-LXRT mở rộng thời gian thực của linux).

Với cổng SWT / JFace đang diễn ra, tôi dự định sẽ làm nhiều hơn và làm việc trong D mà tôi đã được thực hiện trong Java trước đây.



19

Tôi đang sử dụng D trong nghiên cứu về biên dịch mã thời gian. Tạo khuôn mẫu nâng cao kết hợp với bộ dữ liệu và mixin giúp cho việc dịch mã dễ dàng hơn nhiều và cho phép thực hiện dịch mã trong thời gian biên dịch mà không cần một công cụ riêng.

Có một số ví dụ về các nhà vật lý sử dụng D để tăng cường các chương trình của họ với lập trình meta trong D.

video - Hội thảo nói chuyện, không thể tìm thấy trang web nguồn sử dụng vật lý.


Một dự án tương tự về mặt phân loại của tôi, cũng trong D dsource.org/projects/scrapple/browser/trunk/dparser/dparse.d
BCS

17

Toàn bộ cơ sở hạ tầng mạng (lưu lượng truy cập cao) của chúng tôi chỉ dựa trên D1 và tango. Chúng tôi là một công ty khởi nghiệp trẻ ở Berlin: sociomantic.com


14

Nhiệm vụ công việc hiện tại của tôi là một hệ thống để dịch C # sang D. Đây là một phần của dự án vì lợi nhuận để phát triển hệ thống phần mềm.




7

Rất nhiều game do ABA Games phát hành được viết bằng D 1.x, mặc dù tôi tưởng tượng các cổng console phải được viết lại trong C ++.

Tôi đã viết khá nhiều nguyên mẫu trò chơi trong D, nhưng tôi không chắc liệu nó có đủ điều kiện là 'thế giới thực' hay không vì tôi đã viết chúng vì lợi ích của riêng mình và chưa bao giờ phát hành bất kỳ trong số chúng.


Bạn có thể vui lòng cụ thể hơn về những trò chơi đã được tạo bằng D không?
nbro

7

Tôi đã viết (và tôi vẫn đang duy trì và phát triển) một phần mềm để chuyển đổi các giao thức thử nghiệm từ các trạm kiểm thử phần cứng khác nhau sang định dạng đầu ra được tiêu chuẩn hóa để truy xuất nguồn gốc và những thứ tương tự.

Tất cả cùng nhau trên 5k dòng mã, được viết bằng D 1.x và thư viện Phobos.

D rất dễ học và bỏ qua một số cạm bẫy (trong thư viện Phobos) một niềm vui thực sự để lập trình.


6

Tôi đã sử dụng D cho dự án nghiên cứu của mình về phát triển thuật toán tối ưu hóa toàn cầu. Tôi đã áp dụng nó cho vấn đề đào tạo mạng lưới thần kinh. Tùy thuộc vào bạn cho dù bạn muốn gọi đây là "thế giới thực".


Là mã nguồn hoặc một số thông tin có sẵn liên quan đến những gì bạn đã làm?
nbro


6

Tôi sử dụng D2, tiêu chuẩn thứ hai của phiên bản. Tôi đã viết các ứng dụng thời gian thực (ví dụ: công cụ 3D).

Ngôn ngữ ngày càng mạnh mẽ hơn mỗi ngày. D là rất thực dụng và tất cả các tính năng nhúng, đặc biệt là mô hình siêu lập trình, làm cho nó vượt xa C ++, theo ý kiến ​​của tôi. Cú pháp rõ ràng hơn, bạn có thể sử dụng sức mạnh của lập trình chức năng thông qua các chức năng như bộ lọc hoặc rút gọn và một trong những tính năng quan trọng nhất: bạn có thể sử dụng tất cả các lib của C.

Chắc chắn là ngôn ngữ yêu thích của tôi và tôi khá chắc chắn đó sẽ là ngôn ngữ được sử dụng.


Có thể xem mã nguồn của thứ gì đó mà bạn đã tạo bằng D không?
nbro

Đã được một thời gian kể từ khi nhận xét đó! Bây giờ tôi đang viết mã ở Rust và Haskell, nhưng tôi có một vài dự án. Tôi có một số thứ trên github của mình, nhưng tôi không nghĩ rằng nó đáng để đào nó. Nhận xét đó là 4 tuổi! Tôi nên xem tình trạng hiện tại của tất cả các trận đấu này
phaazon

4

Tôi cho rằng chúng ta có thể đọc được điều gì đó khi thiếu câu trả lời ngay lập tức cho câu hỏi này và đó là không có nhiều / bất kỳ câu trả lời stackoverflow acive nào đang sử dụng D. Tôi cũng hơi ngạc nhiên về mức độ xếp hạng của nó trong danh sách TIOBE mà bạn liên kết đến.

Phải nói rằng, Walter Bright đã làm việc về ngôn ngữ trong một số năm nay và tôi nghĩ rằng anh ta có khá nhiều 'người theo dõi', những người nhớ công việc tốt mà anh ta đã làm với trình biên dịch Zortech C ++ hồi những năm 90. Tôi cũng lưu ý rằng ngôn ngữ dường như đang nghiêng về hướng chức năng.


3
Trên thực tế không thể tìm kiếm D trên trang web này ngay bây giờ. Tìm kiếm "d" hoặc "d lập trình" cho biết "không có lượt truy cập" và tìm kiếm trên các thẻ cho "d" liệt kê một trang các thẻ có chứa "d" nhưng không có "d". Vì vậy, có thể có một cái gì đó để làm với nó quá.
Baxissimo

20
tìm kiếm [d] trong hộp tìm kiếm để lấy thẻ dựa trên tìm kiếm.
Gregg Lind

2

Trang web chính thức của D liệt kê các tổ chức hiện đang sử dụng D.

http://dlang.org/orgs-USE-d.html

Các wiki D cũng cung cấp một danh sách các tổ chức, nhưng nó lỗi thời.

Chỉ cần xem kỹ các cuộc đàm phán của DConf .

Hầu như tất cả những người ở đó làm việc cho một số công ty, và họ sử dụng D tại nơi làm việc.


0

Tôi đang bắt đầu một dự án để viết lại một số công cụ nội bộ của chúng tôi từ Perl đến D. Tôi đã chọn D vì tôi khá hào hứng với các triết lý thiết kế của ngôn ngữ. Tôi đã lập trình trong một thời gian dài và sử dụng rất nhiều ngôn ngữ, từ trình biên dịch đến trình độ cao (chủ yếu là C) đến ngôn ngữ kịch bản (chủ yếu là Perl), và D là ngôn ngữ đầu tiên tôi say mê học hỏi trong nhiều năm .

Tôi quyết định chuyển sang một ngôn ngữ được biên dịch vì một lý do chính - bảo mật. Về mặt chức năng, Perl hoạt động khá tốt cho bộ công cụ tôi làm việc, nhưng nó không an toàn - bất kỳ ai có thể chạy tập lệnh cũng có thể đọc, sao chép và tạo phiên bản công cụ sửa đổi của riêng họ. (Và họ cũng vậy.) Tôi biết có nhiều phương pháp hữu ích để giải quyết vấn đề này (nhưng) thành thật mà nói tôi không có đủ thời gian trong ngày để quản lý tất cả những điều đó và vẫn hoàn thành công việc chính của mình.


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.