Delphi vs C # do programowania GUI [zamknięte]

20

Pochodzę z PHP i języka Python z niewielką znajomością C, zrobiłem wiele aplikacji internetowych, teraz myślę o aplikacji Desktop na platformę Windows.

Znajomy powiedział mi, żebym poszedł po Delphi, a inni mówią, że C # jest najlepszy, cóż, to czego szukam

  1. Prostota
  2. Wydajność
  3. Dobra dokumentacja API
  4. Prędkość
  5. Przeciągnij i upuść
  6. Wielowątkowość i Good Network API

Dzięki

elf1984
źródło

Odpowiedzi:

20

Delfy, zdecydowanie:

  1. Prostota - składnia Delphi oparta jest na Pascalu, który został wyraźnie zaprojektowany, aby był łatwy do nauczenia i może spełnić tę obietnicę. C # opiera się na rodzinie C, która ... no cóż ... nie była .
  2. Produktywność - Delphi jest potomkiem Turbo Pascala i nadal ma najszybszy kompilator znany człowiekowi, co ogromnie zwiększy Twoją wydajność. Plus ma debugger Visual Studio marzy o tym, żeby debugger był taki, jak dorośnie. Debugowanie jest znacznie łatwiejsze, zwłaszcza w najnowszej wersji Delphi.
  3. Dobra dokumentacja API - „API” jest obecnie dość nieokreślonym słowem, obejmującym wiele różnych rzeczy. Zakładam, że masz na myśli biblioteki, a tutaj jest to trochę sprzeczka. Zarówno platforma .NET, jak i standardowe biblioteki Delphi mają dobrą dokumentację online i mierną, trudną w użyciu dokumentację offline. (Konsekwencją tego, że zespół Delphi zdecydował się użyć tego samego okropnego systemu pomocy, co Visual Studio, które, mam nadzieję, odejdą w następnej wersji).
  4. Szybkość - Delphi wygrywa łatwo. Kompiluje się do kodu natywnego (szybsze wykonywanie i znacznie szybsze uruchamianie, ponieważ nie ma fazy JIT) i nie używa zarządzanych wskaźników, więc dostęp do obiektów jest szybszy i mniej nieprzyjazny dla pamięci podręcznej.
  5. Przeciągnij i upuść - wbudowana funkcja VCL.
  6. Wielowątkowość - Delphi ma wbudowaną klasę wątków, ale jeśli chcesz robić skomplikowane rzeczy za pomocą współbieżności, istnieją lepsze opcje. Primoz Gabrijelcic, członek społeczności Delphi, pracuje nad doskonałą biblioteką współbieżności , w którą pomogłem. Zapewnia obsługę wysokiego poziomu dla typowych celów wątków, takich jak pula zadań, równoległe pętle FOR i wieloetapowe procesy potokowe.
  7. Dobry interfejs sieciowy - Delphi jest dostarczane z Indy, dojrzałą biblioteką typu open source, która ułatwia konfigurowanie i zarządzanie połączeniami internetowymi. Używamy go w pracy, aby zapewnić warstwę komunikacyjną dla wiodącej w branży aplikacji, o której prawdopodobnie nigdy nie słyszałeś, chyba że pracujesz w mediach nadawczych.
  8. Wdrożenie - tego nie było na twojej liście, ale warto o tym wspomnieć. Nadal istnieją systemy, które nie mają wstępnie zainstalowanego środowiska .NET. Domyślnie Delphi kompiluje swoją standardową bibliotekę do EXE, a następnie używa smartlinkera do usuwania części, których nie używasz, w wyniku czego małe EXE, które nie są zależne od ogromnych bibliotek wykonawczych ważących setki MB, które użytkownicy będą mieli aby pobrać i zainstalować osobno.
Mason Wheeler
źródło
2
@Elf: Może być dostępnych więcej ofert C #, ale jest też o wiele więcej osób, które o nie walczą. Wykwalifikowani programiści Delphi nie mają problemów ze znalezieniem pracy.
Mason Wheeler
5
C # jest oparty nie tylko na C ++, ale także na Delphi i Javie. Ja również nauczyłem się programowania w Pascal i bardzo dużo jego filozofii widzę w C #. Jeśli chodzi o zarządzane wskaźniki, masz to odwrotnie, nie ma narzutu związanego z dostępem do danych za pośrednictwem zarządzanych wskaźników, a ich zmiana jest szybsza niż w systemie wykorzystującym zliczanie referencji.
Guffa
12
Łatwa do nauczenia się składnia Delphi jest całkowicie subiektywnym stwierdzeniem. Rozwścieczyła mnie składnia Delphi i dlatego postanowiłem nie uczyć się jej.
Tjaart
8
-1: Ta odpowiedź jest stronnicza jak szalona. Debuger programu Visual Studio jest co najmniej tak dobry, jeśli nie lepszy niż Delphi. Dokumentacja Delphi jest nieistotna w porównaniu do MSDN, która jest najlepszą dokumentacją w historii.
marco-fiset
4
Wdrożenie - całkowity błąd. Deplhi wymaga systemu Windows, więc jest to krok wstecz od C #. C # jest przenośny i wieloplatformowy dzięki Mono. Delphi nie jest. Nie musisz kupować systemu Windows, aby uruchomić program napisany w języku C #, który nie używa jawnie bibliotek Win32. Prostota - także porażka. Składnia C # jest bardzo łatwa do odczytania, bardzo zwięzła i łatwa do napisania. Delphi nie jest. Dokumentacja API - do diabła nie! Jeśli piszę „usługa internetowa C #”, otrzymuję mnóstwo odpowiednich wyników. Nie ma takich rzeczy dla Delphi. Szybkość, wątki, szczególnie debugger - także fałsz.
TheLonelyCoder,
15

C # ogólnie będzie miał większą bazę użytkowników, więcej rozwoju w przyszłości, a narzędzia do tworzenia RAD za pomocą Visual Studio są niewiarygodne.

  1. Składnia będzie podobna do tej używanej w PHP i C.
  2. Visual Studio ze swoimi narzędziami i IntelliSense jest niezwykle produktywny.
  3. MSDN
  4. Ponownie, narzędzia VS + Intellisense, ale szybkość naprawdę wynika ze znajomości twojego języka i jego funkcji.
  5. Projektant VS dla WinForms, WPF.
  6. System.Threading i System.Net

Nie mam dużego doświadczenia z Delphi i mówię tylko o moich doświadczeniach z C # w ogóle. Tam, gdzie pracuję, mam wyjątkowo krótkie terminy przewidziane przez nie-programistów i jestem w stanie bardzo szybko wypompować aplikacje biznesowe. W ciągu ostatnich trzech tygodni przeszedłem od specyfikacji do wdrożenia na dwóch aplikacjach LOB Winforms. Wydajność tworzenia GUI w C # z VS jest po prostu szalona.

bunglestink
źródło
4
Dzięki, zgodnie z postem na daniweb.com/forums/thread54305.html , integracja i kompletność API Win32 w Delphi przewyższa nawet C
elf1984,
2
powinieneś naprawdę przyjrzeć się Delphi, jeśli uważasz, że C # jest najlepszym środowiskiem programistycznym do szybkiego tworzenia aplikacji komputerowych. Osobiście nienawidzę tego, gdy muszę tworzyć elementy graficzne w studio, ale w dzisiejszych czasach nie zawsze mam wybór (niestety).
Wouter van Nifterick
1
Szczerze mówiąc, narzędzia RAD (projektowanie formularzy) w Visual Studio są do bani.
Warren P,
1
@WarrenP Czy możesz to rozwinąć?
Tjaart
1
Utwórz aplikację serwerową w C # i stwórz aplikację komputerową w Delphi, ponieważ Delphi wytwarza natywny kod, który jest trudniejszy do złamania!
justyy
14

Oba mają wszystkie 6 punktów, które chcesz, ale czuję, że C # ma przewagę na większości, jeśli nie na wszystkich.

Aby przejść przez punkty:

  1. Delphi wymaga zarządzania pamięcią, więc można argumentować, że samo to ułatwia C #. Zaakceptowana odpowiedź wspomina tutaj o składni, cóż, składnia C # jest podobna zarówno do PHP, jak i Javy, więc jeśli chcesz szybciej rozpocząć pracę z jednego z tych środowisk, C # ma przewagę.
  2. Wydajność, myślę, że szybciej wykonujesz więcej w C #. Biblioteka .net daje ci tyle, że w dawnych czasach musiałem szukać komponentów Delphi innych firm.
  3. Dokumentacja, Delphi była zawsze dobra, MSDN jest lepsza, a także znajdziesz większą społeczność do wsparcia, zobacz moją ankietę Przepełnienie stosu poniżej.
  4. Szybkość, Delphi może mieć na tym przewagę, ale asemblery przewyższają wszystko, więc zwykle nie jest to dobry powód, aby wybrać język. Jedną rzeczą, na którą chciałbym zwrócić uwagę, jest to, że słyszałem, że ludzie cytują, że C # jest interpretowane. Nie jest, nigdy nie było, zawsze miał JIT.
  5. Przeciągnij i upuść, dostępne na obu.
  6. Wielowątkowość, Delphi jest dobra, ale C # jest doskonała z wbudowanymi konstrukcjami, takimi jak lock(){}rozszerzenia równoległe i nowe await.

Dodatkowo, pytanie brzmi: programowanie GUI, do tego jestem wielkim fanem WPF .net, który jedyną rzeczą, którą Delphi miał w połowie drogi, był Bold , co było uciążliwe, a teraz martwe.

Rozmiar społeczności, porównując liczbę pytań na ten temat i przepełnienie stosu zarówno w tagach Delphi, jak i C #, zobaczysz, że rozmiar społeczności C # jest znacznie większy.

Przepełnienie stosu:

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

Dodałem c, aby pokazać, że to nie jest problem z wiekiem języków i Javatylko dla porównania.

Nie jestem fanem C # ani Java, byłem wielkim fanem Delphi, profesjonalnym czystym deweloperem Delphi przez 7 lat, ale tak naprawdę spieprzyli to od 2005 roku z ich chybioną wyprawą do sieci .net, co popsuło stabilność IDE dla nawet natywnej kompilacji 32-bitowej. Moim zdaniem Delphi 7 było szczytem języka.

weston
źródło
Co powiesz na odpowiedź z tym komentarzem?
weston
1
Nie jestem zwycięzcą, ale powiedziałbym, że nie odpowiadasz na pytanie. Właśnie oceniasz popularność Delphi w przepełnieniu stosu. Na pewno masz rację, ale to IMHO jest dość niewielkie. Bycie jedynym, który korzysta z technologii, nie zawsze jest złą rzeczą.
Simon Bergot,
@ Simon słusznie, odpowiedziałem już na wszystkie pytania i włączyłem analizę liczby pytań do szerszego punktu dotyczącego wielkości społeczności.
weston
Można argumentować, że użycie języka powodującego więcej pytań jest bardziej skomplikowane. ;-) Jak Bold był podobny do WPF? Użyłem WPF i nie widziałem żadnych podobieństw.
Jim McKeeth
@JimMcKeeth Zarówno Bold, jak i WPF zapewniają platformę do wiązania danych z kontrolkami interfejsu użytkownika, dzięki czemu gdy dane się zmieniają, interfejs aktualizuje się i odwrotnie, jeśli jest to wymagane.
weston
8

Kiedy byłem na uniwersytecie, uczyłem się programowania w Delphi. Jestem trochę zardzewiały, ale obecnie czytam wiele kodu Delphi, aby przenieść go do aplikacji C #.

Zdecydowanie wolę OO z funkcjonalnymi pochyleniami C # niż proceduralne z pochyleniami OO Delphi. Wybierając między nimi, powinieneś rozważyć, w jaki sposób wolisz kodować. Nie sądzę, żeby było w tym wiele prostoty - tylko to, co uważasz za łatwiejsze. To samo dotyczy wydajności.

Jeśli chodzi o RAD (szybkie tworzenie aplikacji), nie ma wiele między formami WinForm a projektem GUI Delphi. Przypominają mi się nawzajem.

Z drugiej strony WPF jest czymś, co wolę ponad oba ze względu na jego deklaratywny styl.

Nie sądzę, że istnieje duża różnica między jakością i zakresem dokumentacji dostarczonej przez dostawcę dla C # lub Delphi. Myślę, że znajdziesz więcej informacji innych niż dostawcy na temat C #, ale może tak być, ponieważ tak naprawdę nie szukałem wiele na drodze do Delphi.

Nie musiałem programować wątkowo w Delphi, a wszelkie sieci, które zrobiłem, były lata temu i nie pamiętam.

Biblioteki .NET do przetwarzania równoległego, zdarzeń i innych prac wątkowych są dobre. Więc nie umknie ci tam. Jeśli chodzi o tworzenie sieci, istnieje ogromne wsparcie, dlatego ponownie gorąco polecam.

Ogólnie poszedłbym z C # / .NET. Wynika to częściowo z WPF, ale także wolę kod, który piszę w języku C #. O ile mi wiadomo, delphi nie ma nic takiego jak Linq, co uważam za nieocenione.

Matt Ellen
źródło
Dziękuję za wspaniałą odpowiedź. którą książkę przeczytałeś jako początkujący? teraz zacznę C # 4 i .NET 4 na VS 2010
elf1984
4
Uważaj, próbując przenieść aplikację Delphi do C #. Za każdym razem, gdy słyszałem o jakiejkolwiek firmie próbującej, kończyły się one potwierdzaniem każdego punktu, który Joel napisał w „Rzeczy, których nigdy nie powinnaś robić, część 1”, co kończyło się katastrofą dla produktu i firmy, która jest jego właścicielem.
Mason Wheeler
Przepraszam, ale tak naprawdę nie mogę ci doradzić książki dla początkujących dla c # 4. Nie jestem pewien, czy miałem taki, kiedy zacząłem c # (w 1.1 dni. Jestem pewien, że było kilka, ale jednego nie przeczytałem). Kiedy zacząłem, myślę, że pierwszą książką, której użyłem, był Teach Yourself C ++ in 21 Days by Jesse Liberty, którą przeczytałem przed rozpoczęciem studiów. Zajęło mi to całe wieki, ale wiele się nauczyłem. Inną dobrą książką, którą miałem, była Discover Delphi, która była książką do kursu. Książka, którą polecam, to Object Thinking autorstwa Davida Westa, ponieważ naprawdę sprawia, że ​​myślisz o OOP i OOD, a także Effective C # Billa Wagnera ...
Matt Ellen
... Nie są to tak naprawdę książki dla początkujących, ale kiedy już znasz podstawy, mają świetne wskazówki i porady, jak zostać lepszym programistą.
Matt Ellen,
BTW, jeśli szukasz LINQ w Delphi, sprawdź bibliotekę DeHL Alexandru Ciobanu. Zapewnia kolekcje i operatory w stylu LINQ. Składnia LINQ (pseudo-SQL) nie jest jeszcze w Delphi, ale najwyraźniej zespół kompilatorów pracuje nad tym w przyszłej wersji.
Mason Wheeler,