#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
…
#Gl...
Microsoft Azure#GlobalAzure #ViseoSpirit
• Le C++ aujourd'hui : où en est-on ?
• Quels sont ses capacités pour développer ...
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 pe...
Microsoft Azure#GlobalAzure #ViseoSpirit
• Présent sur à peu près toutes les architectures / OS
• Est à la base de beaucou...
Microsoft Azure#GlobalAzure #ViseoSpirit
• A l'inverse, les applications C++ se diversifient de plus en plus
– Vers une pl...
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
develope...
Microsoft Azure#GlobalAzure #ViseoSpirit
• Dans ses outils : conformité des compilateurs, portabilité
• Dans sa pratique :...
Microsoft Azure#GlobalAzure #ViseoSpirit
Microsoft Azure#GlobalAzure #ViseoSpirit
• En C++ moderne, la gestion des ressources est automatisée
via des objets dédiés...
Microsoft Azure#GlobalAzure #ViseoSpirit
• Immutabilité (const) propagée aux méthodes (lecture seule)
• Sémantique de vale...
Microsoft Azure#GlobalAzure #ViseoSpirit
C++14 en un seul slide...
int main() {
tuple<int, double, string> t0 { 0, 0.0, "0...
Microsoft Azure#GlobalAzure #ViseoSpirit
• Microsoft fait de gros efforts pour supporter les évolutions de
C++ (ainsi que ...
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...
Microsoft Azure#GlobalAzure #ViseoSpirit
Microsoft Azure#GlobalAzure #ViseoSpirit
• Nombreux outils :
– Qt Creator (IDE avec profiler), système de build (qmake,
qb...
Microsoft Azure#GlobalAzure #ViseoSpirit
• Nombreux modules (APIs) :
– IHM, Réseau, SQL, Multimedia, XML, OpenGL, Scriptin...
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
…
#Gl...
Prochain SlideShare
Chargement dans…5
×

Gab2015 aurelien regat-barrel_des applicationsclientesportablesgraceaucppmoderne

336 vues

Publié le

Global Azure Bootcamp Lyon 2015 Gab2015 Aurelien Régat-Barrel
Des applications clientes portables grace au C++ moderne !

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
336
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
6
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Gab2015 aurelien regat-barrel_des applicationsclientesportablesgraceaucppmoderne

  1. 1. #GlobalAzure #ViseoSpirit Des applications clientes portables grâce au C++ moderne ! Aurélien Regat-Barrel
  2. 2. Microsoft Azure#GlobalAzure #ViseoSpirit GAB 2015 LYON ORAGANIZER LOCAL SPONSORS THANK YOU ALL !! WORLDWIDE SPONSORS … #GlobalAzure #ViseoSpirit
  3. 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 :
  4. 4. Microsoft Azure#GlobalAzure #ViseoSpirit C++ ! Quel est leur point commun ?
  5. 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. 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. 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
  8. 8. Microsoft Azure#GlobalAzure #ViseoSpirit http://stackoverflow.com/research/ developer-survey-2015
  9. 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. 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
  11. 11. Microsoft Azure#GlobalAzure #ViseoSpirit
  12. 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. 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. 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. 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
  16. 16. Microsoft Azure#GlobalAzure #ViseoSpirit https://casablanca.codeplex.com/ Microsoft C++ REST SDK
  17. 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
  18. 18. Microsoft Azure#GlobalAzure #ViseoSpirit
  19. 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. 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
  21. 21. Microsoft Azure#GlobalAzure #ViseoSpirit Démo de QML / Qt Quick
  22. 22. Microsoft Azure#GlobalAzure #ViseoSpirit GAB 2015 LYON ORAGANIZER LOCAL SPONSORS THANK YOU ALL !! WORLDWIDE SPONSORS … #GlobalAzure #ViseoSpirit

×