Mot-clé - Cplusplus

Fil des billets - Fil des commentaires

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...

05 janv. 2013

Micro-optimisations : booléens contre ensemble de drapeaux

Il y a quelque temps, un utilisateur de mon blog (alpha_one_x86) a proposé quelques sujets qui avait pour lui un intérêt. Certains sujets traitant de micro-optimisations - et étant moi même intéressé par ce type d'optimisation - j'ai décide de consacrer un premier billet à quelques petites explications touchant non pas au comment, mais au pourquoi.

Si vous avez des questions liées à ce type de sujet (ou si vous souhaitez que je discute d'autres micro-optimisations), n'ayez pas peur de me le faire savoir en postant un commentaire ici ou là (voir en me contactant).

Je vais quand même insister sur un point précis : je parle ici de micro-optimisation, c'est à dire d'optimisations dont l'impact sur les performances est très souvent négligeable. Il arrive de temps en temps qu'une telle optimisation offre un réel avantage, mais ces cas sont rares. Avant de mettre en pratique un des cas présenté ci-dessous, il convient de mesurer l'impact sur votre code et de peser le pour et le contre, notamment en terme de rapport gain/maintenance et gain/temps de développement.

Ne venez pas dire que je ne vous ai pas prévenu :)

Lire la suite...

04 sept. 2012

Modification du générateur de parseurs Coco/R

Cet article est une mise à jour d'un ancien article qui avait disparu de ce blog pour de mystérieuses raisons. Avant sa disparition, il est resté en lignes environ un mois, donc il est probable que peu d'entre vous ait eu le temps de le lire. Vous pouvez maintenant en profiter.

Coco/R, développé par Hanspeter Mössenböck, Markus Löberbauer et Albrecht Wöß de l'Université de Linz est un générateur de compilateurs LL(1). Il permet, avec un seul fichier, de créer un couple scanner/parser intégrable en C++, C#, Java et bien d'autres langages encore. L'intérêt du compilateur généré est qu'il est complètement orienté objet : il ne s'agit pas d'un code procédural qu'il faut tenter d'encapsuler au mieux, comme celui qui pourrait être généré par flex+bison. Le code source généré souffre de quelques problèmes - mais au regard du service rendu, on laissera ceux-ci de coté pour l'instant.

Cet article traite d'une modification que j'ai du effectuer dans le code du générateur lui-même, afin de traiter un cas qui n'était pas prévu par les développeurs. Je me suis basé sur la version C++ datée de Novembre 2010 (la dernière version du code source est disponible sur la page web de Coco/R).

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...

19 oct. 2011

Les nouveautés du trimestre

Comme si j'ajoutais de nouvelles fonctionnalités à ce blog chaque trimestre... N'importe quoi, ce titre.

Lire la suite...

- page 1 de 2