Delphi vs C # để lập trình GUI [đã đóng]


20

Tôi đến từ nền tảng 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 nền tảng windows.

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

Câu trả lời:


20

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 gia đình C, mà ... à ... 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, điều này sẽ giúp tăng năng suất của bạn rất nhiều. Thêm vào đó, nó có trình gỡ lỗi Visual Studio mong muốn trình gỡ lỗi của nó sẽ giống như 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 thân thiện hơn với bộ nhớ cache.
  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 đồng thời 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.

2
@Elf: Có thể có nhiều công việc C # hơn, nhưng cũng có nhiều người cạnh tranh với họ hơn. Các nhà phát triển Delphi có kỹ năng không gặp khó khăn gì trong việc tìm kiếm công việc.
Mason Wheeler

5
C # không chỉ dựa trên C ++, mà còn dựa trên Delphi và Java. Tôi cũng đã học lập trình trong Pascal và tôi thấy rất nhiều triết lý của nó trong C #. Về các con trỏ được quản lý mà bạn có được điều đó ngược, không có dữ liệu truy cập trên cao thông qua các con trỏ được quản lý và việc thay đổi chúng nhanh hơn trong một hệ thống sử dụng tính tham chiếu.
Guffa

12
Cú pháp Delphi dễ học là một tuyên bố hoàn toàn chủ quan. Tôi đã tức giận vì cú pháp Delphi và quyết định không học nó vì lý do đó.
Tjaart

8
-1: Câu trả lời này thiên vị như điên. Trình gỡ lỗi Visual Studio ít nhất là tốt nếu không tốt hơn Delphi. Tài liệu Delphi không tồn tại so với MSDN là tài liệu tốt nhất từ ​​trước đến nay.
marco-fiset

4
Triển khai - tổng thất bại. Deplhi yêu cầu Windows, vì vậy đó là một bước lùi từ C #. C # là di động và đa nền tảng nhờ Mono. Delphi thì không. Bạn không cần mua Windows để chạy chương trình được viết bằng C # không sử dụng rõ ràng các thư viện Win32. Đơn giản - cũng thất bại. Cú pháp của C # rất dễ đọc, rất súc tích và dễ viết. Delphi thì không. Tài liệu API - địa ngục không! Nếu tôi viết "dịch vụ web C #", tôi nhận được vô số kết quả có liên quan. Không có những thứ như vậy cho Delphi. Tốc độ, luồng, đặc biệt là trình gỡ lỗi - cũng sai.
TheLonelyCoder

15

C # nói chung sẽ có một 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ụ để phát triển RAD 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ồ.


4
Cảm ơn, theo một bài đăng tại daniweb.com/forums/thread54305.html , sự tích hợp và hoàn thiện API Win32 trong Delphi thậm chí còn vượt qua cả C
elf1984

2
bạn thực sự nên xem xét Delphi nếu bạn nghĩ rằng C # là môi trường phát triển cuối cùng để tạo các ứng dụng máy tính để bàn nhanh. Cá nhân tôi ghét nó khi tôi phải tạo ra các công cụ máy tính để bàn với studio hình ảnh, nhưng ngày nay tôi không luôn có sự lựa chọn (thật không may).
Wouter van Nifterick

1
Các công cụ RAD (thiết kế biểu mẫu) của Visual Studio rất hấp dẫn.
Warren P

1
@WarrenP Bạn có thể vui lòng giải thích?
Tjaart

1
Tạo ứng dụng máy chủ trong C # và Tạo ứng dụng máy tính để bàn trong Delphi, vì delphi tạo mã gốc khó bị bẻ khóa hơn!
justyy

14

Cả hai đều có tất cả 6 điểm bạn muốn nhưng tôi cảm thấy C # có lợi thế nhấ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ự như cả 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ó lợi thế.
  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ó lợi thế về vấn đề này, nhưng lắp ráp hơn hẳn, đó 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 xây dựng trong các cấu trúc như lock(){}phần mở rộng song song và mới await.

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à 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 rằng đó không phải là vấn đề với thời đại ngôn ngữ và Javachỉ để so sánh.

Tôi không phải là một người hâm mộ C # hay Java, 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á mạnh mẽ hơn vào .net đã làm tăng sự ổn định của IDE để 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.


Làm thế nào về một trả lời với downvote đó?
weston

1
Tôi không phải là người hạ cấp, nhưng tôi sẽ nói rằng bạn không trả lời câu hỏi. Bạn chỉ đang đánh giá mức độ phổ biến của Delphi trên stackoverflow. Bạn chắc chắn làm cho một điểm, nhưng đó là IMHO khá nhỏ. Trở thành người duy nhất sử dụng công nghệ không phải lúc nào cũng là điều xấu.
Simon Bergot

@Simon điểm công bằng, giờ đây tôi đã trả lời tất cả các điểm và tích hợp phân tích số lượng câu hỏi thành một điểm rộng hơn về quy mô cộng đồng.
weston

Có thể lập luận rằng ngôn ngữ dẫn đến nhiều câu hỏi phức tạp hơn để sử dụng. ;-) Bold tương tự như WPF như thế nào? Tôi đã sử dụng WPF và không thấy bất kỳ điểm tương đồng nào.
Jim McKeeth

@JimMcKeeth Cả Bold và WPF đều cung cấp khung để liên kết dữ liệu với các điều khiển UI để khi dữ liệu thay đổi, UI sẽ cập nhật và ngược lại nếu được yêu cầu.
weston

8

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 # hơn các thủ tục với OO của Delphi. Bạn nên xem xét cách bạn thích viết mã khi lựa 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. Năng suất cũng vậy.

Về mặt RAD (phát triển ứng dụng nhanh) không có nhiều giữa winforms và thiết kế GUI Delphi. Họ nhắc tôi về 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ỡ ở đó. 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ó gì giống như Linq, thứ mà tôi thấy vô giá.


Cảm ơn bạn đã trả lời tuyệt vời của bạn. cuốn sách nào bạn đã đọc khi mới bắt đầu? bây giờ tôi sẽ bắt đầu C # 4 và .NET 4 trên VS 2010
elf1984

4
Coi chừng cố gắng chuyển một ứng dụng Delphi sang C #. Mỗi lần tôi nghe về bất kỳ công ty nào dùng thử, họ đều xác nhận mọi điểm mà Joel đưa ra trong "Những điều bạn không nên làm, Phần 1" và nó đã kết thúc trong thảm họa cho sản phẩm và công ty sở hữu nó.
Mason Wheeler

Xin lỗi, tôi thực sự không thể tư vấn cho bạn về một cuốn sách dành cho người mới bắt đầu cho c # 4. Tôi không chắc là tôi đã có một cái khi tôi bắt đầu c # (trở lại sau 1.1 ngày. Tôi chắc chắn có một số, nhưng tôi đã không đọc nó). Khi tôi bắt đầu, tôi nghĩ cuốn sách đầu tiên tôi sử dụng là Dạy cho bản thân C ++ trong 21 ngày của Jesse Liberty, mà tôi đã đọc trước khi tôi bắt đầu uni. Tôi mất nhiều thời gian để vượt qua nó, nhưng tôi đã học được rất nhiều. Một cuốn sách hay khác mà tôi có là Discover Delphi, đó là cuốn sách dành cho khóa học. Một cuốn sách tôi giới thiệu là Tư duy đối tượng của David West, vì nó thực sự khiến bạn phải suy nghĩ về OOP và OOD, cũng là C # hiệu quả của Bill Wagner ...
Matt Ellen

... Họ không thực sự là người mới bắt đầu cuốn sách, nhưng một khi bạn có những nguyên tắc cơ bản thì họ có những lời khuyên và lời khuyên tuyệt vời về cách trở thành một lập trình viên tốt hơn.
Matt Ellen

BTW nếu bạn đang tìm kiếm LINQ trong Delphi, hãy xem thư viện DeHL của Alexandru Ciobanu. Nó cung cấp các bộ sưu tập và toán tử kiểu LINQ. Cú pháp LINQ (công cụ giả SQL) chưa có trong Delphi, nhưng rõ ràng nhóm trình biên dịch đang làm việc với nó để phát hành trong tương lai.
Mason Wheeler
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.