NON, LE C++ N’EST PAS MORT !!!!! Visual Studio 2005 et le C++ Introduction : Pourquoi le C++/CLI ? C++/CLI : Eléments Syntaxiques C++/CLI : Garbage collection.

Slides:



Advertisements
Présentations similaires
Erratum C Surcharge For(int x=0; … 2.
Advertisements

Langage C# et Plate-forme .NET
Cours n° 6 Standard Template Library I.
C#3 et le projet Linq Mitsuru FURUTA
De Windows Forms à Windows Presentation Foundation
On ne va pas se quitter comme ça !. Windows Presentation Foundation (Avalon) Windows Communication Foundation (Indigo) Windows Workflow Foundation Atlas.
La plateforme.NET 2.0 vue par le développeur Pascal Belaud Microsoft France SAGA.NET
1 HPC et Windows 2003 CCS pour les développeurs Visual Studio 2005.
Eric Mittelette – Microsoft France Eric Vernié – Microsoft France
Linq, fonctionnement et architecture
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Windows Presentation Foundation Mitsu Furuta DevDays 2006 Equipé aujourdhui, prêt pour demain.
C# 2.0, un an après Mitsuru FURUTA
Conclusion Rencontres ASP.NET : Développement Rapide dApplications Web.
Test et Développement Visual Studio Team System Eric Mittelette – Benjamin Gauthey – Yann Faure DevDays 2006 Equipé aujourdhui, prêt pour demain !
Automatisation de Tâches Scenarios
Rencontres Windows Forms
Introduction au langage C++
C++ 6ème cours Patrick Reuter maître de conférences
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Appels de fonctions natives sous C#
Cours n° 8 Conception et Programmation à Objets
L’architecture .net et ASP.net
Palais des congrès Paris 7, 8 et 9 février /02/2012 Les nouveautés de Silverlight 5 Sacha Leroux Directeur Technique Bewise Christopher Maneu.
Construire une Set Top Box Avec Windows CE 6.0
.N ET - P RÉSENTATION Corentin RIOU 1. I NTERVENANTS Corentin RIOU – MMA Promo 2006 – Chef de projet technique – Digitas France 2.
Mitsuru FURUTA Relations techniques développeurs Microsoft France
Eric Vernié - Microsoft Yann Faure - Bewise Etude de cas FMStocks 2000.
Structures de données et algorithmes – TP2
« Les Mercredis du développement » Retour dexpérience / Framework de dév. Présenté par Grégory Renard [Rédo] Responsable Développement.
ASP.NET un peu plus loin… Développement Rapide dApplications Web avec.NET.
Les pointeurs 1. Notion de pointeurs cest Travailler avec les pointeurs cest Se rapprocher du matériel Nécessite de bien connaitre le fonctionnement de.
Formation universitaire à .NET: Visual Studio .NET
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
C#. Sommaire I. Descriptions du langage 1. Son origine 2. Plate-forme d'exécution II. Capacités du langage 1. Différences avec le C / C++ 2. Java Vs C#
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Microsoft .NET.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Types de données abstrait et mécanismes d'encapsulation
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
La plateforme.NET 2.0 vue par le développeur Pascal Belaud Microsoft France SAGA.NET
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
‘‘Open Data base Connectivity‘‘
La notion de type revisitée en POO
APC Cache PHP alternatif Présenté par : MASLINE-CAMERINI Antoine.
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
Introduction au développement Office 2007
22 Visual Studio Tools et Office 2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Dev Consultant Microsoft France
Cours techonologies .NET
.NET Plateforme, framework, produits Bernard Fedotoff (Pdg) Stéphane Vancauwenberghe (Consultant)
Introduction à la plateforme .NET
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
Outil de conception d’applications WPF Anciennement « Interactive Designer » Orienté « intégrateur graphistes » Particularité : Blend tm est une application.
Détecter et éviter les fuites de mémoire dans les applications .NET
Introduction à Visual Studio C++ (VC++)
Dyalog.Net Peter Donnelly Managing Director Dyadic Systems Toronto 30/10/2002.
Code Contracts Gilles TOURREAU - MVP C# Architecte .NET / Formateur
Projet débuté en décembre 1989 Première version publique en février 1991 Lancement du site python.org en 1997 Python Software Foundation en 2001 Version.
IFT 232 Méthodes de Conception Orientées Objets Introduction.
Créez des applications Silverlight 3 David Rousset Relations Techniques avec les développeurs Microsoft France
Positionnement : Outil de supervision et d’administration spécialiste Les management packs de l’éditeur et la base de connaissance embarquée Rapidité.
ASP.NET AJAX Control Toolkit
1 Visual Studio 2005 Tools For Office: Présentation et Démonstrations.
Use Local SQL Server with Azure Emulator. Configurer la DAL Fabriquer une DAL dans un projet de class library Configurer le data model avec la bdd locale.
22 Lag110 : Le développement SharePoint 2010 avec Visual Studio 2010 Mardi 9 février 2010 Frédéric Wickert Partner Technical Specialist Microsoft.
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
 Répondre aux problèmes principaux de VS 2005  Augmenter toujours la productivité côté désign  Un vrai outil de développement pour le développement.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
La plateforme.NET 2.0 vue par le développeur Pascal Belaud Microsoft France SAGA.NET
Transcription de la présentation:

NON, LE C++ N’EST PAS MORT !!!!!

Visual Studio 2005 et le C++ Introduction : Pourquoi le C++/CLI ? C++/CLI : Eléments Syntaxiques C++/CLI : Garbage collection et destruction déterministe ? C++/CLI : Code hybride ou comment mixer les codes natifs et managés Conclusion : C++/CLI « first class langage for.NET » Le future

1998 Visual C ATL3/MFC42 (6.0) 2002 Visual Studio.NET Visual C Unified Visual Studio IDE & Debugger MFC7/ATL7, attributed programming, ATL Server Whole Program Optimization C++ Managed Extensions Fixed STL concurrency and DLL issues /GS Runtime Security Check 2003 Visual Studio 2003 Visual C ISO Standard C++ Conformance /Arch:SSE/SSE2 – floating point code generation Windows Forms Designer for Managed Extensions 2005 Visual Studio 2005 Visual C C++/CLI Language Integrated 64-bit Compiler and Tools Profile Guided Optimization Safe Extension for CRT Project Property Manager, Source Navigation/Browsing MFC/Windows Forms Integration

ISO C++ (98% de la norme) Syntaxe C++ qui cible du code natif C++/CLI Syntaxe C++ qui cible le Framework.NET

Ré utiliser les compétences « fines/pointues » des développeurs C++ On ne va pas ré écrire des millions de lignes de code pour une nouvelle plateforme :.NET « We love your C++ Code »  Syntaxe déposée à l’ECMA et ISO Travail initié en 2002 avec les MC++ (Managed Extension for C++) Intégration de C++/CLI avec ISO-C++ « LE » language de l’interopérabilité Utiliser le Framework.NET de façon naturelle en C++

Une option de compilation « primordiale » /CLR : émettre du code MSIL Support de la syntaxe CLI « activée » Option pour le projet ou pour un fichier individuellement Différentes sous option à /CLR /CLR : Pure /CLR : Safe

Notion d’ “adjective class” Types C++ et CLR cohérents Attention : pas d ’héritage multiple de « ref class » Attention : implémentation multiple d’ « interface class » ref class A abstract { };// abstract ref class B sealed : A { };// no further derivation ref class C : B { };// error, B is sealed class N { /*…*/ };// native ref class R { /*…*/ };// CLR reference type value class V { /*…*/ };// CLR value type interface class I { /*…*/ };// CLR interface type enum class E { /*…*/ };// CLR enumeration type

Pointers et Handles Sur le tas natif Comme d’hab pointeurs (*) stables indépendant du GC Comme d’hab, attention aux fuites mémoire si pas de delete  Sur le tas managé Handles (^) sont des références d’ objets Pas d’opérations arithmétiques dessus (cf. interior_ptr) delete devient optionnel Sur la pile (vraiment ?) Permet des destructions déterministes TNatif* t1 = new TNatif; TNet^ t2 = gcnew TNet; T t3;

* est à ^ ce que & est à %

Propriété ref class R { int mySize; public: property int Size { int get() { return mySize; } void set(int val) { mySize = val; } } }; R r; r.Size = 42; // use like a field ref class R { int mySize; public: property int Size { int get() { return mySize; } void set(int val) { mySize = val; } } }; R r; r.Size = 42; // use like a field ref class R { public: property int Size; // compiler-generated }; // get, set, and backing store Notation simplifiée

Delegate et évènement delegate void D(int); ref class R { public: event D^ e; // trivial event; // compiler-generated members void f() { e(42); }// invoke it }; R^ r = gcnew R(); r->e += gcnew D(this, &SomeMethod); r->e += gcnew D(SomeFreeFunction); r->f(); delegate void D(int); ref class R { public: event D^ e; // trivial event; // compiler-generated members void f() { e(42); }// invoke it }; R^ r = gcnew R(); r->e += gcnew D(this, &SomeMethod); r->e += gcnew D(SomeFreeFunction); r->f(); Vous pouvez écrire, ajouter, enlever et déclencher vous même les. Vous pouvez écrire, ajouter, enlever et déclencher vous même les évènements.

Generic Syntaxe des Generics ~comme celle des templates Admettent des contraintes et l’héritage Instancié à l’exécution Template Disponible pour le C++/CLI Généré au moment de la compilation Les generics et les templates peuvent se combiner… Attention casse tête chinois et rigueur demandée !  generic where T : IFoo ref class GR { /* … */ };

CLR arrays Notation [] non supportée en C++/CLI array ^ a1 = gcnew array (10); array ^ a2 = gcnew array { 1, 2, 3 }; array ^ a3 = { 1, 2, 3 }; array ^ a4 = gcnew array (10) { 1, 2 }; F(gcnew array { button1, button2 }); array a5 = gcnew array (10, 20); array a6 = { { 1, 2, 3 }, { 4, 5, 6 } };

Chaque objet.Net est sous contrôle du « Garbage Collector » La mécanique du « garbage collector » est un pré requis essentiel à tous développeurs C++/CLI Génération, Collection, Compactage, Pattern IDispose et Finalisation Heap Managed > 3 private heap + 1 private heap pour les « Large Object » Elément syntaxique ~MaClasse et !MaClasse

Une classe qui implémente un Finalizer doit avoir un destructeur Evitons la duplication de code : appelons le finalizer dans le destructeur ref class R { /* MORE CODE */ !R() { /* Clean-up value type resources */ } ~R() { /* Do early clean-up, clean-up ref classes */ this->!R(); } };

C++/CLI : le roi de l’interopérabilité COM Interop PInvoke Pour tous les languages.NET C++ Interop It Just Works ! Tous les scenarii possible…et imaginable  Hosting de la CLR Contrôle fin de l’exécution du code.NET Par exemple dans votre code MFC…

Ré utiliser votre existant Migration code VC6 Breaking changes (conformité à la norme ISO98) Un seul environnement de développement (VS2005) Compilateur 64 bits, Optimisation du code (WPO PGO), support de l’OpenMP …. Et bien plus encore  Utilisation des.lib ou dll depuis VS2005 Et inversement !  Gestion du code mixte Passer des données, des pointeurs de fonctions, faire des appels « croisés » entre le monde managé et le monde natif

Scenarii de code hybride Apps VC6 utilisent vos.lib VS2005 Apps VS2005 utilise vos.lib VC6 Code Hybride (mixed code) Utiliser une classe native dans du code CLI Utiliser une classe CLI dans du code natif Utiliser de l’assembleur dans du code CLI Utiliser la BCL dans du code natif Utiliser les « Windows Forms » dans les MFC.NETmodule et.Obj + cl.exe ! Hosting de la CLR.

La boite à outils du développeur hybride  vcclr.h : gcroot<>, auto_gcroot<> AfxWindowsForms.h (MAKE_DELEGATE, /CLRSystem::Runtime::Interopservices pin_ptr<>, interior_ptr<> tblimp, tlbexp dllimport attributes Les APIs de hosting #pragma unmanaged

Productivité du développeur accru par la BCL Confort du développeur via l’IDE VS2005 Performance au rendez vous-même dans le code managé pur et le code mixte Ecrire moins de code en C++/CLI qu’en C#!

Création d’une ref class simple De MFC à.NET IJW Des Windows forms dans les MFC Etude : WPF dans les MFC

Retrouvez nos vidéos sur le site MSDN (FR) fault.mspx fault.mspx Site MSDN US us/visualc/default.aspx