# Wednesday, November 28, 2007

Le site MSDN, c'est un peu comme le Musée du Louvre : même en y revenant plusieurs fois, on y trouve toujours quelque chose qu'on n'avait pas remarqué avant.

La page "How do I ?" Videos for Native Code contient une cinquantaine de vidéos (en anglais) de 15 à 20 minutes. S'il y a quelques sujets sur l'interopérabilité code natif/code managé, la plupart des vidéos concernent exclusivement le code natif C++. Le niveau va de l'initiation, à des sujets plus avancés comme le debogage distant ou encore l'utilisation du Kernel Transaction Manager de Vista !

 

Et pendant que je suis sur le site MSDN, un petit clin d'oeil. Comparez les trois pages ci-dessous. Il y en a une qui est à jour, les autres pas encore ;-) :

http://msdn2.microsoft.com/en-us/vstudio/default.aspx (page du site MSDN américain)
http://msdn2.microsoft.com/en-gb/vstudio/default.aspx (la même page, sur le site anglais UK)
http://msdn2.microsoft.com/fr-fr/vstudio/default.aspx (la même page, en français)

 

Tags  |  | 
 28 November 2007, 01:20

Une vidéo de 46 minutes sur channel 9 nous fait découvrir que C++ en tant que langage non managé existe, et continuera d'exister. La plate-forme C++/MFC, bien que quasiment non mise à jour depuis 6 à 8 ans, a toujours des utilisateurs. Microsoft commence (?) à entendre que C++/MFC ne peut pas forcément être remplacé par C++ managé ou C#/VB.

Steve Teixeira (Visual C++ manager) fait part de ses commentaires sur la sortie de la prochaine version des MFC/TR1 dans quelques mois. La plate forme C++/MFC continuera à évoluer indépendamment de la plate-forme .NET. Ouf !

Steve Teixeira au TechEd Barcelone
Steve Teixeira au TechEd de Barcelone

Au fait, Channel 9 utilise un player vidéo écrit en Silverlight... alors que ce site utilise un peu de F###H, désolé...;)

Justement, demain je me mets à Silverlight. Il y a une présentation de Silverlight à Paris. Quand j'aurai un moment je remplacerai mon animation F###H en haut de page par une animation Silverlight.

Voir la vidéo
Ecouter le podcast (MP3)
Ecouter le podcast(WMA)
Telecharger la Vidéo

Tags  |  | 
 28 November 2007, 00:28
# Wednesday, November 21, 2007

Ca y est, j'ai installé VS2008 et migré le projet C++ sur lequel je travaille.

Ce projet C++ est un projet moyen (40.000 lignes de C++). C'est une application d'imagerie médicale destinée à des chirurgiens, pour leur permettre de travailler avec leurs images au format spécifique Dicom. Ce projet utilise la bibliothèque Codejock, ainsi que les librairies OpenJpeg (jpeg2000), LibTiff, Jpeg Group.

L'installation de VS2008 est trèèèès longue. Elle dure plusieurs heures (plus d'une demi-journée). Faut dire qu'il y en a des composants .NET à installer ! Ne faites pas comme moi, ne l'installez pas un mardi, le jour des patches de Vista (patch tuesday), pour ne pas avoir à rebooter au milieu de l'installation ;). Lancez l'installation un soir, ce sera bon pour le lendemain matin.

Sous Vista x64, tout s'est bien passé. Pour l'instant je garde VS2005 et VS2008. Je n'avais pas installé de béta de VS2008 sur ce PC. D'après Scottgu, il faut désinstaller soigneusement une béta de VS2008 avant d'installer la version finale, et ça n'a pas l'air très simple.

Deuxième étape pour moi : compiler la librairie Codejock (xTreme Toolkit pro) avec VS2008. Là encore, tout se passe bien avec la dernière version (11.2.1), le programme d'installation de Codejock fait ça tout seul pour VS2008. Comme quoi ils sont bien chez Codejock : leur librairie fonctionne impeccablement sous VS2008. Il avaient sans doute anticipé avec les versions béta de VS2008. C'est dans ces cas là qu'on distingue les pros.

Lorsque j'ouvre mon projet C++/MFC sous VS2008, l'assistant de conversion de projet ne pose pas de problème. Je récupère bien mes environnements. La compilation du projet (en Unicode) se fait également sans problème, et le logiciel fonctionne.

Bon, je suis quand même surpris, ça s'est passé tout seul. Je ne sais pas si le compilateur a été modifié. Lors de la sortie de VS2005, le compilateur avait été modifié. La migration avait été plus longue. Il avait fallu modifier le code à plusieurs endroits. Là, non.

Résultat : en passant de VS2005 à VS2008, la taille du binaire diminue de 50 Ko (sur 3,4 Mo). Le temps de compilation diminue de 10 secondes (moyenne de 2"59 à 2"48).

Pour un utilisateur C++, pas grand chose ne change, donc. Ce qui est quand même une bonne nouvelle : la migration est facile. Ah si, j'ai quand même l'impression que l'IDE est un peu plus rapide. Je n'ai plus observé ces blocages assez fréquents avec VS2005.

Est-ce qu'il faut migrer votre projet C++ natif vers VS2008 ? Ma foi, si vous êtes abonné à MSDN et que vous avez VS2008, faites-le : ça a l'air de bien fonctionner. Mais si vous ne faites que du C++ natif, vous ne verrez pas beaucoup de différence entre VS2005 et VS2008. En attendant la nouvelle version des MFC et des librairies C++ dans quelques mois.

 

Tags  | 
 21 November 2007, 17:52
# Monday, November 19, 2007

Toute la famille des produits Visual Studio 2008 (Express, Professional, Team Suite) est disponible ici, y compris les versions gratuites, ou bien sur le site MSDN pour les abonnés.

A cette occasion, une vidéo très intéressante a été postée sur channel9 : une interview de S. Somasegar (Developer Division VP), Jeff Beehler (mon ex-boss et actuellement VS Team System manager), et Carol Grojean (program manager of VS2008 & .NET 3.5).

Dans cette vidéo, Soma annonce que pour nous, adeptes du C++, il faudra attendre 2 mois pour obtenir une béta de la nouvelle version des MFC et de C++ TR1. Rendez-vous donc au mois de janvier pour que Visual Studio 2008 devienne -enfin- un outil pour les "vrais" programmeurs ;). Car, si la plupart des nouveautés de VS2008 concernent le code managé (et notamment la révolution LINQ), la plupart des développeurs chez Microsoft programment en C++. Si, si ! C'est le grand chef qui le déclare.

Plein d'autres choses intéressantes dans cette vidéo...

Pour la liste des nouvelles fonctionnalités, voir l'article de Scottgu, ou celui de Jeff Beehler pour VSTS.

Et pour ceux qui voudraient avoir de la conversation dans les salons pendant les pauses des conférences Microsoft, j'ai vu sur le blog de Redo un lien vers un .NET Framework 3.5 Training Kit qui a l'air très intéressant...

Tags  | 
 19 November 2007, 19:32
# Wednesday, November 14, 2007

Comparaison n'est pas raison. Mais quand même...

Prenons trois petits programmes :

- Une application de gestion de comptes bancaires (Votre Budget) écrite en C++/MFC avec la librairie BCGSoft, linkée statiquement avec MFC et BCG (oui, la librairie qui va être intégrée dans la prochaine version des MFC)

- Un petit freeware écrit en VB.NET qui aide à arrêter de fumer, StopClope. On entre la date à laquelle on arrête de fumer, et puis on obtient des récompenses en fonction du nombre de jours qu'on tient sans fumer. Par exemple, j'ai arrêté il y a 101 jours, économisé 707 euros, et j'ai gagné 19 jours d'espérance de vie. Motivant non ?

- Une application WPF, LCI Intégrale qui affiche des vidéos en streaming.

Voici à quoi ressemble mon gestionnaire des tâches Vista quand je lance ces trois programmes en même temps :

Mémoire occupée par les trois applications :

- C++/MFC/BCG : 5 Mo (13 Mo)

- Winform : 15 Mo (28 Mo)

- WPF : 64 Mo (145 Mo)

A vue de nez, une application WPF occuperait 4 fois plus de mémoire qu'une application Windows Forms, et 12 fois plus qu'une application MFC/BCG.

Ces trois programmes sont des petites applications, mais les valeurs ne varient pas énormément. Pour donner un ordre de grandeur, j'ai aussi lancé Word 2007 (22 Mo), Photoshop (65 Mo), et Visual Studio (50 Mo).

Le confort ressenti à l'utilisation de ces applications est directement proportionnel à l'espace mémoire utilisé. Photoshop et Visual Studio sont lourds à utiliser, n'est-ce pas ?

Ah ! Quel plaisir d'utiliser des logiciels écrits en C++ ! Alors faites plaisir à vos clients, programmez en C++ !

Tags  |  | 
 14 November 2007, 00:48
# Tuesday, November 13, 2007

Mac & PC contiennent du cadmium, beryllium, plomb, mercure...

Les pubs originales sont là : www.apple.com/getamac/ads/

C'est un PC sur lequel on a installé trop d'applications .NET :p

Tags
 13 November 2007, 16:12
# Sunday, November 11, 2007

C'est officiel, une grande partie des nouveautés de la nouvelle version des MFC incluse dans Visual Studio 2008 ne sera pas (entièrement) développée par Microsoft, mais a d'ores et déjà été rachetée à la société russe BCGSoft. Il s'agit du produit BCG Controlbar Pro. Pour avoir une idée précise des nouveautés à venir, il suffit d'aller sur la page www.bcgsoft.com/FeatureTour/bcgcontrolbar-tour.htm, il y a de nombreuses captures d'écran.

J'ai déjà personnellement utilisé BCG Controlbar Pro pour créer différents produits C++/MFC/BCG depuis 2002, et j'ai été très satisfait du résultat. L'utilisation de BCG Controlbar dans une application MFC est relativement simple à mettre en oeuvre, la migration des applications existantes ne devrait pas poser de gros problème. Depuis 2004 j'ai aussi utilisé le concurrent direct, la librairie Codejock (www.codejock.com), plus complète et aussi un peu plus complexe à utiliser.

Avant que d'ici 6 mois environ, nous puissions disposer de la nouvelle version des MFC, il est déjà possible de télécharger une version d'évaluation de BCG ControlBar ici : www.bcgsoft.com/bcgcontrolbar-download.htm.

Que vont devenir les deux frères ennemis BCGSoft et Codejock, maintenant que leurs technologies sont "gratuites" avec Visual C++ ? BCGSoft propose aussi d'autres produits pour .NET, et Codejock... ?

Pour illustrer concrètement cette nouvelle étape des MFC, voici deux captures d'écran de l'exemple de code C++/MFC Drawcli qui est livré avec Visual C++ depuis longtemps... Le voici relooké ! Avant - Après. Sans commentaire !

Tags  | 
 11 November 2007, 22:10

En 1994, c'était Windows 3.1 (vous vous souvenez de l'horloge ??), les modems 4800 bauds (mille fois plus lent que ma box à 30 euros/mois), les imprimantes matricielles, les disquettes 5"1/4 (il y en avait encore), et.... le premier épisode pilote de 24 !! Sans son PDA, Jack Bauer est perdu, mais il sauve quand même le monde.


Jack Bauer appelle Nina en PCV depuis une cabine téléphonique, il n'a pas de monnaie sur lui.

Tags
 11 November 2007, 15:43

La prochaine version de C++ normalisée par l'ISO comitee s'appelle C++0x. Il s'agit d'une évolution de C++, un peu dans le langage lui-même, mais surtout dans les librairies qui seront livrées avec le compilateur.

La première question que je me suis posé en voyant C++0x, c'est bien sûr : "pourquoi 0x ??". En fait c'est tout simple : cela fait quelques années que Bjarne Stroustrup (l'inventeur du C++) et quelques autres pensent à une nouvelle version de C++, sans savoir en quelle année elle sortirait. Mais ils se sont quand même dit que la nouvelle version devrait quand même être normalisée par l'ISO et disponible avant la fin de la décennie. Donc, qu'elle s'appellerait C++07, C++08 ou C++09. Vu que nous sommes en 2007 et que l'ISO ne normalisera C++0x au plus tôt qu'en 2008, le x sera sans doute un 9.

Ce C++0x n'a donc rien à voir avec l'hexadécimal, et ne sera absolument pas suivi d'une version C++0xFF ! Personnellement je préfère C++0x à C++09, ça fait plus (C++0x > C++ ? (C++)++ : (C++)--). J'espère que C++0x continuera à s'appeler ainsi, et ne s'appellera pas C++09, même si on a déjà vu passer un C++98.

Bon, mais qu'est-ce qu'il y aura de 9/x (haha !) dans C++0x/9 ? Eh bien il y aura surtout les fonctionnalités décrites dans TR1 (Technical Report 1), et qui seront disponibles au printemps 2008 comme une mise à jour de VS2008. Je reviendrai bien sûr sur le sujet, mais en attendant que Microsoft nous propose leur implémentation de TR1, vous pouvez d'ores et déjà installer et utiliser les nouvelles fonctionnalités TR1 implémentées par la société Boost ! Téléchargez l'installateur de TR1 pour VS2003 ou VS2005 sur leur site www.boost-consulting.com.

Tags
 11 November 2007, 14:32
# Saturday, November 10, 2007

Aujourd'hui j'ai lu sur le blog de S. Somasegar que les MFC allaient subir une évolution conséquente l'année prochaine ! S. Somasegar est Corporate Vice President, Developer Division de Microsoft.

Après avoir participé au développement de Visual C++ 1.0, 1.5 et 2.0 en 1991/1992 avec Jeff Beehler et Olivier Ezratty, j'utilise les MFC depuis 15 ans pour (faire) développer de nombreux logiciels. Mais force est de constater que depuis 6-7 ans, les MFC n'évoluent (presque) plus, et que Microsoft ne communique auprès des développeurs qu'autour du code managé. Pourtant, on ne fait pas avec C#/.NET la même chose qu'en C++/MFC ! L'annonce d'une vraie nouvelle version des MFC est à mon avis un évenement réellement très important pour la communauté des développeurs Microsoft. Enfin, au moins ceux qui trouvent que, quand même, .net c'est facile à utiliser mais c'est pas ça.

Pour fêter ça, voilà, je crée un blog tout neuf !

 

Tags  | 
 10 November 2007, 21:43

Lu sur le blog de S. Somasegar :

" En aout, j'ai écrit un message early thinking on Visual C++ post Orcas. L'équipe C++ et moi avons eu beaucoup de retours très intéressants. Merci.

L'équipe C++ examine ces retours, et finalise les directions dans lesquelles nous devons orienter l'évolution de Visual C++. L'une des premières directions est un investissement dans des librairies écrites en code natif. L'équipe travaille sur une mise à jour significative des Microsoft Foundation Classes (MFC). Nous la livrerons au cours du premier semestre 2008 comme une mise à jour de Visual Studio 2008. Nous en aurons un aperçu au début de l'année prochaine.

Avec cette mise à jour des MFC, les développeurs pourront créer des applications avec le "look and feel" de Microsoft Office, Internet Explorer et Visual Studio. Les nouvelles fonctionnalités vont inclure le "ribbon" d'Office 2007, le look d'Internet Explorer avec ses "rebars" et "task panes", le look de Visual Studio avec sa fonctionnalité d'ancrage (docking) sophistiqué, les fenêtres qui se masquent automatiquement (auto-hide), les grilles de propriétés (property grid), et tout ce qui va avec. Vos utilisateurs pourront aussi paramétrer les menus et barres d'outils de vos application en utilisant le glisser déplacer (live drag and drop).

De plus, nous allons aussi supporter TR1. TR1 est la première évolution de la librairie standard C++. Notre implémentation de TR1 inclus des fonctionnalités importantes comme les pointeurs intelligents (smart pointers), les expressions régulières, de nouveaux conteneurs (tuple, tableaux, ensembles non ordonnés, etc.), un générateur de nombres aléatoires sphistiqué, des encapsulations de fonctions polymorphiques, les "type traits", et d'autres.

Rendez-vous au début de l'année prochaine pour de plus amples informations. En attendant, vous pouvez lire le blog de l'équipe C++. Vous pouvez aussi regarder la vidéo de channel 9 sur les nouvelles librairies MFC."

Quelle révolution après des années d'overdose de code managé. Microsoft se s'aperçoit enfin qu'ils n'ont pas (encore) tué tous les développeurs C++/MFC !

Précisions :

  • une version béta des nouvelles MFC sera dispo début 2008. La version finale au printemps (entre le 21 mars et le 21 juin !)
  • C++ TR1, "Technical Report 1", ce sont de nouvelles classes qui viennent enrichir la librairie standard C++. C++ TR1 n'est pas spécifique à Windows, est disponible sous d'autres systèmes d'exploitation, et supporté par d'autres compilateurs que VS. Il s'agit d'une étape importante vers l'implémentation dans VS2008 de la nouvelle version de C++, qui ne s'appelle pas C+=2, mais C++0x. J'y reviendrai très bientôt.

 

Tags  | 
 10 November 2007, 21:15