SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
#GlobalAzure #ViseoSpirit
Des applications clientes
portables grâce au C++
moderne !
Aurélien Regat-Barrel
Microsoft Azure#GlobalAzure #ViseoSpirit
GAB 2015 LYON ORAGANIZER
LOCAL SPONSORS
THANK YOU ALL !!
WORLDWIDE SPONSORS
…
#GlobalAzure #ViseoSpirit
Microsoft Azure#GlobalAzure #ViseoSpirit
• Le C++ aujourd'hui : où en est-on ?
• Quels sont ses capacités pour développer des
applications clientes modernes ?
• Présentation de QML/Qt Quick
Au programme :
Microsoft Azure#GlobalAzure #ViseoSpirit
C++ !
Quel est leur point commun ?
Microsoft Azure#GlobalAzure #ViseoSpirit
• Performance ?
– “C++ doesn’t give you performance, it gives you control
over performance.” (Chandler Carruth)
• Portabilité !
– En particulier grâce à Qt
• Pérennité du code
– Développer en C++, c'est investir sur le long terme
Pourquoi choisir C++ aujourd'hui ?
Microsoft Azure#GlobalAzure #ViseoSpirit
• Présent sur à peu près toutes les architectures / OS
• Est à la base de beaucoup de langages / technologies
• Cette base est rendue accessible de façon diverse et variée…
– A l'ancienne : JNI, NDK, P/Invoke, wrapping de code...
– Via un langage spécifique : C++/CLI, C++ CX, Obj. C++
– Intégration directe : Node.js, QtScript, QML...
– Via un compilateur dédié : NaCL, pNaCl, asm.js
Le C++ aujourd'hui
Microsoft Azure#GlobalAzure #ViseoSpirit
• A l'inverse, les applications C++ se diversifient de plus en plus
– Vers une plus grande hybridation des genres ?
• Les développeurs C++ ont donc intérêt à se former aux
autres technologies...
– ... et vice versa !
Le C++ aujourd'hui
Microsoft Azure#GlobalAzure #ViseoSpirit
http://stackoverflow.com/research/
developer-survey-2015
Microsoft Azure#GlobalAzure #ViseoSpirit
We asked respondents what
programming languages and
technologies they've
developed with over the past
year and what languages and
technologies they want to
develop with.
Microsoft Azure#GlobalAzure #ViseoSpirit
• Dans ses outils : conformité des compilateurs, portabilité
• Dans sa pratique : apparition du « C++ moderne »
• Dans son utilisation : hybridation / combinaison croissante
avec d'autres langages / technologies (jeux vidéos...)
• Dans sa forme (et sa vitesse d'adoption !) :
– Une norme majeure en 2011, une mineur en 2014
– Prochaine norme majeure attendue en 2017
De 1998 à nos jours
Microsoft Azure#GlobalAzure #ViseoSpirit
Microsoft Azure#GlobalAzure #ViseoSpirit
• En C++ moderne, la gestion des ressources est automatisée
via des objets dédiés
– RAII : « Resource Acquisition Is Initialization »
Et le garbage collector ?
class RAII {
public:
void incr() {
QMutexLocker lock(&mutex);
counter += 1;
}
private:
int counter = 0;
QMutex mutex;
};
=> Pas de pointeur / new / delete
=> Généralisable à tout type de
ressource (fichier, socket, mutex...)
Microsoft Azure#GlobalAzure #ViseoSpirit
• Immutabilité (const) propagée aux méthodes (lecture seule)
• Sémantique de valeur : objet typiquement utilisé sur la pile
(RAII, objets mathématiques...)
• Généricité et meta-programmation (templates)
• C++11/14 : lambdas, inférence de types (auto)...
Autres aspects du C++ moderne...
Le C++ (moderne) est-il plus
fonctionnel qu'orienté objet ?
auto xplus = [](auto y) {
return [=](auto x) {
return x + y;
};
};
cout << xplus(1.5)(2);
Microsoft Azure#GlobalAzure #ViseoSpirit
C++14 en un seul slide...
int main() {
tuple<int, double, string> t0 { 0, 0.0, "0" };
auto t1 = make_tuple(1, 1.0, "1");
list<decltype(t0)> tuples = { t0, t1 };
for (int n : { 1, 2, 3 }) {
tuples.emplace_back(n, n, to_string(n));
}
auto lambda = [](const auto & t) {
return get<0>(t) == 1;
};
int n = count_if(begin(tuples), end(tuples), lambda);
cout << n << "n";
}
Microsoft Azure#GlobalAzure #ViseoSpirit
• Microsoft fait de gros efforts pour supporter les évolutions de
C++ (ainsi que du C) et être plus interopérable
• Détail du support de C++11/14/17 :
– http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
• Possibilité de compiler avec Clang/LLVM pour cibler Android !
– Support de iOS planifié…
– ...on pourra compiler son code C++ vers Android /
Windows / iOS !
Visual C++ 2015
Microsoft Azure#GlobalAzure #ViseoSpirit
https://casablanca.codeplex.com/
Microsoft C++ REST SDK
Microsoft Azure#GlobalAzure #ViseoSpirit
• C++ est un langage très vivant, en pleine évolution
• Pour autant, priorité est donnée à la pérennité du code
– Les frameworks disponibles sont stables et matures
• Interopérable avec les technos / systèmes actuels…et futurs !
• La tendance est à l'hybridation
– Des briques en C++ sont exploitées via diverses technos
• Bien géré, le code legacy est une force !
Conclusion : un langage à (re)découvrir
Microsoft Azure#GlobalAzure #ViseoSpirit
Microsoft Azure#GlobalAzure #ViseoSpirit
• Nombreux outils :
– Qt Creator (IDE avec profiler), système de build (qmake,
qbs), framework de test, de traduction…
• Disponible en LGPL sur 15 plateformes
– Windows (Win32, CE, WinRT), Linux / UNIX (X11, Wayland,
Embedded), Mac (OS X, iOS), Android, BlackBerry, QNX,
VxWorks, Integrity…
– +800.000 utilisateurs
Qt : une plateforme logicielle mature
Microsoft Azure#GlobalAzure #ViseoSpirit
• Nombreux modules (APIs) :
– IHM, Réseau, SQL, Multimedia, XML, OpenGL, Scripting,
MapReduce, 3D, Cloud, Web engine, JSON, Bluetooth…
• Qt Quick/QML :
– Langage déclaratif orienté IHM animées et "fluides"
– Basé sur Javascript + une sorte de super CSS
– Intégration aisée avec un moteur C++
Qt : une plateforme logicielle mature
Microsoft Azure#GlobalAzure #ViseoSpirit
Démo de QML / Qt Quick
Microsoft Azure#GlobalAzure #ViseoSpirit
GAB 2015 LYON ORAGANIZER
LOCAL SPONSORS
THANK YOU ALL !!
WORLDWIDE SPONSORS
…
#GlobalAzure #ViseoSpirit

Mais conteúdo relacionado

Semelhante a Gab2015 aurelien regat-barrel_des applicationsclientesportablesgraceaucppmoderne

Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...Microsoft Ideas
 
Yannick DUPUIS
Yannick DUPUISYannick DUPUIS
Yannick DUPUISYannick D.
 
[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec XamarinCellenza
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreMicrosoft
 
Architecture Cloud Hybride
Architecture Cloud HybrideArchitecture Cloud Hybride
Architecture Cloud HybrideMicrosoft
 
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et AzureApproche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et AzureCEDRIC DERUE
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
 
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTVISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTFactoVia
 
L'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsL'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsGeorgeot Cédric
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Les Nouveaux Standards et leur implémentation dans les navigateurs modernes
Les Nouveaux Standards et leur implémentation dans les navigateurs modernesLes Nouveaux Standards et leur implémentation dans les navigateurs modernes
Les Nouveaux Standards et leur implémentation dans les navigateurs modernesTristan Nitot
 
8 Rex : Mise en place de DevOps sur Azure
8   Rex : Mise en place de DevOps sur Azure8   Rex : Mise en place de DevOps sur Azure
8 Rex : Mise en place de DevOps sur AzureaOS Community
 
Webinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft IntelWebinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft Inteldavrous
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 
La diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud AzureLa diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud AzureMicrosoft
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapresLaurent Tardif
 

Semelhante a Gab2015 aurelien regat-barrel_des applicationsclientesportablesgraceaucppmoderne (20)

Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
 
Yannick DUPUIS
Yannick DUPUISYannick DUPUIS
Yannick DUPUIS
 
[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
Architecture Cloud Hybride
Architecture Cloud HybrideArchitecture Cloud Hybride
Architecture Cloud Hybride
 
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et AzureApproche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
Approche DevOps pour builder une solution robuste PHP avec Zend_Server et Azure
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoTVISEO Shake the Microsoft business - comment rapidement batir une solution IoT
VISEO Shake the Microsoft business - comment rapidement batir une solution IoT
 
L'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOpsL'évolution vers le (Dev)NoOps
L'évolution vers le (Dev)NoOps
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Les Nouveaux Standards et leur implémentation dans les navigateurs modernes
Les Nouveaux Standards et leur implémentation dans les navigateurs modernesLes Nouveaux Standards et leur implémentation dans les navigateurs modernes
Les Nouveaux Standards et leur implémentation dans les navigateurs modernes
 
8 Rex : Mise en place de DevOps sur Azure
8   Rex : Mise en place de DevOps sur Azure8   Rex : Mise en place de DevOps sur Azure
8 Rex : Mise en place de DevOps sur Azure
 
Webinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft IntelWebinar HTML5 Microsoft Intel
Webinar HTML5 Microsoft Intel
 
Azure Serverless C2S
Azure Serverless C2SAzure Serverless C2S
Azure Serverless C2S
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
La diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud AzureLa diffusion vidéo avec le Cloud Azure
La diffusion vidéo avec le Cloud Azure
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 

Mais de Vincent Thavonekham-Pro

Gab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptx
Gab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptxGab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptx
Gab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptxVincent Thavonekham-Pro
 
Gab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureGab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureVincent Thavonekham-Pro
 
Gab2015 samir arezki_samuelpecoul_sso avec azure ad
Gab2015 samir arezki_samuelpecoul_sso avec azure adGab2015 samir arezki_samuelpecoul_sso avec azure ad
Gab2015 samir arezki_samuelpecoul_sso avec azure adVincent Thavonekham-Pro
 
Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...
Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...
Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...Vincent Thavonekham-Pro
 
Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...
Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...
Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...Vincent Thavonekham-Pro
 
Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...
Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...
Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...Vincent Thavonekham-Pro
 
Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)
Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)
Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)Vincent Thavonekham-Pro
 
Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...
Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...
Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...Vincent Thavonekham-Pro
 
Gab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelierGab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelierVincent Thavonekham-Pro
 

Mais de Vincent Thavonekham-Pro (11)

Gab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptx
Gab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptxGab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptx
Gab2015 nicolas fonrose_costefficiencywithmicrosoftazure.pptx
 
Gab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureGab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur Azure
 
Gab2015 samir arezki_samuelpecoul_sso avec azure ad
Gab2015 samir arezki_samuelpecoul_sso avec azure adGab2015 samir arezki_samuelpecoul_sso avec azure ad
Gab2015 samir arezki_samuelpecoul_sso avec azure ad
 
Gab2015 samir arezki_azuredata
Gab2015 samir arezki_azuredataGab2015 samir arezki_azuredata
Gab2015 samir arezki_azuredata
 
Gab2015 samir arezki_api management
Gab2015 samir arezki_api managementGab2015 samir arezki_api management
Gab2015 samir arezki_api management
 
Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...
Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...
Gab2015 vincent thavonekham_alm_devops_complète_en30_min_et_comment_gérer_la_...
 
Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...
Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...
Gab2015 benjamin soulier_azureappservices-azure_app_service-toutes_les_nouvea...
 
Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...
Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...
Gab2015 christophe havard_hackaton_zone61_les_dessous_de_la_création_d_un_obj...
 
Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)
Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)
Gab2015 Jeremy Mounet Azure Dynamics 2012 and 2015 (on MS Azure)
 
Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...
Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...
Gab2015 Cedric Derue Vincent Thavonekham Approche Devops pour builder une sol...
 
Gab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelierGab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelier
 

Gab2015 aurelien regat-barrel_des applicationsclientesportablesgraceaucppmoderne

  • 1. #GlobalAzure #ViseoSpirit Des applications clientes portables grâce au C++ moderne ! Aurélien Regat-Barrel
  • 2. Microsoft Azure#GlobalAzure #ViseoSpirit GAB 2015 LYON ORAGANIZER LOCAL SPONSORS THANK YOU ALL !! WORLDWIDE SPONSORS … #GlobalAzure #ViseoSpirit
  • 3. Microsoft Azure#GlobalAzure #ViseoSpirit • Le C++ aujourd'hui : où en est-on ? • Quels sont ses capacités pour développer des applications clientes modernes ? • Présentation de QML/Qt Quick Au programme :
  • 5. Microsoft Azure#GlobalAzure #ViseoSpirit • Performance ? – “C++ doesn’t give you performance, it gives you control over performance.” (Chandler Carruth) • Portabilité ! – En particulier grâce à Qt • Pérennité du code – Développer en C++, c'est investir sur le long terme Pourquoi choisir C++ aujourd'hui ?
  • 6. Microsoft Azure#GlobalAzure #ViseoSpirit • Présent sur à peu près toutes les architectures / OS • Est à la base de beaucoup de langages / technologies • Cette base est rendue accessible de façon diverse et variée… – A l'ancienne : JNI, NDK, P/Invoke, wrapping de code... – Via un langage spécifique : C++/CLI, C++ CX, Obj. C++ – Intégration directe : Node.js, QtScript, QML... – Via un compilateur dédié : NaCL, pNaCl, asm.js Le C++ aujourd'hui
  • 7. Microsoft Azure#GlobalAzure #ViseoSpirit • A l'inverse, les applications C++ se diversifient de plus en plus – Vers une plus grande hybridation des genres ? • Les développeurs C++ ont donc intérêt à se former aux autres technologies... – ... et vice versa ! Le C++ aujourd'hui
  • 9. Microsoft Azure#GlobalAzure #ViseoSpirit We asked respondents what programming languages and technologies they've developed with over the past year and what languages and technologies they want to develop with.
  • 10. Microsoft Azure#GlobalAzure #ViseoSpirit • Dans ses outils : conformité des compilateurs, portabilité • Dans sa pratique : apparition du « C++ moderne » • Dans son utilisation : hybridation / combinaison croissante avec d'autres langages / technologies (jeux vidéos...) • Dans sa forme (et sa vitesse d'adoption !) : – Une norme majeure en 2011, une mineur en 2014 – Prochaine norme majeure attendue en 2017 De 1998 à nos jours
  • 12. Microsoft Azure#GlobalAzure #ViseoSpirit • En C++ moderne, la gestion des ressources est automatisée via des objets dédiés – RAII : « Resource Acquisition Is Initialization » Et le garbage collector ? class RAII { public: void incr() { QMutexLocker lock(&mutex); counter += 1; } private: int counter = 0; QMutex mutex; }; => Pas de pointeur / new / delete => Généralisable à tout type de ressource (fichier, socket, mutex...)
  • 13. Microsoft Azure#GlobalAzure #ViseoSpirit • Immutabilité (const) propagée aux méthodes (lecture seule) • Sémantique de valeur : objet typiquement utilisé sur la pile (RAII, objets mathématiques...) • Généricité et meta-programmation (templates) • C++11/14 : lambdas, inférence de types (auto)... Autres aspects du C++ moderne... Le C++ (moderne) est-il plus fonctionnel qu'orienté objet ? auto xplus = [](auto y) { return [=](auto x) { return x + y; }; }; cout << xplus(1.5)(2);
  • 14. Microsoft Azure#GlobalAzure #ViseoSpirit C++14 en un seul slide... int main() { tuple<int, double, string> t0 { 0, 0.0, "0" }; auto t1 = make_tuple(1, 1.0, "1"); list<decltype(t0)> tuples = { t0, t1 }; for (int n : { 1, 2, 3 }) { tuples.emplace_back(n, n, to_string(n)); } auto lambda = [](const auto & t) { return get<0>(t) == 1; }; int n = count_if(begin(tuples), end(tuples), lambda); cout << n << "n"; }
  • 15. Microsoft Azure#GlobalAzure #ViseoSpirit • Microsoft fait de gros efforts pour supporter les évolutions de C++ (ainsi que du C) et être plus interopérable • Détail du support de C++11/14/17 : – http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx • Possibilité de compiler avec Clang/LLVM pour cibler Android ! – Support de iOS planifié… – ...on pourra compiler son code C++ vers Android / Windows / iOS ! Visual C++ 2015
  • 17. Microsoft Azure#GlobalAzure #ViseoSpirit • C++ est un langage très vivant, en pleine évolution • Pour autant, priorité est donnée à la pérennité du code – Les frameworks disponibles sont stables et matures • Interopérable avec les technos / systèmes actuels…et futurs ! • La tendance est à l'hybridation – Des briques en C++ sont exploitées via diverses technos • Bien géré, le code legacy est une force ! Conclusion : un langage à (re)découvrir
  • 19. Microsoft Azure#GlobalAzure #ViseoSpirit • Nombreux outils : – Qt Creator (IDE avec profiler), système de build (qmake, qbs), framework de test, de traduction… • Disponible en LGPL sur 15 plateformes – Windows (Win32, CE, WinRT), Linux / UNIX (X11, Wayland, Embedded), Mac (OS X, iOS), Android, BlackBerry, QNX, VxWorks, Integrity… – +800.000 utilisateurs Qt : une plateforme logicielle mature
  • 20. Microsoft Azure#GlobalAzure #ViseoSpirit • Nombreux modules (APIs) : – IHM, Réseau, SQL, Multimedia, XML, OpenGL, Scripting, MapReduce, 3D, Cloud, Web engine, JSON, Bluetooth… • Qt Quick/QML : – Langage déclaratif orienté IHM animées et "fluides" – Basé sur Javascript + une sorte de super CSS – Intégration aisée avec un moteur C++ Qt : une plateforme logicielle mature
  • 22. Microsoft Azure#GlobalAzure #ViseoSpirit GAB 2015 LYON ORAGANIZER LOCAL SPONSORS THANK YOU ALL !! WORLDWIDE SPONSORS … #GlobalAzure #ViseoSpirit