19 mar. 2014

Références C++ mises à jour

Je profite d'un instant de votre précieux temps pour vous signaler que j'ai mis à jour la page Ouvrages et sites de référence pour le C++, avec plusieurs ajouts concernant C++11.

Bonne lecture !

31 janv. 2014

Rencontres 2014 du C++ User Group Francophone

Guillaume Belz (qui commente régulièrement les articles de ce blog, je l'en remercie) me prévient que le C++ User Group Francophone (a.k.a. le C++ FrUG) prévoit pour ce début 2014 une nouvelle rencontre.

Vous êtes libres de faire vos propositions sur le groupe Google du C++ FrUG. D'après Guillaume, les sujets déjà proposés sont variés : C++11, C++14, C++1y, C++ pour les débutants, C++ pour les jeux... Selon son message :

Les deux conférences l'année dernière se sont relativement bien passées et il y a des demandes pour renouveler des rencontres du C++ French User Group cette année. Il y a déjà des thèmes qui ont été proposés (sur le C++1/14/1y, pour les débutants, sur les jeux), mais il serait intéressant d'avoir des avis ou idées supplémentaires. N'hésitez pas à proposer des thèmes, des conférenciers, des lieux de rencontre.

Pour ma part, mon actualité est trop chargée pour que j'espère pouvoir participer à la première de ces rencontres 2014, mais qui sait - il n'est pas impossible que je me présente à une future occasion.

24 mar. 2013

Programmation concurrente : appels uniques, verrous, conditions

thread.jpg

L'article précédent a introduit les classes std::thread et std::atomic<> proposées par le standard C++11. La première de ces classes permet la création et la gestion de processus légers ; la seconde est utilisée pour accéder de manière atomique à une donnée particulière, ce qui permet d'implémenter certains algorithmes spécifiques (le spin lock est ainsi donné en exemple).

Ce nouveau billet va maintenant s'intéresser à deux autres primitives de synchronisations très utiles dans le domaine de la programmation concurrente : les verrous d'exclusion mutuelle (mutex) et les variables de condition (condition variables). Ces deux sujets seront traités après l'introduction d'un autre point qui, vous allez voir, va se révéler très, très intéressant.

Lire la suite...

12 mar. 2013

Programmation concurrente : threads et variables atomiques

thread.jpg

Les deux articles précédents sur ce sujet n'ont fait qu'aborder des concepts qui, certes utiles pour la compréhension des articles à venir, n'ont pas encore permis d'approcher les nouveautés de C++11 dans le domaine de la programmation concurrente. Le but de cet article est donc de rentrer enfin dans le vif du sujet, en décrivant les interfaces proposés par la librairie et les mécanismes implémentés dans le langage.

Vu l'énormité des apports à ce niveau, ce billet va se contenter d'une première approche en décrivant principalement deux points importants : les threads et les mécanismes de synchronisation.

Lire la suite...

25 fév. 2013

Programmation concurrente : le modèle de mémoire C++11

thread.jpg

Dans l'article précédent, on a pris contact avec ce qu'est la programmation concurrente, et comment elle était (grosso-modo) mise en oeuvre dans les systèmes d'exploitation récent. On a aussi parlé de primitives de synchronisation et de tout un tas de petites choses qui sont autant de concepts importants, nécessaires à une bonne compréhension du problème. Et dans ce cadre, la relation avec le standard C++11 a été mis de coté de manière explicite.

Cet article revient sur le C++11, mais d'une façon détournée : on va parler du modèle de mémoire mis en place par le standard.

Lire la suite...

24 janv. 2013

Démarrer avec Android : les bases et le NDK

Logo Android

Une fois n'est pas coutume, je vais vous présenter ici non pas un article de fond, mais une sorte de tutoriel un peu plus détaillé que la moyenne. Le sujet du jour, c'est le développement d'une application Android. Pas n'importe quelle application cependant, puisqu'il s'agit de se préparer à l'arrivée ce cette console dont tout le monde parle - la dénommée OUYA.

Bien évidemment, étant donné la nature de l’exercice et la complexité du sujet, je ne peux pas me permettre d'aller au fond des choses. Si le sujet vous plait (et je le verrais d'après vos commentaires, n'est-ce pas ?) alors j'essaierais d'aborder encore la programmation Android dans un billet ultérieur. Je ne vous promet rien - à vous de me convaincre ?

Avant de commencer, un dernier mot : il est évident que pour comprendre ce tutoriel, vous avez besoin de connaître (un peu) Java, XML et C++. La connaissance de l'IDE eclipse est un plus intéressant, et il est tout de même préférable de connaître un peu Android du point de vue utilisateur.

Lire la suite...

01 août 2012

C++11 : il y a des choses qui changent

Annoncer à grand renfort de publicité (ou pas) qu'il y a eu quelques changements dans la nouvelle norme C++ 11 par rapport à la précédente norme de 2003, c'est un peu comme dire qu'il se pourrait que la lune soit distante de la terre d'un peu plus de 400 mètres : ça n'a pas grand intérêt, parce que c'est évident. Tout le monde[1] sait que C++11 apporte son lot de nouveautés, et que celles-ci sont importantes : rvalue references, le mot-clef auto, les variadic templates, la gestion de la concurrence, etc. Les additions sont nombreuses et quelques fois complexes.

Par contre, ceux qui, croyant bien faire, pensent que le nouveau standard conserve un compatibilité parfaite avec la version précédente du standard pourraient avoir quelques mauvaises surprises. Et pas seulement à la marge...

Note

[1] enfin, tous les programmeurs C++ qui s'intéressent un tant soi peu au langage lui-même

Lire la suite...