web-dev-qa-db-fra.com

Delphi vs C # pour la programmation GUI

Je viens de PHP et Python background avec peu de connaissance de C, j'ai fait beaucoup d'applications web maintenant je pense à l'application Desktop pour Windows Plate-forme.

Un ami m'a dit d'aller pour Delphi et d'autres disent que C # est le meilleur, eh bien, ce que je cherche c'est

  1. Simplicité
  2. Productivité
  3. Bonne documentation API
  4. La vitesse
  5. Glisser déposer
  6. Multi threading et bonne API réseau

Merci

20
elf1984

Delphi, définitivement:

  1. Simplicité - La syntaxe de Delphi est basée sur Pascal, qui a été explicitement conçu pour être facile à apprendre, et il peut tenir cette promesse. C # est basé sur la famille C, qui ... eh bien ... n'était pas pas .
  2. Productivité - Delphi est un descendant de Turbo Pascal, et il a toujours le compilateur le plus rapide connu de l'homme, ce qui augmentera considérablement votre productivité. De plus, il dispose du débogueur Visual Studio souhaite que son débogueur soit comme lorsqu'il grandit. Surtout dans la dernière version de Delphi, le débogage est beaucoup plus facile.
  3. Bonne documentation API - "API" est un mot assez vague de nos jours, englobant toutes sortes de choses. Je suppose que vous parlez de bibliothèques, et ici, c'est une sorte de mélange. Le framework .NET et les bibliothèques standard Delphi ont une bonne documentation en ligne et une documentation hors ligne médiocre et difficile à utiliser. (Une conséquence du fait que l'équipe Delphi a choisi d'utiliser le même horrible système d'aide que Visual Studio, dont ils espèrent s'éloigner dans la prochaine version.)
  4. Vitesse - Delphi gagne facilement. Il se compile en code natif (exécution plus rapide et beaucoup démarrage plus rapide car il n'y a pas de phase JIT) et il n'utilise pas de pointeurs managés donc l'accès aux objets est plus rapide et moins hostile au cache.
  5. Glisser-déposer - Une fonction intégrée de la VCL.
  6. Multi-threading - Delphi a une classe de thread intégrée, mais si vous voulez faire des choses complexes avec la concurrence, il y a de meilleures options. Primoz Gabrijelcic, membre de la communauté Delphi, a travaillé sur ne excellente bibliothèque de concurrence à laquelle j'ai contribué. Il fournit une prise en charge de haut niveau pour les objectifs de thread communs tels que le pool de tâches, les boucles FOR parallèles et les processus de pipeline à plusieurs étapes.
  7. Bonne API réseau - Delphi est livré avec Indy, une bibliothèque open source mature qui facilite la configuration et la gestion des connexions Internet. Nous l'utilisons au travail pour fournir la couche de communication pour une application leader du secteur dont vous n'avez probablement jamais entendu parler, sauf si vous travaillez dans les médias de diffusion.
  8. Déploiement - Ce n'était pas sur votre liste, mais cela vaut la peine d'être mentionné. Il existe encore des systèmes sur lesquels le framework .NET n'est pas préinstallé. Par défaut, Delphi compile sa bibliothèque standard dans l'EXE, puis utilise un lien intelligent pour supprimer les parties que vous n'utilisez pas, ce qui entraîne de petits EXE qui ne dépendent pas de bibliothèques d'exécution massives pesant des centaines de Mo que vos utilisateurs auront à télécharger et installer séparément.
20
Mason Wheeler

C # va généralement avoir une base d'utilisateurs plus importante, plus de développement à l'avenir, et les outils pour le développement RAD via Visual Studio sont incroyables.

  1. La syntaxe sera similaire à celle utilisée dans PHP et C.
  2. Visual Studio avec ses outils et IntelliSense est extrêmement productif.
  3. MSDN
  4. Encore une fois, VS tools + Intellisense, mais la vitesse vient vraiment d'une familiarité avec votre langage et ses fonctionnalités.
  5. Concepteur VS pour WinForms, WPF.
  6. System.Threading et System.Net

Je n'ai pas beaucoup d'expérience avec Delphi, et je parle juste de mes expériences avec C # en général. Là où je travaille, j'ai des délais extrêmement serrés envisagés par des non-programmeurs, et je suis capable de pomper des applications bureautiques très rapidement. Au cours des trois dernières semaines, je suis passé de la spécification au déploiement sur deux applications LOB Winforms. La productivité pour le développement de GUI en C # avec VS est tout simplement folle.

15
bunglestink

Les deux ont tous les 6 points que vous voulez, mais je pense que C # a l'avantage sur la plupart sinon tous.

Pour parcourir les points:

  1. Delphi nécessite une gestion de la mémoire, vous pouvez donc dire que seul rend C # plus simple. La réponse acceptée mentionne la syntaxe ici, eh bien la syntaxe C # est similaire aux deux PHP et Java, donc si vous voulez être opérationnel plus rapidement à partir de l'un de ces arrière-plans, alors C # a le bord.
  2. Productivité, je pense que vous en faites plus rapidement en C #. La bibliothèque .net vous donne tellement que dans le mauvais vieux temps, je devrais chercher des composants Delphi tiers pour fournir.
  3. Documentation, Delphi a toujours été bonne, MSDN est meilleur, et vous trouverez une plus grande communauté pour le support, voir mon analyse de débordement de pile ci-dessous.
  4. Rapidité, Delphi a peut-être l'avantage sur ce point, mais Assembly l'emporte sur tout ce qui n'est généralement pas une bonne raison de choisir une langue. Une chose que je voudrais souligner, c'est que j'ai entendu des gens citer que C # est interprété. Ce n'est pas, ça n'a jamais été, ça a toujours eu un JIT.
  5. Glissez-déposez, disponible sur les deux.
  6. Multithreading, Delphi est bon mais C # est excellent avec des constructions intégrées comme lock(){} extensions parallèles, et le nouveau await.

Point supplémentaire, le titre de la question est la programmation graphique, pour cela, je suis un grand fan de .nets WPF, qui, la seule chose que Delphi avait à mi-chemin était Bold , ce qui était pénible à apprivoiser et maintenant mort.

Taille de la communauté, en comparant le nombre de questions à ce sujet et le débordement de pile sur les balises Delphi et C #, vous verrez que la taille de la communauté C # est beaucoup plus grande.

Débordement de pile:

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

J'ai ajouté c, pour montrer que ce n'est pas un problème avec l'âge des langues et Java juste pour comparaison.

Je ne suis pas un C # ou Java fan boy, j'étais un grand fan de Delphi, développeur professionnel de Delphi pur pendant 7 ans, mais ils l'ont vraiment foutu à partir de 2005 avec leur incursion mal faite dans .net qui a bousillé la stabilité du IDE pour une compilation 32 bits même native. Delphi 7 était à mon avis le pic du langage.

14
weston

Quand j'étais à l'université, j'ai appris la programmation avec Delphi. Je suis un peu rouillé, mais je lis actuellement beaucoup de code Delphi pour le porter sur une application C #.

Je préfère de beaucoup les OO avec des tendances fonctionnelles de C # aux procédures avec OO les tendances de Delphi. Vous devriez considérer comment vous préférez coder lorsque vous choisissez entre les deux). Je ne pense pas qu'il y ait beaucoup de choses en ce qui concerne la simplicité - juste ce que vous trouvez plus facile. Il en va de même pour la productivité.

En termes de RAD (développement rapide d'application)), il n'y a pas grand-chose entre les winforms et la conception Delphi GUI. Ils me rappellent les uns les autres.

WPF, d'autre part, est quelque chose que je préfère aux deux pour son style déclaratif.

Je ne pense pas qu'il y ait beaucoup de différence entre la qualité et la couverture de la documentation fournie par le fournisseur pour C # ou Delphi. Je pense que vous trouverez plus d'informations non-fournisseurs sur C #, mais cela pourrait simplement être parce que je n'ai pas vraiment cherché beaucoup de choses sur Delphi.

Je n'ai pas eu à faire de programmation filetée avec Delphi, et tout réseau que j'ai fait était il y a des années et je ne me souviens pas.

Les bibliothèques .NET pour le traitement parallèle, les événements et autres travaux de threading sont bonnes. Vous ne manquerez donc pas. Il y a beaucoup de soutien en matière de réseautage, donc encore une fois fortement recommandé.

Dans l'ensemble, j'irais avec C # /. NET. C'est en partie à cause de WPF, mais je préfère également le code que j'écris en C #. Pour autant que je sache, delphi n'a rien comme Linq, que je trouve inestimable.

8
Matt Ellen