Delphi vs C # für die GUI-Programmierung [geschlossen]
20
Ich komme aus PHP und Python mit geringen C-Kenntnissen. Ich habe viele webbasierte Anwendungen erstellt und denke jetzt an Desktop-Anwendungen für Windows-Plattformen.
Ein Freund sagte mir, ich solle mich für Delphi entscheiden, und andere sagten, C # sei das Beste
Einfachheit - Delphis Syntax basiert auf Pascal, das explizit so konzipiert wurde, dass es einfach zu erlernen ist und dieses Versprechen auch erfüllen kann. C # basiert auf der C-Familie, was ... nun ja ... nicht so war .
Produktivität - Delphi ist ein Nachfahre von Turbo Pascal und hat immer noch den schnellsten Compiler, den man kennt, was Ihre Produktivität enorm steigern wird. Außerdem verfügt es über den Debugger. Visual Studio wünscht sich, dass der Debugger so ist, wie er aufwächst. Insbesondere in der neuesten Version von Delphi ist das Debuggen viel einfacher.
Gute API-Dokumentation - "API" ist heutzutage ein ziemlich vages Wort, das alle möglichen Dinge umfasst. Ich nehme an, Sie meinen Bibliotheken, und hier ist es eine Art Müll. Sowohl das .NET Framework als auch die Delphi-Standardbibliotheken verfügen über eine gute Online-Dokumentation und eine mittelmäßige, schwer zu verwendende Offline-Dokumentation. (Eine Folge davon, dass sich das Delphi-Team dafür entschieden hat, dasselbe schreckliche Hilfesystem wie Visual Studio zu verwenden, von dem sie hoffentlich in der nächsten Version Abstand nehmen werden.)
Geschwindigkeit - Delphi gewinnt leicht. Es kompiliert nativen Code (schnellere Ausführung und viel schnellerer Start, da keine JIT-Phase vorhanden ist) und verwendet keine verwalteten Zeiger, sodass der Objektzugriff schneller und weniger cachefreundlich ist.
Drag and Drop - Eine integrierte Funktion der VCL.
Multithreading - Delphi verfügt über eine integrierte Thread-Klasse. Wenn Sie jedoch komplexe Aufgaben gleichzeitig ausführen möchten, stehen Ihnen bessere Optionen zur Verfügung. Primoz Gabrijelcic, ein Mitglied der Delphi-Community, hat an einer hervorragenden Parallelbibliothek gearbeitet , an der ich mitgewirkt habe. Es bietet umfassende Unterstützung für allgemeine Threading-Ziele wie Task-Pooling, parallele FOR-Schleifen und mehrstufige Pipeline-Prozesse.
Gute Netzwerk-API - Delphi wird mit Indy ausgeliefert, einer ausgereiften Open-Source-Bibliothek, mit der Internetverbindungen einfach eingerichtet und verwaltet werden können. Wir verwenden es bei der Arbeit, um die Kommunikationsschicht für eine branchenführende App bereitzustellen, von der Sie wahrscheinlich noch nie gehört haben, es sei denn, Sie arbeiten in Rundfunkmedien.
Bereitstellung - Dies war nicht auf Ihrer Liste, aber es ist erwähnenswert. Es gibt immer noch Systeme, auf denen .NET Framework nicht vorinstalliert ist. Standardmäßig kompiliert Delphi seine Standardbibliothek in die EXE-Datei und entfernt dann Teile, die Sie nicht verwenden, mit einem Smartlinker. Dies führt zu kleinen EXE-Dateien, die nicht von massiven Laufzeitbibliotheken mit Hunderten von MB abhängig sind, über die Ihre Benutzer verfügen separat herunterladen und installieren.
@Elf: Möglicherweise sind mehr C # -Jobs verfügbar, aber es konkurrieren auch viel mehr Leute um sie. Erfahrene Delphi-Entwickler haben keine Probleme, Arbeit zu finden.
Mason Wheeler
5
C # basiert nicht nur auf C ++, sondern auch auf Delphi und Java. Auch ich habe Programmieren in Pascal gelernt, und ich sehe sehr viel von seiner Philosophie in C #. In Bezug auf verwaltete Zeiger haben Sie das Gegenteil, es gibt keinen Overhead beim Zugriff auf Daten über verwaltete Zeiger, und das Ändern ist schneller als in einem System mit Referenzzählung.
Guffa
12
Die leicht zu erlernende Delphi-Syntax ist eine völlig subjektive Aussage. Ich war wütend auf die Delphi-Syntax und habe mich aus diesem Grund dagegen entschieden, sie zu lernen.
Tjaart
8
-1: Diese Antwort ist voreingenommen wie verrückt. Der Visual Studio-Debugger ist mindestens genauso gut, wenn nicht besser als Delphi. Delphi-Dokumentation ist nicht vorhanden, verglichen mit MSDN, der besten Dokumentation aller Zeiten.
Marco-Fiset
4
Bereitstellung - Total Fail. Deplhi erfordert Windows, das ist also ein Schritt zurück von C #. C # ist dank Mono portabel und plattformübergreifend. Delphi ist nicht. Sie müssen Windows nicht kaufen, um ein in C # geschriebenes Programm auszuführen, das keine expliziten Win32-Bibliotheken verwendet. Einfachheit - auch Versagen. Die Syntax von C # ist sehr einfach zu lesen, sehr präzise und leicht zu schreiben. Delphi ist nicht. API-Dokumentation - Hölle nein! Wenn ich "Web Service C #" schreibe, erhalte ich jede Menge relevante Ergebnisse. Für Delphi gibt es so etwas nicht. Geschwindigkeit, Threading, vor allem der Debugger - auch falsch.
TheLonelyCoder
15
C # wird im Allgemeinen eine größere Anwenderbasis haben, in Zukunft wird es mehr Entwicklung geben, und die Tools für die RAD-Entwicklung über Visual Studio sind unglaublich.
Die Syntax ähnelt der in PHP und C verwendeten.
Visual Studio mit seinen Tools und IntelliSense ist äußerst produktiv.
MSDN
Wieder VS Tools + Intellisense, aber Geschwindigkeit kommt wirklich von einer Vertrautheit Ihrer Sprache und ihrer Funktionen.
VS Designer für WinForms, WPF.
System.Threading und System.Net
Ich habe nicht viel Erfahrung mit Delphi und spreche nur über meine Erfahrungen mit C # im Allgemeinen. Wo ich arbeite, habe ich extrem enge Fristen, die von Nicht-Programmierern vorgesehen sind, und ich bin in der Lage, Desktop-Geschäftsanwendungen extrem schnell herauszupumpen. In den letzten drei Wochen bin ich von der Spezifikation zur Bereitstellung auf zwei Winforms-LOB-Anwendungen übergegangen. Die Produktivität für die GUI-Entwicklung in C # mit VS ist einfach verrückt.
Danke, nach einem Beitrag in daniweb.com/forums/thread54305.html , Win32 - API - Integration und Vollständigkeit in Delphi übertrifft sogar C
elf1984
2
Sie sollten sich unbedingt mit Delphi befassen, wenn Sie der Meinung sind, dass C # die ultimative Entwicklungsumgebung für die schnelle Erstellung von Desktopanwendungen ist. Ich persönlich hasse es, wenn ich mit Visual Studio Desktop-Inhalte erstellen muss, aber heutzutage habe ich (leider) nicht immer die Wahl.
Wouter van Nifterick
1
Die RAD-Tools (Form Design) von Visual Studio sind ehrlich.
Warren P
1
@WarrenP Könnten Sie bitte näher darauf eingehen?
Tjaart
1
Erstellen Sie eine Serveranwendung in C # und eine Desktopanwendung in Delphi, da Delphi nativen Code erzeugt, der schwerer zu knacken ist!
Justyy
14
Beide haben alle 6 Punkte, die Sie wollen, aber ich glaube, C # hat die meisten, wenn nicht alle.
Um die Punkte durchzugehen:
Delphi erfordert eine Speicherverwaltung. Sie können also argumentieren, dass C # allein einfacher ist. Akzeptierte Antworten erwähnen hier die Syntax. Nun, die C # -Syntax ähnelt sowohl PHP als auch Java. Wenn Sie also von einem dieser Hintergründe aus schneller zum Laufen kommen möchten, hat C # den Vorteil.
Produktivität, ich denke, Sie werden in C # schneller fertig. Die .net-Bibliothek bietet Ihnen so viel, dass ich in den schlechten alten Zeiten nach Delphi-Komponenten von Drittanbietern suchen musste, um diese bereitzustellen.
Dokumentation, Delphi's war immer gut, MSDN ist besser, und Sie finden eine größere Community für Support, siehe meine Stack Overflow-Analyse unten.
Tempo, Delphi hat vielleicht die Nase vorn, aber Assembly trumpft alle, sodass dies normalerweise kein guter Grund ist, eine Sprache auszuwählen. Eine Sache, auf die ich hinweisen möchte, ist, dass ich gehört habe, wie Leute zitieren, dass C # interpretiert wird. Es ist nicht so, es war noch nie so, es hatte schon immer eine GEG.
Drag and Drop, verfügbar für beide.
Multithreading, Delphi ist gut, aber C # eignet sich hervorragend für eingebaute Konstrukte wie lock(){}parallele Erweiterungen und neue await.
Extra Punkt, der Fragentitel ist GUI-Programmierung, dafür bin ich ein großer Fan von .nets WPF, das, das einzige, was Delphi auf halbem Weg in der Nähe hatte, Bold war , was schmerzhaft zu zähmen war und jetzt tot ist.
Wenn Sie die Anzahl der Fragen und den Stapelüberlauf für die Delphi- und C # -Tags miteinander vergleichen, werden Sie feststellen, dass die Größe der C # -Community viel größer ist.
Paketüberfluss:
Delphi 17K
C # 367K
Java 312K
c 73K
Ich habe hinzugefügt c, um zu zeigen, dass das kein Problem mit dem Sprachalter ist und Javanur zum Vergleich.
Ich bin kein C # - oder Java-Fanjunge, ich war 7 Jahre lang ein großer Delphi-Fan, ein professioneller reiner Delphi-Entwickler, aber sie haben es ab 2005 wirklich vermasselt, mit ihrem kranken Vorstoß in .net, der die Stabilität der IDE für sogar native 32-Bit-Kompilierung. In meinen Augen war Delphi 7 der Inbegriff der Sprache.
Wie wäre es mit einer Antwort mit dieser Gegenstimme?
Weston
1
Ich bin nicht der Abwähler, aber ich würde sagen, dass Sie die Frage nicht beantworten. Sie bewerten gerade die Popularität von Delphi bei Stackoverflow. Sie machen sicher einen Punkt, aber es ist meiner Meinung nach ziemlich gering. Es ist nicht immer schlecht, der einzige zu sein, der eine Technologie einsetzt.
Simon Bergot
@ Simon fair point, ich habe jetzt alle Punkte beantwortet und die Analyse der Anzahl der Fragen in einen weiteren Punkt zur Community-Größe integriert.
Weston
Es könnte argumentiert werden, dass die Verwendung einer Sprache, die zu mehr Fragen führt, schwieriger ist. ;-) Wie war Bold ähnlich wie WPF? Ich habe WPF verwendet und keine Ähnlichkeiten festgestellt.
Jim McKeeth
@JimMcKeeth Sowohl Bold als auch WPF bieten ein Framework zum Binden von Daten an Benutzeroberflächen-Steuerelemente, sodass die Benutzeroberfläche bei Änderungen aktualisiert wird und umgekehrt, falls erforderlich.
Weston
8
Als ich an der Uni war, wurde mir das Programmieren mit Delphi beigebracht. Ich bin ein bisschen rostig, aber ich lese gerade eine Menge Delphi-Code durch, um ihn auf eine C # -Anwendung zu portieren.
Ich bevorzuge das OO mit funktionalen Neigungen von C # gegenüber dem prozeduralen mit OO-Neigungen von Delphi. Sie sollten überlegen, wie Sie den Code bevorzugen, wenn Sie zwischen ihnen wählen. Ich denke, es steckt nicht viel in der Einfachheit - genau das, was Sie leichter finden. Gleiches gilt für die Produktivität.
In Bezug auf RAD (Rapid Application Development) gibt es nicht viel zwischen Winforms und Delphi-GUI-Design. Sie erinnern mich aneinander.
WPF hingegen ist etwas, das ich wegen seines deklarativen Stils beiden vorziehen würde.
Ich glaube nicht, dass es einen großen Unterschied zwischen der Qualität und dem Umfang der vom Anbieter bereitgestellten Dokumentation für C # oder Delphi gibt. Ich denke, dass Sie weitere Informationen zu C # finden, die nicht von einem Anbieter stammen. Dies könnte aber auch daran liegen, dass ich in Delphi nicht wirklich viel gesucht habe.
Ich musste keine Thread-Programmierung mit Delphi durchführen, und jedes Netzwerk, das ich vor Jahren durchgeführt habe, kann mich nicht erinnern.
Die .NET-Bibliotheken für Parallelverarbeitung, Ereignisse und andere Threading-Arbeiten sind gut. Sie werden dort also nicht fehlen. Es gibt sehr viel Unterstützung, wenn es um das Networking geht, also wieder sehr empfehlenswert.
Insgesamt würde ich mit C # / .NET gehen. Dies liegt zum Teil an WPF, aber ich bevorzuge auch den Code, den ich in C # schreibe. Delphi hat meines wissens nichts wie linq, was ich für unschätzbar halte.
Vielen Dank für Ihre wundervolle Antwort. Welches Buch hast du als Anfänger gelesen? jetzt
starte
4
Versuchen Sie nicht, eine Delphi-App nach C # zu portieren. Jedes Mal, wenn ich von einem Unternehmen gehört habe, das es ausprobiert hat, haben sie am Ende jeden Punkt bestätigt, den Joel in "Dinge, die Sie niemals tun sollten, Teil 1" gemacht hat, und es endete mit einem Desaster für das Produkt und das Unternehmen, das es besitzt.
Mason Wheeler
Tut mir leid, ich kann Ihnen in Bezug auf ein Einsteigerbuch für C # 4 nicht wirklich raten. Ich bin mir nicht sicher, ob ich einen hatte, als ich mit c # anfing (in den 1.1 Tagen. Ich bin sicher, dass es einige gab, aber ich habe keinen gelesen). Als ich anfing, dachte ich, dass das erste Buch, das ich verwendete, Teach Yourself C ++ in 21 Tagen von Jesse Liberty war, das ich las, bevor ich mit Uni anfing. Es hat ewig gedauert, bis ich durchgekommen bin, aber ich habe viel gelernt. Ein anderes gutes Buch, das ich hatte, war Discover Delphi, das war das Buch für den Kurs. Ein Buch, das ich empfehle, ist Object Thinking von David West, da es Sie wirklich dazu bringt, über OOP und OOD nachzudenken, auch über Effective C # von Bill Wagner ...
Matt Ellen
... Sie sind keine Anfänger, aber wenn Sie die Grundlagen kennen, haben sie großartige Tipps und Ratschläge, wie Sie ein besserer Programmierer werden können.
Matt Ellen
Übrigens, wenn Sie nach LINQ in Delphi suchen, schauen Sie sich die DeHL-Bibliothek von Alexandru Ciobanu an. Es bietet LINQ-ähnliche Sammlungen und Operatoren. LINQ-Syntax (das Pseudo-SQL-Zeug) ist noch nicht in Delphi, aber anscheinend arbeitet das Compiler-Team für eine zukünftige Version daran.
C # wird im Allgemeinen eine größere Anwenderbasis haben, in Zukunft wird es mehr Entwicklung geben, und die Tools für die RAD-Entwicklung über Visual Studio sind unglaublich.
Ich habe nicht viel Erfahrung mit Delphi und spreche nur über meine Erfahrungen mit C # im Allgemeinen. Wo ich arbeite, habe ich extrem enge Fristen, die von Nicht-Programmierern vorgesehen sind, und ich bin in der Lage, Desktop-Geschäftsanwendungen extrem schnell herauszupumpen. In den letzten drei Wochen bin ich von der Spezifikation zur Bereitstellung auf zwei Winforms-LOB-Anwendungen übergegangen. Die Produktivität für die GUI-Entwicklung in C # mit VS ist einfach verrückt.
quelle
Beide haben alle 6 Punkte, die Sie wollen, aber ich glaube, C # hat die meisten, wenn nicht alle.
Um die Punkte durchzugehen:
lock(){}
parallele Erweiterungen und neueawait
.Extra Punkt, der Fragentitel ist GUI-Programmierung, dafür bin ich ein großer Fan von .nets WPF, das, das einzige, was Delphi auf halbem Weg in der Nähe hatte, Bold war , was schmerzhaft zu zähmen war und jetzt tot ist.
Wenn Sie die Anzahl der Fragen und den Stapelüberlauf für die Delphi- und C # -Tags miteinander vergleichen, werden Sie feststellen, dass die Größe der C # -Community viel größer ist.
Paketüberfluss:
Ich habe hinzugefügt
c
, um zu zeigen, dass das kein Problem mit dem Sprachalter ist undJava
nur zum Vergleich.Ich bin kein C # - oder Java-Fanjunge, ich war 7 Jahre lang ein großer Delphi-Fan, ein professioneller reiner Delphi-Entwickler, aber sie haben es ab 2005 wirklich vermasselt, mit ihrem kranken Vorstoß in .net, der die Stabilität der IDE für sogar native 32-Bit-Kompilierung. In meinen Augen war Delphi 7 der Inbegriff der Sprache.
quelle
Als ich an der Uni war, wurde mir das Programmieren mit Delphi beigebracht. Ich bin ein bisschen rostig, aber ich lese gerade eine Menge Delphi-Code durch, um ihn auf eine C # -Anwendung zu portieren.
Ich bevorzuge das OO mit funktionalen Neigungen von C # gegenüber dem prozeduralen mit OO-Neigungen von Delphi. Sie sollten überlegen, wie Sie den Code bevorzugen, wenn Sie zwischen ihnen wählen. Ich denke, es steckt nicht viel in der Einfachheit - genau das, was Sie leichter finden. Gleiches gilt für die Produktivität.
In Bezug auf RAD (Rapid Application Development) gibt es nicht viel zwischen Winforms und Delphi-GUI-Design. Sie erinnern mich aneinander.
WPF hingegen ist etwas, das ich wegen seines deklarativen Stils beiden vorziehen würde.
Ich glaube nicht, dass es einen großen Unterschied zwischen der Qualität und dem Umfang der vom Anbieter bereitgestellten Dokumentation für C # oder Delphi gibt. Ich denke, dass Sie weitere Informationen zu C # finden, die nicht von einem Anbieter stammen. Dies könnte aber auch daran liegen, dass ich in Delphi nicht wirklich viel gesucht habe.
Ich musste keine Thread-Programmierung mit Delphi durchführen, und jedes Netzwerk, das ich vor Jahren durchgeführt habe, kann mich nicht erinnern.
Die .NET-Bibliotheken für Parallelverarbeitung, Ereignisse und andere Threading-Arbeiten sind gut. Sie werden dort also nicht fehlen. Es gibt sehr viel Unterstützung, wenn es um das Networking geht, also wieder sehr empfehlenswert.
Insgesamt würde ich mit C # / .NET gehen. Dies liegt zum Teil an WPF, aber ich bevorzuge auch den Code, den ich in C # schreibe. Delphi hat meines wissens nichts wie linq, was ich für unschätzbar halte.
quelle