Visual Studio 2012 renforce son support de la norme C++11

Visual Studio 2012 renforce son support de la norme C++11

Il va y avoir des heureux

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

06/11/2012 3 minutes
76

Visual Studio 2012 renforce son support de la norme C++11

Visual Studio 2012 est devenu depuis sa sortie la porte d’entrée principale pour l’écosystème Microsoft. Une évolution à venir proposera l’intégration d’une plus grande partie de la norme C++11, avec des améliorations qui seront clairement bienvenues.

visual studio 2012

 

La conférence BUILD de la semaine dernière était surtout focalisée sur le couple Windows 8 et Windows Phone 8. Les deux systèmes constituent la base d’un nouvel écosystème et disposent chacun d’une boutique d’applications. Bien que ces dernières soient différentes, elles peuvent avoir de larges pans de code identiques et Visual Studio 2012 permet justement de les publier ensuite dans le Store de Windows 8 ou le Marketplace de Phone 8.

 

Il y a quelques jours, Microsoft a annoncé qu’une Community Technology Preview était disponible pour Visual Studio. Cette CTP met à jour le compilateur C++ de l’environnement de développement pour y ajouter une meilleure compatibilité avec la norme C++11. Pour rappel, cette dernière harmonise les techniques de développement et propose des fonctionnalités supplémentaires. Elle est donc essentielle dans la création des applications l’utilisant.

 

Parmi les nouveautés gérées, on retrouvera désormais les modèles variadiques, les opérations explicitées de conversion ou encore la délégation des constructeurs. Puisque l’environnement WinRT notamment permet l’utilisation du code natif, les répercussions seront importantes quand la version stable sera proposée.

 

Nous avons demandé à Jean-Baptiste Kempf, principal développeur du lecteur multimédia VLC, ce qu’il pensait de ces améliorations. Le président de l’association VideoLan s’est montré enthousiaste : « C'est plutôt une excellente nouvelle que Microsoft ait réagi sur le support du C++11 avec une nouvelle version de son compilateur, car les modifications à la sortie de VS2012 sur le C++11 étaient vraiment trop légères. Cette version apporte les templates variadiques, les initialisations d'attributs et de listes et la délégation du constructeur, uniquement des bonnes nouvelles. Ceci étant dit, un peu plus de support pour le C99 aurait été le bienvenu ».

 

Microsoft recommande toutefois de ne pas utiliser cette CTP en environnement de production, en dépit des améliorations qu’elle comporte. Il faut de plus déjà avoir installé Visual Studio 2012 pour en profiter. Notez à ce sujet qu’il peut s’agir de l’une des versions Express gratuites. En outre, seul le compilateur est mis à jour : la bibliothèque standard, IntelliSense, le débogueur ou encore l’analyse statique n’ont pas bougé. Il faudra attendre la version finale pour voir tout ce petit monde évoluer.

 

Les développeurs intéressés pourront récupérer la CTP depuis le site officiel de Microsoft.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Fermer

Commentaires (76)


Le 06/11/2012 à 17h 04

On sait s’il y aura une version C# express pour win7 ou c’est bayzay ? J’ai rien trouvé sur le www de MS.


Ici ?








charon.G a écrit :



Ici ?





On avait bien lutté quand même pour l’avoir, la version desktop !



Le 06/11/2012 à 17h 14







charon.G a écrit :



Ici ?







La dernière fois que je suis venu voir cette page ils ne parlaient que du futur Win8, merci <img data-src=" />



Donc “pour Windows Desktop” ça inclus 7 aussi ? C’est bon à savoir <img data-src=" />



Oui c’était pas disponible au départ <img data-src=" />








pafLaXe a écrit :



La dernière fois que je suis venu voir cette page ils ne parlaient que du futur Win8, merci <img data-src=" />



Donc “pour Windows Desktop” ça inclus 7 aussi ? C’est bon à savoir <img data-src=" />





Pas essayé mais normalement ça marche sur 7 pas de raisons









charon.G a écrit :



Oui c’était pas disponible au départ <img data-src=" />





Il avait fallut gueuler sur les forums, mais MS nous a entendu très clairement sur ce coup, et ils ont fait marche arrière <img data-src=" />



Le 06/11/2012 à 17h 17







charon.G a écrit :



Pas essayé mais normalement ça marche sur 7 pas de raisons







Bah je vais essayer ça dans la semaine on verra… Heu j’ai pas le sentiment qu’ils leur faut toujours une bonne raison pour (ne pas) faire des trucs. <img data-src=" />









pafLaXe a écrit :



La dernière fois que je suis venu voir cette page ils ne parlaient que du futur Win8, merci <img data-src=" />



Donc “pour Windows Desktop” ça inclus 7 aussi ? C’est bon à savoir <img data-src=" />





En C++, tu ne peux avoir que Vista, 7 et 8… Normalement, une mise à jour devrait bientôt arriver pour avoir aussi XP, ce qui nous permettrait de passer à VS2012 dans ma boîte.

En C#, si tu utilises .NET 4.5, c’est pareil (Vista, 7 et 8), si tu utilises .NET 4, tu peux avoir XP.









hadoken a écrit :



Il avait fallut gueuler sur les forums, mais MS nous a entendu très clairement sur ce coup, et ils ont fait marche arrière <img data-src=" />





Je pense que c’est surtout pour inciter les développeurs à passer sur WinRT. Mais vu que WinRT ne répond pas à 100% des besoins pour le moment ils ont du céder.









Steelskin Kupo a écrit :



En C++, tu ne peux avoir que Vista, 7 et 8… Normalement, une mise à jour devrait bientôt arriver pour avoir aussi XP, ce qui nous permettrait de passer à VS2012 dans ma boîte.

En C#, si tu utilises .NET 4.5, c’est pareil (Vista, 7 et 8), si tu utilises .NET 4, tu peux avoir XP.





Pour C++ sur XP il existe une astuce pour utiliser l’ide 2012 avec le compilo 2010. Je n’ai pas essayé.

source



Le 06/11/2012 à 17h 24







Steelskin Kupo a écrit :



En C++, tu ne peux avoir que Vista, 7 et 8… Normalement, une mise à jour devrait bientôt arriver pour avoir aussi XP, ce qui nous permettrait de passer à VS2012 dans ma boîte.

En C#, si tu utilises .NET 4.5, c’est pareil (Vista, 7 et 8), si tu utilises .NET 4, tu peux avoir XP.







Non j’utilise une lib Mono intégrée à un environement spécifique. Faut juste que l’IDE se lance sur 7, pour le reste je me démerde. Sinon je reste sous 2010 mais si le 2012 corrige les quelques lacunes que je lui trouve, ça m’interesse.



Ils sont sympa mais, franchement, s’ils pouvaient pousser les améliorations sur Visual Studio 2010 (voire 2008)…

Ça m’agace de voir que Microsoft fournit un support minimal pour les compilos de sa suite Visual Studio.



VS2012 c’est bien, mais bon. Tout le monde ne va pas migrer dessus tout de suite, et si on doit EN PLUS attendre la prochaine version pour avoir le support à 100% de la norme C++11…


Euh, juste comme ça… Vous avez vraiment trouvé des trucs intéressants dans cette nouvelle norme ?



Perso, j’ai pas tout passé en revue, me suis arrêté à la catastrophe des enums <img data-src=" />


Le 06/11/2012 à 17h 53







Sebdraluorg a écrit :



Euh, juste comme ça… Vous avez vraiment trouvé des trucs intéressants dans cette nouvelle norme ?



Perso, j’ai pas tout passé en revue, me suis arrêté à la catastrophe des enums <img data-src=" />







J’ai rien lu du tout, ils ont quoi les enums ?









Takhiarel a écrit :



Ils sont sympa mais, franchement, s’ils pouvaient pousser les améliorations sur Visual Studio 2010 (voire 2008)…

Ça m’agace de voir que Microsoft fournit un support minimal pour les compilos de sa suite Visual Studio.



VS2012 c’est bien, mais bon. Tout le monde ne va pas migrer dessus tout de suite, et si on doit EN PLUS attendre la prochaine version pour avoir le support à 100% de la norme C++11…





+1, et cette salle manie de ne pas vouloir implémenter l’enregistrement des sln/vcproj dans des versions antérieures !!

Pour un outil de ce niveau c’est quand même un poil abusé !



Le 06/11/2012 à 17h 56







Sebdraluorg a écrit :



+1, et cette salle manie de ne pas vouloir implémenter l’enregistrement des sln/vcproj dans des versions antérieures !!

Pour un outil de ce niveau c’est quand même un poil abusé !







Toute ressemblance avec un troll serait purement fortuite :

Bah c’est du proprio, c’est comme ça, rien de choquant, faut bien vendre les MAJ.









pafLaXe a écrit :



J’ai rien lu du tout, ils ont quoi les enums ?





Bah ils ont enfin des vrais enums, sauf qu’ils ne représentent plus réellement des entiers…

Donc en gros, si tu utilises la nouvelle syntaxe d’enum qui est un ‘enum class’ qui devient bien un “objet” à part sur le quel tu peux faire monEnum.maValeur (sans voir apparaitre toutes les autres valeurs de la class qui n’ont rien à voir avec l’enum) mais tu ne peux du coup plus faire “if (monEnum.maValeur == 2)”

Tu perds en fait la conversion implicite <img data-src=" />









pafLaXe a écrit :



Toute ressemblance avec un troll serait purement fortuite :

Bah c’est du proprio, c’est comme ça, rien de choquant, faut bien vendre les MAJ.





Mouais, ils le font pourtant pour Office <img data-src=" />









Sebdraluorg a écrit :



+1, et cette salle manie de ne pas vouloir implémenter l’enregistrement des sln/vcproj dans des versions antérieures !!

Pour un outil de ce niveau c’est quand même un poil abusé !





Personnellement, je ne maintiens jamais des fichiers sln/vcproj.

Pour tout un tas de raison, l’une d’elle étant que je trouve leur format immonde. (mon avis).

Je les génère : premake, CMake, etc.



Accessoirement, ça résout ton problème. (tu peux générer des sln dans toutes les versions)



Le 06/11/2012 à 18h 04







Sebdraluorg a écrit :



Bah ils ont enfin des vrais enums, saut qu’ils ne représentent plus réellement des entiers…

Donc en gros, si tu utilises la nouvelle syntaxe d’enum qui est un ‘enum class’ qui devient bien un “objet” à part sur le quel tu peux faire monEnum.maValeur (sans voir apparaitre toutes les autres valeurs de la class qui n’ont rien à voir avec l’enum) mais tu ne peux du coup plus faire “if (monEnum.maValeur == 2)”

Tu perds en fait la conversion implicite <img data-src=" />







Ah oki. Bah j’ai jamais utilisé les enums en tant qu’entier, dans ma logique à moi, je trouve ça crado. Si tu ajoutes un élément au milieu de ta liste tout tes tests “en dur” se cassent la gueule. Du coup, je trouve ça pas plus mal <img data-src=" /> Après on a peut-être pas la même utilisation des enums <img data-src=" />



Le 06/11/2012 à 18h 08







Sebdraluorg a écrit :



Mouais, ils le font pourtant pour Office <img data-src=" />







Parce qu’avec leur système d’abonnement, je soupçonne une volonté de passer office en une sorte de “rolling release”. Ca s’expliquerait bien.



Après, je n’utilise pas office, et je suis relativement nouveau sous VS, donc je parle peut-être dans le vent. Mais au fond je voudrais te donner raison, évidement.









pafLaXe a écrit :



Ah oki. Bah j’ai jamais utilisé les enums en tant qu’entier, dans ma logique à moi, je trouve ça crado. Si tu ajoutes un élément au milieu de ta liste tout tes tests “en dur” se cassent la gueule. Du coup, je trouve ça pas plus mal <img data-src=" /> Après on a peut-être pas la même utilisation des enums <img data-src=" />





Bien entendu c’est crado et à éviter, bien que ce problème ne peut pas m’arriver car je donne toujours explicitement une valeur à mes membres d’enum.



C’est plutôt pour les flags que tu voudrais comparer avec des constantes que c’est ennuyeux. Et pour d’autres choses qui ne me reviennent plus comme ça…



En fait pour moi (et ça n’engage vraiment que moi) le C++ ne DEVRAIT PAS se substituer au développeur en lui interdisant certaines choses.

C’est pour moi un des principaux avantage du C++ de pouvoir faire ce que tu veux, à toi d’assurer que ce soit correct, si tu veux écrire en dehors de ton char* par exemple, c’est toi que ça regarde, il ne va pas vérifier, donc pourquoi “vérifier” mon enum !

Apres on va me dire oui mais, en entreprise, sur des gros projets avec beaucoup de développeurs nianiania…

On a qu’a ajouter un niveau de warning pour les enum si on veut que ce soit controllé. (ou aller vers du java/.net <img data-src=" />)



Mais j’avoue que je suis plus C que C++ même si j’apprécie l’OO, j’aime bien ma liberté ! <img data-src=" />









pafLaXe a écrit :



Ah oki. Bah j’ai jamais utilisé les enums en tant qu’entier, dans ma logique à moi, je trouve ça crado. Si tu ajoutes un élément au milieu de ta liste tout tes tests “en dur” se cassent la gueule. Du coup, je trouve ça pas plus mal <img data-src=" /> Après on a peut-être pas la même utilisation des enums <img data-src=" />







on ne pourra plus utiliser les énums positif comme étant des valeurs acceptés et des enum negatif comme étant des valeurs refusés et ensuite tout simplement faire

if(value &gt; 0){

//Accepter

}



Dommage, ça sauve quand même beaucoup de code quand on a plusieurs réponses possible, faudra retourner en tout temps un bool pour éviter de faire trop de validation inutile, donc des coup de processeur.



En tant que très très jeune “développeur” (une année et demi de DUT <img data-src=" /> ), Visual Studio/C++ ne me fait pas très “envie”.



Déjà, rien que ça : je sais pas si ça vient de l’API Win32, mais avoir des fonctions dont le nom commence par une majuscule, chez moi ça bloque.



Le côté usine à gaz aussi, qui fait que ce n’est pas très aisé de s’y retrouver en débutant. Faut trouver le temps de s’y mettre…



Quels sont les avantages de VS par rapport à un IDE comme QtCreator (vu mon parti-pris immense pour ce framework, ça peut pas faire de mal de jeter un œil à côté) ?








Sebdraluorg a écrit :



Euh, juste comme ça… Vous avez vraiment trouvé des trucs intéressants dans cette nouvelle norme ?





Si tu fais du C++ “à la papa” les avancées sont plus de l’ordre du confort ou de la ‘sugar syntax’ en caricaturant un peu (pas de jugement de valeur pour autant là dedans, les lambda functions sont par exemple une avancée plus que notable).



Par contre, si tu es amené à taper dans la métaprogrammation (dit autrement, si tu tripote du template), les avancées de C++11 sont absolument majeures.



Dit autrement, le C++ avait jusque là un gros atout qui constituait également sa faiblesse: du (très) fortement typé qui assurait à la fois performances et robustesse ; la contrepartie c’est que dès que tu voulais implémenter des choses avec une abstraction du type concret des données manipulées, c’était du coup extrêmement limité et lourd à faire (même avec du boost derrière).



Le C++11 apporte une bien plus grande souplesse à ce niveau avec nombre de concepts qui deviennent natif et permettent vraiment de décupler les possibilités.



PS: les enums, ça reste quelque chose de typé derrière, par défaut par des … int ;)

Ce qu’apporte le C++ à ce niveau, c’est une plus grande sécurité pour éviter par exemple de comparer deux valeurs issues d’enum différentes.





Ceci étant dit, un peu plus de support pour le C99 aurait été le bienvenu





Il me semble avoir déjà lu ce commentaire il y a 12 ans.








Sebdraluorg a écrit :



Euh, juste comme ça… Vous avez vraiment trouvé des trucs intéressants dans cette nouvelle norme ?







Qui me vient en tête comme ça :



Niveau langage : le move (dans sa version implicite, sans même avoir à y penser), les lambdas, auto, for, variadic template



Niveau libstd : async



En fait, c’est une tuerie.



PS:

Faire “== 2” sur un enum, c’est honteux.



PS2: J’ai oublié les alias templates.









eax13 a écrit :



En tant que très très jeune “développeur” (une année et demi de DUT <img data-src=" /> ), Visual Studio/C++ ne me fait pas très “envie”.



Déjà, rien que ça : je sais pas si ça vient de l’API Win32, mais avoir des fonctions dont le nom commence par une majuscule, chez moi ça bloque.



Le côté usine à gaz aussi, qui fait que ce n’est pas très aisé de s’y retrouver en débutant. Faut trouver le temps de s’y mettre…



Quels sont les avantages de VS par rapport à un IDE comme QtCreator (vu mon parti-pris immense pour ce framework, ça peut pas faire de mal de jeter un œil à côté) ?





Pour commencer Win32 est un API C (pour 90% au moins) et surtout c’est un API, heureusement que ces fonctions commencent par des majuscules !

C’est moi que ça contrarierait sinon ! <img data-src=" />



Pour le reste, oui VS est de fait une usine à gaz, mais une belle, bosse 5 ans avec VS, puis reviens à Qt Creator (avec le quel je boss à 80 % du temps au boulot) et tu comprendras ;-)



Rien que le debug ce n’est juste pas comparable, après ça ne fait pas de Qt Creator un mauvais outil, loin de là !



Le 06/11/2012 à 19h 04







waxime a écrit :



on ne pourra plus utiliser les énums positif comme étant des valeurs acceptés et des enum negatif comme étant des valeurs refusés et ensuite tout simplement faire

if(value &gt; 0){

//Accepter

}



Dommage, ça sauve quand même beaucoup de code quand on a plusieurs réponses possible, faudra retourner en tout temps un bool pour éviter de faire trop de validation inutile, donc des coup de processeur.







Je trouve pas hyper propre non plus <img data-src=" />

Les switch c’est mal ?









eax13 a écrit :



En tant que très très jeune “développeur” (une année et demi de DUT <img data-src=" /> ), Visual Studio/C++ ne me fait pas très “envie”.





Déjà, développer sous windows alors que juste à côté t’as un OS historiquement pensé par et pour les développeurs, avec des milliers d’outils tous plus efficaces les uns que les autres…



<img data-src=" />







eax13 a écrit :



avoir des fonctions dont le nom commence par une majuscule, chez moi ça bloque.





<img data-src=" /> si t’as même pas encore commencé à bosser et que tu es déjà arc-bouté sur des petites habitudes comme un vieux développeur quinquagénaire psycho-rigide, ça laisse peu d’espoir pour la suite









brazomyna a écrit :



Ce qu’apporte le C++ à ce niveau, c’est une plus grande sécurité pour éviter par exemple de comparer deux valeurs issues d’enum différentes.





C’est justement ça que je reproche ! (entre autre)

Je compare ce que JE veux comparer !







liukahr a écrit :



Faire “== 2” sur un enum, c’est honteux.





Le if (monEnum.maValeur == 2) était un simple exemple, tu ne verras jamais ça dans mon code, je te rassure ;-)



Par contre vous me donnez quand même envie de creuser un peu plus cette norme :-)









pafLaXe a écrit :



Les switch c’est mal ?





<img data-src=" /> comme les couteaux.



Certains ont déjà tuer d’autres Hommes avec.







Sebdraluorg a écrit :



C’est justement ça que je reproche !





Ben t’as une drôle de conception de la notion de type si tu es habitué à comparer des enums différentes.










eax13 a écrit :



En tant que très très jeune “développeur” (une année et demi de DUT <img data-src=" /> ), Visual Studio/C++ ne me fait pas très “envie”.



Déjà, rien que ça : je sais pas si ça vient de l’API Win32, mais avoir des fonctions dont le nom commence par une majuscule, chez moi ça bloque.



Le côté usine à gaz aussi, qui fait que ce n’est pas très aisé de s’y retrouver en débutant. Faut trouver le temps de s’y mettre…



Quels sont les avantages de VS par rapport à un IDE comme QtCreator (vu mon parti-pris immense pour ce framework, ça peut pas faire de mal de jeter un œil à côté) ?







a voir un vrai debugeur ? des outils d’analyse de code? gestion des fuites mémoires, des goulots d’etranglement? etc…



VS c’est vraiment le pied a condition de savoir s’en servir, connaitre les bon plugin, les bon raccourci clavier, etc ….

:)









brazomyna a écrit :



<img data-src=" /> comme les couteaux.



Certains ont déjà tuer d’autres Hommes avec.





Comme les goto… Et pourtant, c’est très utile.









jb a écrit :



Comme les goto… Et pourtant, c’est très utile.





Pour clarifier (s’il en est besoin), c’était le sens de ma réponse: c’est pas l’outil en lui même qui est bon ou mauvais, c’est l’utilisation qu’on en fait.









Sebdraluorg a écrit :



Pour commencer Win32 est un API C (pour 90% au moins) et surtout c’est un API, heureusement que ces fonctions commencent par des majuscules !

C’est moi que ça contrarierait sinon ! <img data-src=" />



Pour le reste, oui VS est de fait une usine à gaz, mais une belle, bosse 5 ans avec VS, puis reviens à Qt Creator (avec le quel je boss à 80 % du temps au boulot) et tu comprendras ;-)



Rien que le debug ce n’est juste pas comparable, après ça ne fait pas de Qt Creator un mauvais outil, loin de là !







Je debug très rarement, la seule fois où j’ai craqué car le résultat du debug était incompréhensible, c’était en fait Comodo qui bloquait Gdb <img data-src=" />







brazomyna a écrit :



Déjà, développer sous windows alors que juste à côté t’as un OS historiquement pensé par et pour les développeurs, avec des milliers d’outils tous plus efficaces les uns que les autres…



<img data-src=" />







Voui mai voilà <img data-src=" />



J’utilise Linux pour du bash et les projets de prog’ système. Je développe mes projets perso sous Windows par facilité, et par flemme d’allumer la VM.



Le jour où je n’aurai plus besoin d’utiliser des softs 3D Windaube Only en parallèle de la prog’, je ferai le grand saut.







Ewil a écrit :



a voir un vrai debugeur ? des outils d’analyse de code? gestion des fuites mémoires, des goulots d’etranglement? etc…



VS c’est vraiment le pied a condition de savoir s’en servir, connaitre les bon plugin, les bon raccourci clavier, etc ….

:)







Comme dit plus haut, j’ai pas souvent l’occasion d’utiliser le debugger (à part quand je trouve pas la segmentation fault tout seul).



Qu’est ce qui distingue le “vrai debugger” du “faux” (le vrai debugger, il debugge, mais c’est un vrai debugger <img data-src=" /> ) “moins bon” ?









eax13 a écrit :



En tant que très très jeune “développeur” (une année et demi de DUT <img data-src=" /> ), Visual Studio/C++ ne me fait pas très “envie”.



Déjà, rien que ça : je sais pas si ça vient de l’API Win32, mais avoir des fonctions dont le nom commence par une majuscule, chez moi ça bloque.



Le côté usine à gaz aussi, qui fait que ce n’est pas très aisé de s’y retrouver en débutant. Faut trouver le temps de s’y mettre…



Quels sont les avantages de VS par rapport à un IDE comme QtCreator (vu mon parti-pris immense pour ce framework, ça peut pas faire de mal de jeter un œil à côté) ?





Trouver du boulot plus facilement ?









Aloyse57 a écrit :



Trouver du boulot plus facilement ?





Si ça doit constituer l’élément ‘discriminant’ de ton profil par rapport à celui du petit voisin, ça sent d’emblée le moisi <img data-src=" />









brazomyna a écrit :



Ben t’as une drôle de conception de la notion de type si tu es habitué à comparer des enums différentes.





Bah non, je n’y suis pas habitué spécialement, et ne me rappel pas l’avoir fait, juste que si je veux le faire j’estime que c’est moi (en tant que dev) que ça regarde !

Il n’y a pas que des projets sur lesquels on travail à plusieurs, qu’on impose des conventions en entreprise ok, mais tu ne verras jamais un de mes projet perso avec un truc genre ‘static_cast(…) par exemple, c’est juste horrible !

Si tu sais que le type source et le type cibles sont compatibles je ne vois pas d’intérêt si ce n’est plus chiant à taper et à relire ! (je parle de projet perso hein !)

Et comme dit au départ, cela n’engage que moi, ma vision d’un C++ idéal c’est le plus permissif possible. D’autres le veulent le plus strict possible ! Les gouts les couleurs tout ça…









eax13 a écrit :



Qu’est ce qui distingue le “vrai debugger” du “faux” (le vrai debugger, il debugge, mais c’est un vrai debugger <img data-src=" /> ) “moins bon” ?







tu as deja essayé de regarder les valeurs d’un tableau avec gdb ? :)



et ne pas debuguer, c’est comme conduire avec les yeux fermés. c’est possible pas franchement pas facile (et impossible sur un gros projet)









Ewil a écrit :



tu as deja essayé de regarder les valeurs d’un tableau avec gdb ? :)



et ne pas debuguer, c’est comme conduire avec les yeux fermés. c’est possible pas franchement pas facile (et impossible sur un gros projet)







Pour ça, j’utilise qDebug()…

Je repasserai plus tard pour le lynchage en règle <img data-src=" /> <img data-src=" />









Ewil a écrit :



tu as deja essayé de regarder les valeurs d’un tableau avec gdb ? :)



et ne pas debuguer, c’est comme conduire avec les yeux fermés. c’est possible pas franchement pas facile.





Moi j’ai essayé, avec un frame 2K ! <img data-src=" /> Et… fallait pas ! <img data-src=" />









eax13 a écrit :



Pour ça, j’utilise qDebug()…

Je repasserai plus tard pour le lynchage en règle <img data-src=" /> <img data-src=" />





<img data-src=" /> <img data-src=" /> <img data-src=" />



Voilà, tu viens de ramasser pour un de mes collègue en même temps !



Le 06/11/2012 à 19h 42







Sebdraluorg a écrit :



ma vision d’un C++ idéal c’est le plus permissif possible. D’autres le veulent le plus strict possible ! Les gouts les couleurs tout ça…







En fait l’un empêche pas forcément l’autre. Je comprends qu’on puisse vouloir des outils les plus génériques possible car c’est toujours interessant de pouvoir les détourner comme on veut. C’était même juste indispensable à la bonne vieille époque de l’assembleur 8 bits. Aujourd’hui je dirais… tout dépend du contexte.









Sebdraluorg a écrit :



j’estime que c’est moi (en tant que dev) que ça regarde !





Et c’est le cas ; rien ne t’empêche de faire une comparaison si dans tel contexte particulier ça s’avère pertinent ; la seule différence c’est que ce sera plus explicite au niveau du code en C++11, et donc moins source d’erreur involontaire.





tu ne verras jamais un de mes projet perso avec un truc genre ‘static_cast(…) par exemple, c’est juste horrible !



Fais un binding C++ / Javascript sans utiliser un seul static_cast ou autre joyeuseté et on en reparle. Même chose pour du void*, du goto, etc… dans leur contexte.



Comme dit précédemment, les outils ne sont pas mauvais en soi, c’est leur (mauvaise) utilisation qui peut l’être.









Sebdraluorg a écrit :



Et comme dit au départ, cela n’engage que moi, ma vision d’un C++ idéal c’est le plus permissif possible. D’autres le veulent le plus strict possible ! Les gouts les couleurs tout ça…







<img data-src=" />



Le permissif c’est bien mais ça va juste à l’encontre du paradigme de la programmation orientée objet. <img data-src=" />

Personnellement je suis bien content que les énumérations ne puissent plus être comparées implicitement, ça m’évitera d’avoir à reprendre mon équipe sans arrêt.

C’est toujours plus facile de faire le test avec un entier quand on a le nez dans la base de données mais c’est une véritable horreur en fin de compte.



L’enum te permet de changer du jour au lendemain la valeur numérique correspondant à une notion métier sans que ça n’impacte ton code.

Dans les grosses structures par exemple les développeurs n’ont pas à se soucier que la variable : Align.Left soit égale à 3 en vrai (et ils ont bien raison). <img data-src=" />









AxelDG a écrit :



Le permissif c’est bien mais ça va juste à l’encontre du paradigme de la programmation orientée objet.





Absolument pas.



Tu peux faire de l’OO tout en étant extrêmement permissif ; ça demande juste plus de rigueur dans ta pratique pour ne pas se prendre les pieds dans le tapis.









brazomyna a écrit :



Absolument pas.



Tu peux faire de l’OO tout en étant extrêmement permissif ; ça demande juste plus de rigueur dans ta pratique pour ne pas se prendre les pieds dans le tapis.







J’ai pas dit que ça empêchait de faire de la POO…

Juste que ça allait à l’encontre du concept même.



Encore heureux qu’on te laisse le choix de “caster” un objet comme tu veux, même dans un langage ultra permissif.

Seulement quand tu diriges une équipe et/ou que tu as un gros turnover, t’es bien content que les gars ne puissent pas faire nawak dans ton projet et que ça pète direct à la compil’. <img data-src=" />









AxelDG a écrit :



<img data-src=" />



Le permissif c’est bien mais ça va juste à l’encontre du paradigme de la programmation orientée objet. <img data-src=" />

Personnellement je suis bien content que les énumérations ne puissent plus être comparées implicitement, ça m’évitera d’avoir à reprendre mon équipe sans arrêt.

C’est toujours plus facile de faire le test avec un entier quand on a le nez dans la base de données mais c’est une véritable horreur en fin de compte.



L’enum te permet de changer du jour au lendemain la valeur numérique correspondant à une notion métier sans que ça n’impacte ton code.

Dans les grosses structures par exemple les développeurs n’ont pas à se soucier que la variable : Align.Left soit égale à 3 en vrai (et ils ont bien raison). <img data-src=" />





Pour moi tu mélanges langage et convention, en entreprise il faut des conventions claires on est bien d’accord, mais sur un projet perso cette problématique n’existe pas.

Je ne vais pas coupler un de mes enum avec un enum d’une partie tierce, mais avec la valeur d’une db que j’ai designé et que je maintiens par exemple…









Sebdraluorg a écrit :



Pour moi tu mélanges langage et convention, en entreprise il faut des conventions claires on est bien d’accord, mais sur un projet perso cette problématique n’existe pas.

Je ne vais pas coupler un de mes enum avec un enum d’une partie tierce, mais avec la valeur d’une db que j’ai designé et que je maintiens par exemple…







Je comprends bien ta façon de voir les choses, j’ai longtemps été de cette école.



Ma philosophie aujourd’hui c’est de se dire qu’on ne sait jamais jusqu’où un projet sera mené et par combien de gens il sera maintenu à terme… A moins que tu ne considères tes projets voués à l’échec d’entrée… <img data-src=" />



Donc, pour en revenir à ta remarque en faisant une généralité… plus c’est strict et mieux c’est ! <img data-src=" />









AxelDG a écrit :



J’ai pas dit que ça empêchait de faire de la POO…

Juste que ça allait à l’encontre du concept même.





<img data-src=" /> par exemple les langages basés sur le concept de prototype proposent une souplesse énorme, peu de contraintes, le tout dans une approche totalement OO.







Sebdraluorg a écrit :



Pour moi tu mélanges langage et convention





+1+2+4+8+16





plus c’est strict et mieux c’est ! <img data-src=" />



<img data-src=" /> la seule Vérité, c’est: “plus c’est strict, moins c’est souple”.



Ce qui amène le plus souvent à une contradiction avec:





AxelDG a écrit :



on ne sait jamais jusqu’où un projet sera mené







Comme souvent dans le monde réel, tout est une affaire de dosage et de compromis ; donc tout paradigme basé sur le “plus c’est ceci, mieux c’est cela” est déjà une ‘connerie by design’.









brazomyna a écrit :



<img data-src=" /> la seule Vérité, c’est: “plus c’est strict, moins c’est souple”.







Sauf que dans la vraie vie beaucoup de développeurs confondent souplesse et j’menfoutisme…



On est pas forcement moins payé à faire de la merde. <img data-src=" />









brazomyna a écrit :



Comme souvent dans le monde réel, tout est une affaire de dosage et de compromis ; donc tout paradigme basé sur le “plus c’est ceci, mieux c’est cela” est déjà une ‘connerie by design’.







<img data-src=" />



Le 06/11/2012 à 23h 34







charon.G a écrit :



Je pense que c’est surtout pour inciter les développeurs à passer sur WinRT. Mais vu que WinRT ne répond pas à 100% des besoins pour le moment ils ont du céder.







Pitié pas ça. WinRT c’est juste abusé : il faut une licence pour développer spécifiquement dessus (gratuite… pour l’instant), en plus de la lience VS (parce que MS se réserve tous les droits sur l’API donc pas d’autres IDE dispo pour les applis WinRT) pour développer des applications qui ne peuvent être distribué pour 2 OS seulement qu’en passant par un magasin dont l’inscription annuelle est payante et qui prend sa part à la façon d’un maquereau (30 à 20%).

Apple avait déjà un modèle relativement fermé, mais là MS le dépasse allégrement.









Skeeder a écrit :



<img data-src=" />







Surement une “private joke” parce que je vois pas l’aspect comique là… <img data-src=" />



Surtout quand ça ressemble à la même rhétorique que tous les noobs de la POO me sortent fréquemment pour sortir des rangs… <img data-src=" />









eax13 a écrit :



En tant que très très jeune “développeur” (une année et demi de DUT <img data-src=" /> ), Visual Studio/C++ ne me fait pas très “envie”.



Déjà, rien que ça : je sais pas si ça vient de l’API Win32, mais avoir des fonctions dont le nom commence par une majuscule, chez moi ça bloque.



Le côté usine à gaz aussi, qui fait que ce n’est pas très aisé de s’y retrouver en débutant. Faut trouver le temps de s’y mettre…



Quels sont les avantages de VS par rapport à un IDE comme QtCreator (vu mon parti-pris immense pour ce framework, ça peut pas faire de mal de jeter un œil à côté) ?





ahhh, gros +1 pour QtCreator, je l’ai adopté moi aussi <img data-src=" /> (CUDA/C++)









AxelDG a écrit :



Surement une “private joke” parce que je vois pas l’aspect comique là… <img data-src=" />



Surtout quand ça ressemble à la même rhétorique que tous les noobs de la POO me sortent fréquemment pour sortir des rangs… <img data-src=" />







Ce qui me faisait marrer c’est que la critique du paradigme était tournée comme… un paradigme.



Je ne participe pas du tout au débat. <img data-src=" />









Skeeder a écrit :



Ce qui me faisait marrer c’est que la critique du paradigme était tournée comme… un paradigme.



Je ne participe pas du tout au débat. <img data-src=" />







Tu devrais puisque tu sembles maîtriser le sujet au moins aussi bien que les langues les plus pendues. <img data-src=" />









brokensoul a écrit :



ahhh, gros +1 pour QtCreator, je l’ai adopté moi aussi <img data-src=" /> (CUDA/C++)







Il manque quand meme une meilleur gestion de la bascule debug/realese… et des lib :)









AxelDG a écrit :



Sauf que dans la vraie vie beaucoup de développeurs confondent souplesse et j’menfoutisme…

On est pas forcement moins payé à faire de la merde. <img data-src=" />







C’est triste, mais tellement vrai. Plus que du j’m’en foutisme, c’est surtout qu’ils n’ont pas le niveau. Faire du code propre, clair ET évolutif, ça demande de l’expérience, une vision de son code ouverte.



Quand le projet commence, on a parfois l’impression de péter plus haut que son cul et d’en faire trop. Et puis quelques semaines plus tard, on est bien content d’avoir laisser toutes les possibilités d’extension.














AxelDG a écrit :



la même rhétorique que tous les noobs de la POO me sortent fréquemment pour sortir des rangs





On retiendra donc que c’est là que le débat constructif a été enterré <img data-src=" />









Ewil a écrit :



Il manque quand meme une meilleur gestion de la bascule debug/realese… et des lib :)





Pour le moi, le plus gros point noir, c’est une gestion simple de la documentation. Recompiler un plugin doxygen à chaque release, c’est un poil relou.



Pour comparer deux énumérations différentes, le mieux c’est de passer par un convertisseur, du genre Type1.ToType2() et dans ce cas, si les énumérations évoluent, il n’y a que ça à changer et on n’a jamais à connaitre les valeurs implicites. Et en plus ça permet de faire un Test Unitaire sur la conversion afin d’être sûr qu’on s’est pas planté !



Je travaille sur un gros projet (plusieurs millions de lignes de code) développé sur 15 ans par une cinquantaine de développeurs différents dont plus aucun n’est présent dans la société. Depuis deux ans a été mis en place ce genre de règles très strictes. Ça a permis de rendre le code beaucoup plus stable et facile à relire et à faire évoluer.








charon.G a écrit :



Pour C++ sur XP il existe une astuce pour utiliser l’ide 2012 avec le compilo 2010. Je n’ai pas essayé.

source





Ca n’est pas pour lancer, l’IDE sour XP (d’ailleur ça, je m’en fiche, j’utilise Windows 7 au boulot, bientôt 8), c’est pour utiliser le compilo vc11 pour générer des binaires qui tournent sous XP et pouvoir ainsi bénéficier des nombreuses avancées du compilo. Microsoft a sorti une Preview, mais j’attends la version finale de cette preview pour passer à VS2012. <img data-src=" />









AxelDG a écrit :



Le permissif c’est bien mais ça va juste à l’encontre du paradigme de la programmation orientée objet. <img data-src=" />





Je vois pas en quoi être permissif va à l’encontre du paradigme de la programmation orientée objet.



C++ est un langage mutli-paradigme. Avec, tu peux faire de la POO, mais aussi de la procédurale, fonctionnelle, etc. Et pourquoi pas mixer tout ça.

Après ça dépend de ta rigueur et de ce que tu veux faire. Tu peux très bien utiliser du C++ strictement comme à la Java. Ou pas. C++ c’est la liberté.









Mudman a écrit :



Je vois pas en quoi être permissif va à l’encontre du paradigme de la programmation orientée objet.



C++ est un langage mutli-paradigme. Avec, tu peux faire de la POO, mais aussi de la procédurale, fonctionnelle, etc. Et pourquoi pas mixer tout ça.

Après ça dépend de ta rigueur et de ce que tu veux faire. Tu peux très bien utiliser du C++ strictement comme à la Java. Ou pas. C++ c’est la liberté.





<img data-src=" />









Mudman a écrit :



Je vois pas en quoi être permissif va à l’encontre du paradigme de la programmation orientée objet.





<img data-src=" />



Encore un “noob de la POO qui veut sortir des rangs”



<img data-src=" />









Steelskin Kupo a écrit :



Ca n’est pas pour lancer, l’IDE sour XP (d’ailleur ça, je m’en fiche, j’utilise Windows 7 au boulot, bientôt 8), c’est pour utiliser le compilo vc11 pour générer des binaires qui tournent sous XP et pouvoir ainsi bénéficier des nombreuses avancées du compilo. Microsoft a sorti une Preview, mais j’attends la version finale de cette preview pour passer à VS2012. <img data-src=" />





Tu as mal lu le lien. L’astuce permet d’utiliser l’ide 2012(sur 7 ou 8) et le compilo visual 2010 pour créer des applications pour XP. Ca permet déjà de profiter du nouvel IDE .



Je ne passe pas non plus sur VS2012 pour le C++ car il ne supporte pas XP . par contre en programmation serveur (C#,asp.net mvc4) , je ne suis pas embété par la compatibilité.









brazomyna a écrit :



<img data-src=" />



Encore un “noob de la POO qui veut sortir des rangs”



<img data-src=" />





Attaque personnelle et aucun argument évoqué.

Merci pour ta contribution inutile.









Mudman a écrit :



Attaque personnelle et aucun argument évoqué.

Merci pour ta contribution inutile.





Ou bien note d’humour après plusieurs contributions ‘utiles’ (parlons plutôt de posts argumentés) postées ci-avant. Nommément #26, #36, #46, #48, #52.



Mais si tu veux, on peut aussi chercher si 100% de tes posts sont ‘utiles’.

<img data-src=" />









brazomyna a écrit :



Ou bien note d’humour après plusieurs contributions ‘utiles’ (parlons plutôt de posts argumentés) postées ci-avant. Nommément #26, #36, #46, #48, #52.



<img data-src=" />





Wep, à sa décharge, j’ai aussi eu du mal à la première lecture de ta réponse, il a fallut que ça tilt (après j’ai ris <img data-src=" />)









brazomyna a écrit :



On retiendra donc que c’est là que le débat constructif a été enterré <img data-src=" />







Ca n’avait rien de personnel mais j’admets effectivement avoir du mal avec les phrases toutes faites comme celle-ci :





brazomyna a écrit :



Comme souvent dans le monde réel, tout est une affaire de dosage et de compromis ; donc tout paradigme basé sur le “plus c’est ceci, mieux c’est cela” est déjà une ‘connerie by design’.







D’ailleurs ça me donne envie de répondre par le même genre de lieux communs comme je l’ai fait ci-dessus.

Mais bon, faut pas m’en vouloir j’avais envie d’aller me coucher… et je suis désolé si j’ai pu être blessant. <img data-src=" />



Pour avoir formé pas mal de personne à la POO, faut admettre que l’argumentaire de certains réfractaires au “typage fort” est bien souvent complétement à côté de la plaque. <img data-src=" />









brazomyna a écrit :



Ou bien note d’humour après plusieurs contributions ‘utiles’ (parlons plutôt de posts argumentés) postées ci-avant. Nommément #26, #36, #46, #48, #52.



Mais si tu veux, on peut aussi chercher si 100% de tes posts sont ‘utiles’.

<img data-src=" />





Ce n’est pas de l’humour, c’est une réflexion agressive et qui ne sert à rien. Et je ne l’apprécie pas.

Concernant le post que tu cites (et tu dois avoir une vie bien vide pour passer du temps à ça), je le trouve tout à fait utile (comme le renforce le commentaire qui en en a été fait plus bas).









Mudman a écrit :



Ce n’est pas de l’humour, c’est une réflexion agressive et qui ne sert à rien. Et je ne l’apprécie pas.





Mais si, s’en est, relis le message de AxelDG:





AxelDG a écrit :



Surtout quand ça ressemble à la même rhétorique que tous les noobs de la POO me sortent fréquemment pour sortir des rangs… <img data-src=" />





Comme tu peux le voir c’était juste une boutade destinée à la remarque faite plus haut…

Ca ne te visais même pas, et pour le coup si, je trouve que c’était plutôt marrant !









Mudman a écrit :



Ce n’est pas de l’humour, c’est une réflexion agressive et qui ne sert à rien.





C’est le risque, quand on prend le risque d’intervenir dans une discussion sans avoir lu les posts précédents: on interprète mal, et on s’emporte pour rien.



Et si on a un propention à être un ‘redresseur de tort’ tendance soupe au lait en plus … <img data-src=" />







Mudman a écrit :



tu dois avoir une vie bien vide pour passer du temps à ça





Comme disait l’autre: “Attaque personnelle et aucun argument évoqué. Merci pour ta contribution inutile.”



<img data-src=" />