Je me demande simplement pourquoi les programmeurs qui programment en C ++ pour Windows utilisent toujours Visual Studio 6 au lieu de Visual Studio 2008? P>
n'est pas le compilateur en 2008 beaucoup mieux que celui de VS6? P>
La raison pour laquelle je demande comme j'ai utilisé de nombreux SDK qui sont toujours écrites dans VS6? P>
Merci beaucoup, P>
Steve p>
8 Réponses :
C'est une chose héritée. Trop de code est écrit en VC6. Il y avait 4 ans entre elle et vs 2003. Et il est toujours douloureux de faire glisser le code au nouveau compilateur, de nombreux développeurs et gestionnaires ne veulent tout simplement pas le faire. P>
Beaucoup de choses, les compilateurs plus récents vous permettent de désactiver certaines choses (comme une portée variable de boucle) pour faciliter la compatibilité avec l'ancien code plus facile.
@John, c'est encore douloureux. Certains code peuvent fonctionner différemment, certains code ne seront pas compilables, il faudra être une énorme session de test pour vérifier si tout va bien après la transition. Et après tout, il n'ya pas grand sens de déménager si vous ne pourrez pas utiliser de nouvelles fonctionnalités du compilateur. La transition est douloureuse et n'a pas beaucoup de sens.
Je suppose que dans un système totalement fermé, il n'est pas i> beaucoup de sens. Le temps qu'il devient plus viable financièrement, c'est lorsque vous souhaitez utiliser un code open-source et qu'il ne compile pas sous VC6, ou votre logiciel tiers arrête d'expédier VC6 versions de Libs / Code.
@John, oh, allez, la société ouvrira la source énorme du code hérité? Jamais, je te dis, ça ne va jamais arriver. Ils l'effacent complètement, c'est moins cher et plus pratique.
@John, et ces tiers libs, ils sont généralement gelés pour toute la version utilisée il y a 10 ans. C'est plus facile de cette façon, aucun nouveau bogue n'est introduit. Aucune inquiétude si la société ne fait pas de nouvelle version pour VC6, la version ancienne fonctionnera simplement bien.
Je n'ai pas dit que la société ouvrirait son code. J'ai dit s'ils voulaient utiliser i> code open-source.
@John, ok, désolé. Entre problèmes de recherche de troubles compilables avec VC6, ce qui rend le code open source compilable avec VC6, ce qui rend sa propre version de tout ce que le code source ouvert fournit et entraîne un code hérité sur le nouveau compilateur, plus le temps prend le temps et coûtera plus cher. Pas beaucoup de bibliothèques open source consistent en millions de lignes de code, mais pas mal de systèmes hérités sont aussi grandes ou plus grandes.
Au fait, il est toujours possible de compiler que liber la DLL et de le charger simplement. Manière sans tracas.
Mais mon point est que ces choses s'additionnent lentement au point où cela vaut l'effort. Et n'oubliez pas que de nombreux grands projets ont des exigences sur l'utilisation de logiciels tiers pris en charge i> ... Si le fournisseur goutte à la prise en charge de V3.0, vous pourriez avoir i> à Envisagez d'utiliser un nouveau compilateur pour travailler avec sa version v8.0.
@John, bien sûr, pourrait i> vaut l'effort. Mais ce n'est pas toujours aussi. Sinon, nous n'aurions pas VC6 ou COBOL.
La seule chose que je peux penser, c'est que Visual Studio 6 ne prend pas en charge .NET (C ++. NET en particulier) et donc si vous écrivez quelque chose de purement dans le code non géré, vous n'avez pas à gérer les paramètres de projet qui Appliquer au code géré. P>
En outre, une base de code héritée peut être écrite avec VS6 et ne veulent pas faire face à la mise à niveau de la base de code pour compiler dans les nouvelles éditions de Visual Studio. Surtout si la base de code est grande et complexe, ou possède de nombreuses dépendances tierces ou utilisée avec des outils anciens (E.g purify). P>
Une meilleure question serait de savoir si les gens démarreraient un nouveau projet avec MSVC ++ dans VS6 ou VS 2008 ... (pas de problème hérité) p>
«Si vous écrivez quelque chose de purement au code non géré, vous n'avez pas à gérer les paramètres de projet qui s'appliquent au code géré» - c'est juste une mauvaise logique. Les versions plus récentes de VS vous permettent d'écrire de l'ancien style non géré C ++ sans aucun gâcher sur "Désactiver" .net '
En partie, il peut être parce que les compilateurs plus tôt sont souvent (mais pas toujours) plus rapidement que la plus tard, et plus conforme aux caractéristiques / conformes aux normes. Je ne sais pas si cela s'applique avec VC6 VS plus tard, mais cela pourrait bien faire. P>
Dans le cas de la VC6, je pense que les deux principaux facteurs sont que l'IDE est beaucoup fort> plus rapide à utiliser que l'un des IDs de studio visuels douloureusement lents et gourmands, et qu'il y a une énorme quantité de Code hérité qui ne compilera pas avec plus tard et plus compilateurs conformes aux normes, VC ++. P>
D'autre part, VC ++ 6 utilisait plus, ce qui est beaucoup de temps perdu.
Visual Studio 2008 a compilé des clés pouvant assurer la compatibilité avec VS6. Je pense donc que la raison est que le studio visuel n'est pas gratuit. Cela coûte beaucoup d'argent si nous parlons de grandes équipes suffisantes. p>
Visual Studio Express est gratuit, avec une IDE aussi.
Express Edition n'a pas de fonctionnalités importantes par rapport à l'édition standard, qui n'est pas gratuite.
Plus important encore, vous ne pouvez pas utiliser Express Edition pour développer des logiciels commerciaux.
@vava: vous peut i> utiliser Express Edition pour développer des logiciels commerciaux. Je ne suis pas sûr de l'endroit où vous avez l'idée que vous ne pouvez pas. Il est assez explicite dans leur FAQ: - Microsoft.com/express/support/support- FAQ.ASPX - "Puis-je utiliser des éditions express pour une utilisation commerciale? Oui, il n'y a pas de restrictions de licence pour les applications construites à l'aide de Visual Studio Express Editions."
@IAIN, HM, merci, ne le saviez pas. Je n'y ai pensé que pour les universités seulement.
Avez-vous un lien Comment configurer VS2008 pour compiler "VS6-Style"?
J'ai trouvé un tutoriel moi-même comment utiliser VS2008 Compiler un projet VS6: resnikb.wardpress.com/2009/10/28/...
Mis à côté de là avoir beaucoup de code "héritage" (comme d'autres réponses signalées), il y a une raison plus directe de nombreux projets: dépendances. P>
La DLL d'exécution pour Visual Studio 6 expédié sur à peu près à chaque PC qui revenait à quelque chose comme Windows 98. C'est le seul moment d'exécution que vous pouvez compter sur l'installation sur un système d'utilisateur, ce qui signifie que vous n'avez pas nécessairement besoin de Expédiez la DLL d'exécution avec votre application. Il suffit de copier l'exécutable devrait être suffisant (autres problèmes d'installation nonobstant). P>
Si vous utilisez Visual C ++ 2008, vous devez vous inquiéter de l'expédition de la version correcte de Je connais d'au moins un plugin de navigateur qui compte sur ceci afin d'éviter de télécharger le temps d'exécution sur la machine d'un utilisateur, ce qui doublerait efficacement la taille de la distribution. P>
tl; dr? C'est plus simple! P> msvcr90.dll code>, msvcp90.dll code> (et MSI code>). p>
N'est-ce pas ce que le «package redistribuable de Microsoft Visual C ++ 2008» fait? (Link: Microsoft.com/downloads / ... )
MXP: Oui, mais vous êtes en tant que développeur, vous devez vous inquiéter de ce que vos clients ont le package redistribuable installé ou que votre installateur doit déclencher une installation. Cela rend les choses beaucoup plus compliquées.
Point intéressant, mais je ne pense pas que quiconque envisagerait une énorme taille de distribution comme un problème de nos jours. Vous pouvez toujours utiliser des torrents pour la livrer aux utilisateurs après tout :)
Relier tout ce qui supprime statiquement les problèmes de dépendances.
Ouais, et si vous voulez vraiment, vous pouvez utiliser l'original MSVCRT.DLL en conjonction avec VS2008. Après tout, c'est juste une DLL.
@Vava Bien sûr, la liaison statique évite un problème. Mais imaginez que vous expédiiez un plugin de 350 Ko lorsqu'il est lié de manière dynamique. Si vous (ou votre client) payez pour la bande passante, la liaison statique doublera la taille. Lorsque vous parlez de milliers et de milliers de téléchargements, doubler la taille ajoute le coût et l'heure!
@gavinb, c'est sûr que ça fait, mais cela vous permet d'économiser une fortune sur les appels de support :)
Eh bien, sur une installation propre de Windows 2000 MSVCP60.dll n'est pas présente, il n'y a pas non plus une redistribuabilité disponible pour inclure dans votre installateur (contrairement aux nouvelles versions Visual C ++). Je ne sais pas si tel est le cas pour les personnes âgées, mais pour Windows 2000, c'est un gros problème.
Visual C ++ 10 est revenu à vous permettre de placer ces DLL avec l'application qui le rend beaucoup plus facile. Bien sûr, il a aussi des inconvénients aussi, mais cela rend généralement la vie beaucoup plus facile :)
@Vava - La VC ++ Redist n'est pas vraiment un problème de taille / bande passante seule, les utilisateurs se confondent également.
@John, je ne voulais pas dire VC ++ Redist, je voulais dire une application statiquement compilée. Ce qui est sûr de taille plus grande mais n'a pas besoin de bibliothèques ou de packages réducteurs installés.
:) Je travaille sur VC6 sur le travail et à la maison Les deux raisons sont les suivantes: p>
à la maison strong> p>
-> A partir de l'heure du collège, j'utilise cela seulement, alors je suis réticent à passer à des plus récents. P>
-> J'ai essayé 2005 et 2008 et Express Edition, mais je ne veux pas utiliser car p>
-> Ils sont très lourds en termes de processus et de mémoire et sont lents comme comparables à VC6 P>
-> Je crois en la simplicité et la sensibilité, j'ai trouvé que la version plus récente est moins facile à
utiliser alors VC6 P>
Eh bien, je crois en la simplicité, c'est pourquoi je souhaite utiliser des fonctionnalités C ++ modernes qui réduisent le risque d'erreurs. Avec VC6, qui vient avec une implémentation STD LIB qui n'a même pas de modèles membres, cela est presque impossible. Heck, je ne pense pas qu'il y ait même une mise en œuvre actuelle de partagé_ptr code> là-bas qui fonctionnera sur VC6! Comment écrivez-vous du code simple sans tout cela ?!
:) Vous avez pris mon message dans la mauvaise voie. Je voulais juste dire au travail, je n'ai aucun contrôle sur le choix d'un autre serait avec vous si vous travaillez dans une grande organisation et que vous avez 700 Mo Code hérité :) . À la maison, j'utilise VC6 quand j'ai besoin de voir une chose qui est liée au travail, sinon j'utiliserai GCC (I HV non mentionné). tout thx pour votre commentaire
J'ai vu plusieurs applications MLOC d'être glissées de VC6 à VC7.1 à VC8 à VC9. (Cela faisait presque une décennie.) Mais c'était de toute façon un code croisé-plate-forme sur plusieurs plates-formes, ce qui a vraisemblablement rendu plus facile à porter cette chose à une autre version du compilateur. (Eh bien, de la VC6 à VC7.1, il ne faisait que supprimer tous les kilomètres et les solutionnels nécessaires à la VC6 ...)
Je me demande simplement pourquoi les programmeurs Programme de l'OMS en C ++ pour Windows TOUJOURS Utilisez Visual Studio 6 au lieu de Visual Studio 2008? P> blockQuote>
réponse: ils ne le font pas. Je dirais que c'est maintenant une petite minorité de projets utilisez MSVC ++ 6 P>
Ce n'est pas le compilateur en 2008 beaucoup mieux que celui dans vs6? p> blockQuote>
Réponse: Oui, c'est beaucoup mieux, et les outils IDE sont trop p>
La raison pour laquelle je demande comme j'ai utilisé de nombreux SDK qui sont toujours écrites dans VS6? P> blockQuote>
Réponse: Ce sont probablement des vieilles bibliothèques depuis longtemps ... la plupart des libs que je vois ont été portées à des versions plus récentes de VC ++ ou de fournir un fichier .ddsw. P>.
Puis-je demander où vous trouvez ces vieilles libs? Sont-ils encore en cours de développement? Sont-ils publics ou internes à l'entreprise où vous travaillez? P>
La raison principale que quiconque utilise toujours 6 est l'inertie ... cela fonctionne et ils le savent et ont appris à l'utiliser afin que les problèmes ne soient plus importés. P>
Nous avons un partenaire majeur qui fournit une utilisation avec l'API logicielle et le matériel. Les échantillons qu'ils créent sont toujours écrits dans VS6 car il y a toujours un fichier .dsw lorsque je décompressez le projet. Un de mes collèges utilise toujours VS6 et ne bougera pas à autre chose. Essayer de savoir pourquoi ils ne veulent pas passer à un compilateur ultérieur, c'est comme parler à un mur de briques.
Les entreprises qui produisent C ++ DLL au client peuvent toujours utiliser VC6 car S'ils construisent sur VC7 ou plus tard, ils doivent expédier les DLL d'exécution VC ++ correspondantes, telles que En outre, pour certains fabricants de matériel, ils souhaitent fournir une mise à niveau de chaque version de Windows dès que Win Windows 98, ils doivent rester à VC6. P> msvcrt.dll code> est préinstallé sur chaque version de Windows. Donc, ils n'ont pas besoin de déployer des dépendances au client. P>
msvcr110.dll code> pour VC11. P>
Stackoverflow .com / questions / 733495 / ...
Hoho, c'est la même histoire avec Delphi 7
"N'est-ce pas le compilateur en 2008 beaucoup mieux que celui de VS6?" - En fait, ils sont tous deux des ordures. Voir Liranuna.com/ssSe-Intrinsics-Optimizats-in-popular- Compiler RS
@Liranuna: totalement non pertinent. Toute personne envisageant que VS6 n'est pas au niveau technique où SSE compte.
Parce que SSE est la caractéristique la plus importante d'un compilateur? Les compilateurs MS modernes sont très i> bien.