web-dev-qa-db-fra.com

C ++ Builder ou Visual Studio

Je possède une société de développement de logiciels. Nous développons des logiciels pour d'autres sociétés qui font de la marque sous leur nom/titre. Et nous avons également quelques titres de marque sur le marché de la comptabilité/ERP. Notre logiciel de comptabilité représente environ 60% de nos activités et est écrit en C++ Builder.

Ceux qui savent, réalisent que C++ Builder a eu une route très difficile en changeant de mains de Borland, à CodeGear, à Embarcadero et peut-être quelques fois entre les deux. C++ Builder nous a vissé un certain nombre de fois sur notre logiciel de comptabilité. Les rapports rapides étaient notoirement bogués, leur description de build XML n'est pas étroitement couplée à l'interface graphique, ce qui fait que les builds ne fonctionnent pas - généralement une interface boguée.

Au cours des 8 dernières années, nous avons régulièrement progressé pour supprimer notre dépendance à l'égard des composants VCL et buggy, mais certains composants VCL tiers ne sont tout simplement pas facilement remplaçables. Nous utilisons un package GRID de Developer Express - un excellent produit.

Je suis à peu près à la croisée des chemins et avec la dernière version de C++ Builder XE sur le marché, j'ai du mal à justifier le prix lorsque vous regardez l'histoire merdique de ce produit.

Je suis donc à la recherche de conseils ou d'étapes suivies par quelqu'un d'autre qui pourrait être dans une situation similaire et a réussi à passer à Visual Studio.

Nous avons lentement déplacé la plupart de notre application vers wxWidgets, à l'exception des outils Developer Express. Et nous avons écrit notre propre abstraction TSQL que nous pouvons également porter.

Des pensées ou des suggestions? Avez-vous déplacé votre projet vers Visual Studio ou avez-vous joué avec le nouveau Builder XE pour découvrir que bon nombre de ses lacunes précédentes ont maintenant disparu?

Vous cherchez des conseils "été là, fait ça".

28
Eric

Le passage à wxWidgets a ses avantages, l'un d'eux étant que vous ne serez pas lié à un IDE comme C++ Builder ou Visual Studio. C++ Builder a eu plusieurs problèmes, sa principale force étant la VCL framework, qui à mon avis est toujours parmi les meilleurs frameworks GUI autour de C++. Le problème bien sûr étant qu'il nécessite C++ Builder, qui pour le dire légèrement a quelques problèmes avec la stabilité et les performances du compilateur.

Cependant, Visual Studio n'est pas l'IDE ultime, la dernière version est au mieux boguée, et la plupart des outils RAD fournis par C++ Builder n'existent tout simplement pas dans Visual C++ (sauf si vous êtes prêt à opter pour les langues .net).

Je peux parfaitement comprendre votre souhait de rendre votre code moins dépendant de C++ Builder, pour vous dire la vérité, je doute que cela continuera de durer longtemps moi-même. Cependant, d'après ce que cela ressemble à votre article, la plupart de votre développement repose vraiment sur des applications développées rapidement, et dans l'univers C++, C++ Builder est l'un des meilleurs outils disponibles pour cette exigence particulière.

Personnellement, je n'ai jamais vraiment pensé au C++ comme la meilleure solution pour les applications GUI Windows à développement rapide, peut-être que votre objectif ne devrait pas être de trouver un IDE différent, mais de trouver un langage plus approprié, je suggère Delphi, en utilisant Delphi vous serez capable de compiler vos projets de générateur c ++ existants, et même de réutiliser vos composants VCL existants.

Delphi sera - je l'espère - plus longtemps que C++ Builder, soit sous la forme de Delphi, soit sous la forme de Lazarus (IDE pour freepascal) qui est même multiplateforme et prend en charge le développement 64 bits.

Si toutefois un changement de langue n'est pas une option, je m'en tiendrai à C++ Builder pour l'instant, mais pas à la mise à niveau vers la version XE, que je ne pense tout simplement pas justifiée par le prix. (Étant donné que vous travaillez déjà sur une version relativement nouvelle).

15
Tommy Andersen

Visual Studio n'est pas vraiment comparable à C++ Builder.

Oui, ce sont tous les deux des compilateurs C++ mais:

  1. Visual Studio est uniquement RAD lors de l'utilisation des langages .NET
  2. MFC est "semi-rad" mais ne se rapproche pas de la facilité d'utilisation de VCL
  3. Le compilateur Visual Studio est meilleur pour produire du code optimisé, mais C++ Builder utilise Clang qui est assez bon
  4. Visual Studio et C++ Builder sont tous deux conformes aux normes (CB utilisant des compilateurs basés sur Clang)
  5. C++ Builder est livré avec Boost
  6. C++ Builder XE est bien meilleur que les versions précédentes (sans Builder C++ 6.0)
  7. Vous ne pouvez pas battre les outils RAD dans C++ Builder pour le développement C++, rien ne se rapproche

Les différences dans les compilateurs ne vous blesseront probablement pas trop pour le code non dépendant de VCL. J'ai un DLL que je compile pour les clients sous VC6, VS2008 et Builder 2010/XE. J'ai dû jeter quelques #ifdefs, mais la plupart d'entre eux sont en fait pour VC6.

La plus grande recommandation que je puisse faire est de ne pas aller au MFC, c'est là que la douleur commence.

Pensez également à la formation des développeurs. Vos développeurs deviendront beaucoup plus lents à produire du code de travail tout en apprenant les particularités d'un nouveau compilateur.

Cela dit, lorsque j'ai eu le choix pour un client entre passer à VS2008/2010 ou Builder C++ pour un nouveau produit, j'ai choisi Builder, juste pour le RAD IDE.

Bonne chance.

Mis à jour pour C++ Builder 10.2 (2017):

  1. Windows 32 bits et 64 bits utilisent tous deux Clang/LLVM (tout comme iOS et Android)
  2. Windows 32 bits et 64 bits utilisent tous deux Boost 1.55
  3. 10.2 est très stable, s'améliore à chaque version

Cela revient toujours sur les recherches Google, donc mis à jour à nouveau pour Berlin 10.1:

  1. Le code 32 bits et 64 bits utilise désormais CLANG/LLVM pour Windows
  2. Le code 32 bits pour OS X utilise toujours l'ancien compilateur
  3. Les compilations Android et iOS utilisent CLANG/LLVM
18
Gregor Brandt

Si vous vous en tenez à C++ et que vous attendez le même type de IDE dans Visual Studio pour C++ que RAD Studio fournit, vous serez choqué).

Pour être honnête, C++ Builder n'a jamais été un mauvais environnement de développement GUI pour C++. C'est probablement le meilleur qui ait jamais été pour C++. Pourquoi? Parce que vous pouvez profiter de tous les excellents composants Delphi.

Il n'y a aucun substitut pour ExpressQuantumGrid ™ Suite pour C++ dans Visual Studio.

La plupart des plaintes sérieuses concernant C++ Builder ont souvent été centrées sur sa conformité à des normes telles que la STL et Boost.

Je ne pense pas qu'Embarcadero abandonnera la prise en charge de C++ Builder. Les problèmes ont généralement été liés à la façon dont les gars de Delphi (3ème partie) ont codé les choses. Honnêtement, je ne me souviens que d'une version des produits de DevExpress posant problème.

Court et doux: si vous voulez utiliser C++ et une sorte de chose RAD/GUI, restez avec C++ Builder.

10
weirdo12

Nous sommes passés de C++ Builder 6 à XE il y a un an. Très content de XE. Le passage à UnicodeString n'a pas été trop difficile. Nous avons également converti tout notre code BDE en BDExpress (DBX). Cela a pris beaucoup de temps et beaucoup de réécriture, mais cela en valait la peine. La chose à retenir est que ni l'un ni l'autre n'est parfait. Comme le dit le proverbe, l'herbe semble toujours plus verte de l'autre côté de la clôture. Si vous souhaitez une efficacité de développement, utilisez C++ Builder et la VCL. Si vous voulez une sécurité à très long terme ou trouvez facilement des programmeurs, alors Visual Studio. Mon avis: Gardez ce que vous aimez et remplacez ce que vous n'aimez pas. Par exemple, conservez C++ Builder et remplacez QuickReport. BTW, si vous avez pris une décision, veuillez nous le faire savoir.

6
Stephane

C++ Builder PM ici.

C++ Builder a des atouts spécifiques:

  • C'est génial pour la conception d'interface utilisateur. Soit avec la VCL (contrôles Windows natifs) ou FMX (multiplateforme, souvent des contrôles natifs aussi si vous en avez besoin). Visual C++ ne se rapproche pas du tout, et MFC continue de concevoir des interfaces utilisateur comme vous l'avez fait en 1995.

  • Il est axé sur la multiplateforme. Visual C++ en fait la publicité, mais C++ Builder fournit la "pile complète": pas seulement la compilation, mais les bibliothèques complètes, l'interface utilisateur, tout. VC++ est multiplateforme jusqu'à ce que vous ayez besoin de quelque chose qui ne l'est pas.

  • Il est largement utilisé par les personnes ayant besoin d'un travail de base de données ou d'autres éléments y "d'entreprise", principalement parce que les bibliothèques de base de données (FireDAC) sont très bien architecturées et prennent en charge un grand nombre de bases de données.

  • Il utilise Clang pour toutes les plates-formes, à l'exception de macOS, qui possède toujours un ancien compilateur. Il se dirige également vers la mise à jour vers C++ 17.

  • Il a des fonctionnalités comme Live Preview (concevez votre application, voyez l'application en direct sur un appareil branché comme votre téléphone) qui semblent avoir fortement inspiré certaines fonctionnalités récentes de MS;) Ne vous inquiétez pas, Visual Studio, nous vous aimons :) Donc, dans de nombreux domaines, il mène réellement, en particulier pour le développement x-plat.

Faiblesses:

  • Le IDE ne fonctionne que sur Windows. Vous pouvez déployer n'importe où et déboguer sur n'importe quoi, mais le IDE est Windows.

  • Il s'agit uniquement de C++ 11, bien qu'il se dirige vers C++ 17. MacOS est (gasp) C++ 98. C'est sur la feuille de route. Vous pouvez compter sur sa mise à jour dans le temps.

  • L'achèvement du code et la compréhension du code sont plus faibles que Visual C++. J'y travaille.

  • Il a la réputation d'être un buggy, sur lequel quelque chose travaille activement dans les dernières versions et un de mes efforts personnels à éliminer. Mais une réputation est difficile à perdre.

3
David

La plupart des réponses ici mix compilateurs, IDE et bibliothèque (et la question a un sous-texte important: comment choisir l'environnement pour les applications métier/GUI). Les questions et réponses mélangent les langages Visual Studio et types de projets: C++ avec un support médiocre de l'interface graphique, C # avec un merveilleux écosystème, etc ... (Basic, F # etc) tous sous l'égide de Visual Studio.

Bibliothèques GUI:

MFC est une bibliothèque, vraiment assez ancienne et peu productive. Son wrapper de bas niveau sur * .RES et WM_Envents. Il est probablement impossible de compiler sans MS C++ (et peut-être que la licence l'interdit)

VCL est la bibliothèque la plus importante pour la philosophie Borland/Enbecaro et la part de marché dans un domaine: créer des applications GUI. Semble être une bonne utilisation des bibliothèques GUI opensurce portables, mais presque toutes n'ont pas un si bon support dans l'IDE cliquable

IDE:

Le sentiment personnel semble la meilleure réponse. D'accord, seul le producteur IDE a une construction optimale sur ses propres composants GUI. Beaucoup d'indépendants IDE est cité ici, je serai bref).

Compilateur:

Le compilateur C++ Brland de nombreuses années était loin des normes c ++ (ne peut pas compiler le code c ++ du flux principal comme boost). Je crois que de nombreux objectifs sont contradictoires: coexistence avec du code Object Pascal ou des normes C++.

Pour dire la vérité: la plupart des projets des mondes C++ Builder ne nécessitent pas d'utiliser du code hautement "hackers" comme boost et similaire, personnellement je traite le langage Borland/Embecareo C++ comme un langage indépendant partiellement basé sur C++ (partiellement sur VCL). Général ce monde est fermé (de plus en plus), pas de pilotes, pas de bibliothèques compatibles, pas de protocoles réseau modernes etc.

Mon avis: les compilateurs MS C++ (dans le passé et maintenant) supportent mieux les standards.

J'étais (peut-être bon) programmeur Borland C++. Maintenant, j'utilise C #/WinForms Visual Studio (parfois, rare Java SWT ou Swing) et Microsoft C++ pour les projets non GUI C/C++ à faible volume

Derniers mots: êtes-vous limité à la syntaxe C++ ou pouvez-vous changer? Oui, je passe en C #. Si doit être C++ et une interface graphique hautement productive, payez (de plus en plus) à Embecadero

2
Jacek Cz

Nous évoluons lentement vers VS2008 et wxWidgets. Pour chaque composant pouvant être acheté pour C++ Builder (Developer Express, etc.), nos plans sont de embaucher quelqu'un pour le construire pièce ou d'embaucher le fabricant de composants pour build un composant wxWidget pour nous.

Cependant, C++ Builder est le meilleur moyen de programmer visuellement sur Windows pour le moment. Cependant, pas de support x64bit et pas de support mac, linux. Soi-disant qu'ils vont construire une version crossx ... combien de temps pouvons-nous attendre?

2
pcunite

J'ai travaillé dans C++ builder 2006, 2009, XE6 et RS10.

Je recommanderais d'en convertir vos projets. J'ai eu de nombreux problèmes au cours des années, comme l'écrasement de l'environnement et de nombreux autres comportements excentriques. De plus, si vous avez besoin d'aide pour quelque chose, la communauté d'utilisateurs est pratiquement inexistante, vous devez donc normalement attendre 24 heures et espérer que Remy vous répondra :) Ou essayez de lire le code delphi et de le traduire en C++ (oui leur environnement delphi est plus populaire ... rien de tel que Pascal orienté objet ...).

Quel que soit l'environnement dans lequel vous le convertissez, il ne sera probablement pas aussi propre ou aussi simple que vous le souhaitez. Donc, sachant qu'il y aurait beaucoup de travail, je suggère donc d'examiner votre stratégie à long terme.

Personnellement, je recommanderais de migrer vers Java et d'utiliser SWT ( https://www.Eclipse.org/swt/ ), si vous avez besoin d'une application de bureau. Je recommande également de s'en tenir aux bibliothèques open source avec des licences amicales, de sorte que vous n'avez pas à vous soucier de payer de l'argent chaque année et vous permet de faire évoluer votre entreprise. Si vous n'avez pas besoin d'un système client, je recommanderais quand même Java, car il fait la pile complète et est très puissant. La communauté Java de mon expérience a tendance à avoir des personnes plus nettes (pour la plupart) avec des réponses claires. J'ai vu un tas de choses hackish qui utiliser .Net :)

Vous avez mentionné Visual Studio, si vous ne pouvez pas faire Java, alors je recommanderais C # comme votre meilleure alternative suivante. Mais ensuite, vous devez toujours payer Microsoft pour les licences et également traiter avec le groupe d'utilisateurs.

1
James Oravec

J'ai commencé en tant qu'ingénieur côté client C++ pour Windows. Je suis d'accord avec le commentaire selon lequel le MFC est assez mauvais. Dans plusieurs de mes projets, nous avons écrit nos propres moteurs d'interface utilisateur avec des modèles basés sur XML au lieu d'utiliser MFC afin que les graphistes puissent jouer avec l'interface utilisateur sans avoir besoin d'ingénieurs logiciels.

À mon avis, C # .Net est le meilleur pour le développement de l'interface utilisateur Windows. IDE est génial. Le codage de l'interface utilisateur en C++ nécessite beaucoup trop d'efforts. Vous pouvez toujours conserver des morceaux de C++ qui nécessitent de hautes performances.

PS. Je viens de le remarquer sur la page wiki de VCL. ". NET est calqué sur VCL, car l'un des principaux architectes des premières versions de Delphi, Anders Heijlsberg, est allé à Microsoft et a été l'un des principaux architectes de NET là-bas"

1
expert

Cela signifie que la version de Visual Studio 2010 crée une nouvelle question: est-il judicieux de mettre à niveau Visual Studio même si vous ne mettez pas à niveau vers .NET 4? La réponse est "oui" et pour de nombreuses raisons. Mais si vous allez à .NET 4, vous trouverez beaucoup de prise en charge dans Visual Studio 2010.

Dès que vous démarrez Visual Studio 2010, vous remarquerez que la page de démarrage est désormais plus utile que le menu Fichier (voir figure 1). La page de démarrage donne toujours accès aux modèles de projet, mais le reste de la page fournit désormais un accès organisé aux ressources de formation pour les principales technologies .NET.

Une fois que vous ouvrez un fichier, vous constaterez que, grâce à Windows Presentation Foundation (WPF), il y a plus de commentaires visuels dans la fenêtre d'édition. Par exemple, si vous cliquez sur un nom de variable, toutes les utilisations de ce nom de variable sont mises en surbrillance. Cette fonctionnalité n'est pas limitée aux variables - cliquer sur un en-tête de méthode met automatiquement en évidence toutes les clauses de retour et la fin de la méthode. Mais cette mise en évidence supplémentaire n'est pas sans inconvénient. Lors du débogage, par exemple, j'ai parfois perdu la ligne actuelle car sa mise en surbrillance était remplacée par la mise en surbrillance ajoutée pour l'élément actuellement sélectionné. tatouages ​​aztèques

0
robert

Je déteste dire cela, mais ma propre entreprise est à ce même carrefour. Nous utilisons C++ Builder depuis de nombreuses années (jamais mis à niveau au-delà de la v6), et nos responsables ont récemment appuyé sur la gâchette pour passer à Visual Studio à l'avenir :-( Je ne pense pas que nous allons porter notre C existant ++ Builder apps vers VC++ de sitôt, car ce serait une réécriture majeure, mais nos nouveaux produits à l'avenir seront désormais dans VC++ /. NET.

0
Remy Lebeau

Ce que @casablanca a dit, mais vous devriez également envisager de très bonnes alternatives, si vous dites que vous n'êtes pas satisfait des programmes que vous utilisez actuellement:

  1. Eclipse ( CDT ): très bon produit complet
  2. NetBeans : souvent comparé à Eclipse
  3. Code :: Blocks : plus simple, mais souvent recommandé, pas si génial qu'une intégration de système de build je crois, mais bien intégré à wxWidgets
  4. QtCreator : mon préféré (propre et rapide et fonctionne avec git), mais actuellement uniquement utilisé pour un projet personnel et de petites applications, peut-être pas idéal pour wxWidgets, bien que je n'utilise pas Qt non plus: )

Un mot d'avertissement: le débogueur Visual Studio est considéré comme "aussi bon qu'il est", mais vous payez pour cela. 1-4 ci-dessus sont tous des produits gratuits et très appréciés.

0
rubenvb