it-swarm-vi.com

Delphi vs C # để lập trình GUI

Tôi đến từ PHP và Python với ít kiến ​​thức về C, tôi đã thực hiện nhiều ứng dụng dựa trên web bây giờ Tôi đang nghĩ về ứng dụng Desktop cho windows nền tảng.

Một người bạn đã nói với tôi rằng hãy đến Delphi và những người khác đang nói C # là tốt nhất, điều mà tôi đang tìm kiếm là

  1. Sự đơn giản
  2. Năng suất
  3. Tài liệu API tốt
  4. Tốc độ
  5. Kéo và thả
  6. API đa luồng & API mạng tốt

Cảm ơn

20
elf1984

Delphi, chắc chắn:

  1. Tính đơn giản - Cú pháp của Delphi dựa trên Pascal, được thiết kế rõ ràng để dễ học, và nó có thể thực hiện theo lời hứa đó. C # dựa trên họ C, ... là không .
  2. Năng suất - Delphi là hậu duệ của Turbo Pascal và nó vẫn có trình biên dịch nhanh nhất mà con người biết đến, sẽ tăng năng suất của bạn rất nhiều. Thêm vào đó, trình gỡ lỗi Visual Studio mong muốn trình gỡ lỗi của nó sẽ như thế nào khi nó lớn lên. Đặc biệt trong phiên bản mới nhất của Delphi, việc gỡ lỗi dễ dàng hơn nhiều.
  3. Tài liệu API tốt - "API" là một từ khá mơ hồ ngày nay, bao gồm tất cả các loại. Tôi giả sử bạn có nghĩa là các thư viện, và đây là một loại tossup. Cả .NET framework và các thư viện chuẩn Delphi đều có tài liệu trực tuyến tốt và tài liệu ngoại tuyến tầm thường, khó sử dụng. (Hậu quả của nhóm Delphi chọn sử dụng hệ thống trợ giúp khủng khiếp tương tự như Visual Studio, mà họ hy vọng sẽ chuyển đi từ phiên bản tiếp theo.)
  4. Tốc độ - Delphi thắng dễ dàng. Nó biên dịch thành mã gốc (thực thi nhanh hơn và khởi động nhanh hơn nhiều vì không có pha JIT, và nó không sử dụng các con trỏ được quản lý để truy cập đối tượng nhanh hơn và ít bộ nhớ cache không thân thiện.
  5. Kéo và thả - Một tính năng tích hợp của VCL.
  6. Đa luồng - Delphi có một lớp luồng tích hợp, nhưng nếu bạn muốn làm những việc phức tạp với sự tương tranh thì có những lựa chọn tốt hơn. Primoz Gabrijelcic, một thành viên cộng đồng Delphi, đã làm việc trên một thư viện tương tranh tuyệt vời mà tôi đã giúp đóng góp. Nó cung cấp hỗ trợ cấp cao cho các mục tiêu phân luồng phổ biến như nhóm tác vụ, các vòng lặp FOR song song và các quy trình đường ống nhiều giai đoạn.
  7. API mạng tốt - Delphi giao hàng với Indy, một thư viện mã nguồn mở hoàn thiện giúp kết nối Internet dễ dàng thiết lập và quản lý. Chúng tôi sử dụng nó tại nơi làm việc để cung cấp lớp truyền thông cho một ứng dụng hàng đầu trong ngành mà bạn có thể chưa bao giờ nghe thấy trừ khi bạn làm việc trong phương tiện truyền thông phát sóng.
  8. Triển khai - Điều này không có trong danh sách của bạn, nhưng nó đáng được đề cập. Vẫn còn những hệ thống không cài đặt sẵn .NET framework. Theo mặc định, Delphi biên dịch thư viện chuẩn của nó vào EXE, sau đó sử dụng trình liên kết thông minh để xóa các phần bạn không sử dụng, dẫn đến các EXE nhỏ không phụ thuộc vào các thư viện thời gian chạy khổng lồ có trọng lượng hàng trăm MB mà người dùng của bạn sẽ có để tải về và cài đặt riêng.
20
Mason Wheeler

C # nói chung sẽ có cơ sở người dùng lớn hơn, phát triển hơn trong tương lai và các công cụ cho RAD phát triển thông qua Visual Studio là không thể tin được.

  1. Cú pháp sẽ tương tự như bạn đã sử dụng trong PHP và C.
  2. Visual Studio với các công cụ của nó và IntelliSense cực kỳ năng suất.
  3. MSDN
  4. Một lần nữa, các công cụ VS + Intellisense, nhưng tốc độ thực sự đến từ sự quen thuộc của ngôn ngữ và các tính năng của nó.
  5. Nhà thiết kế VS cho WinForms, WPF.
  6. System.Threading và System.Net

Tôi không có nhiều kinh nghiệm với Delphi và tôi chỉ nói về những trải nghiệm của tôi với C # nói chung. Ở nơi tôi làm việc, tôi có thời hạn cực kỳ chặt chẽ được hình dung bởi những người không phải là lập trình viên và tôi có thể bơm ra các ứng dụng máy tính để bàn kinh doanh cực kỳ nhanh chóng. Trong ba tuần qua, tôi đã đi từ đặc tả đến triển khai trên hai ứng dụng LOB winforms. Năng suất để phát triển GUI trong C # với VS thật điên rồ.

15
bunglestink

Cả hai đều có tất cả 6 điểm bạn muốn nhưng tôi cảm thấy C # có Edge trên hầu hết nếu không phải là tất cả.

Để đi qua các điểm:

  1. Delphi yêu cầu quản lý bộ nhớ, vì vậy bạn có thể lập luận rằng một mình làm cho C # đơn giản hơn. Cú pháp trả lời được chấp nhận ở đây, cú pháp C # tương tự cả hai PHP và Java, vì vậy nếu bạn muốn thức dậy và chạy nhanh hơn từ một trong hai nền tảng đó, thì C # có Edge.
  2. Năng suất, tôi nghĩ bạn sẽ hoàn thành công việc nhanh hơn trong C #. Thư viện .net cung cấp cho bạn rất nhiều mà trong những ngày xưa tồi tệ, tôi phải tìm đến các thành phần delphi của bên thứ 3 để cung cấp.
  3. Tài liệu, Delphi's luôn tốt, MSDN tốt hơn, cộng với việc bạn sẽ tìm thấy một cộng đồng lớn hơn để được hỗ trợ, hãy xem các câu hỏi về Stack Overflow của tôi bên dưới.
  4. Tốc độ, Delphi có thể có Edge về điều này, nhưng hội vượt qua tất cả vì vậy đó thường không phải là lý do chính đáng để chọn ngôn ngữ. Một điều tôi muốn chỉ ra là tôi đã nghe người ta trích dẫn rằng C # được giải thích. Nó không phải là, nó không bao giờ được, nó luôn luôn có một JIT.
  5. Kéo và thả, có sẵn trên cả hai.
  6. Đa luồng, Delphi là tốt nhưng C # là tuyệt vời với các cấu trúc xây dựng như lock(){} phần mở rộng song song và await mới.

Thêm một điểm nữa, tiêu đề câu hỏi là lập trình GUI, vì điều này tôi là một fan hâm mộ lớn của .Fets WPF, trong đó, điều duy nhất Delphi có gần một nửa là Bold , đó là một nỗi đau để chế ngự và bây giờ đã chết.

Kích thước cộng đồng, so sánh số lượng câu hỏi về điều này và Stack Overflow trên cả thẻ Delphi và C # bạn sẽ thấy rằng kích thước của cộng đồng C # lớn hơn nhiều.

Tràn ngăn xếp:

  • Delphi 17K
  • C # 367K
  • Java 312K
  • c 73K

Tôi đã thêm c, để cho thấy đó không phải là vấn đề với thời đại ngôn ngữ và Java chỉ để so sánh.

Tôi không phải là C # hoặc Java fan boy, tôi là một người hâm mộ Delphi lớn, nhà phát triển Delphi thuần túy chuyên nghiệp trong 7 năm, nhưng họ thực sự làm hỏng nó từ năm 2005 trở đi với sự đột phá xấu xa hơn .net đã làm tăng tính ổn định của IDE đối với quá trình biên dịch 32 bit gốc. Delphi 7 là đỉnh cao của ngôn ngữ theo quan điểm của tôi.

14
weston

Khi tôi ở uni, tôi được dạy lập trình với Delphi. Tôi hơi bất lịch sự, nhưng hiện tại tôi đang đọc qua rất nhiều mã Delphi để chuyển nó sang ứng dụng C #.

Tôi rất thích OO với các chức năng nghiêng của C # so với thủ tục với OO nghiêng của Delphi. Bạn nên xem xét cách bạn thích viết mã khi chọn giữa chúng. Tôi không nghĩ có nhiều thứ trong đó khi nói đến sự đơn giản - chỉ là những gì bạn thấy dễ dàng hơn. Cũng giống như năng suất.

Xét về RAD (phát triển ứng dụng nhanh) không có nhiều giữa winforms và thiết kế GUI Delphi. Chúng làm tôi nhớ đến nhau.

Mặt khác, WPF là thứ tôi thích hơn cả về phong cách khai báo của nó.

Tôi không nghĩ có nhiều sự khác biệt giữa chất lượng và phạm vi bảo hiểm của tài liệu do nhà cung cấp cung cấp cho C # hoặc Delphi. Tôi nghĩ rằng bạn sẽ tìm thấy nhiều thông tin không phải của nhà cung cấp về C #, nhưng điều đó có thể là do tôi chưa thực sự tìm kiếm nhiều theo cách của Delphi.

Tôi đã không phải thực hiện bất kỳ chương trình phân luồng nào với Delphi, và bất kỳ mạng nào tôi đã làm cách đây nhiều năm và tôi không thể nhớ.

Các thư viện .NET để xử lý song song, các sự kiện và công việc phân luồng khác là tốt. Vì vậy, bạn sẽ không bỏ lỡ ngoài đó. Có rất nhiều hỗ trợ khi kết nối mạng, vì vậy một lần nữa rất được khuyến khích.

Nhìn chung, tôi sẽ đi với C # /. NET. Điều này một phần là do WPF, nhưng tôi cũng thích mã tôi viết bằng C #. Theo như tôi biết thì delphi không có bất cứ thứ gì như Linq, thứ mà tôi thấy vô giá.

8
Matt Ellen