C++ est un langage plein de surprises. Une fonctionnalité "imprévue", la méta-programmation, permet à la librairie Blitz++ de concurrencer Fortran sur le plan des performances brutes en matière de calculs mathématiques. Partons à sa découverte !
Plein de qualités et plein de défauts, c'est ce qui fait son charme, C++ est parfois critiqué pour ne pas offrir l'équivalent de Fortran en termes de performances brutes pour les calculs mathématiques. Il est vrai que l'orientation-objet présente un coût à l'exécution en contrepartie des capacités d'abstraction et de réutilisation du code qu'elle apporte. La surcharge des opérateurs a un coût en contrepartie de l'élégance et de la clarté du code. Enfin C++ luimême, basé sémantique de valeur, implique la copie d'objets et la réduction de performance qui va avec, en attendant que C++0X, le standard à venir, ne modifie cette donne en introduisant la sémantique de déplacement. C++ c'est un monde à part entière et un monde entièrement à part. A l'origine le langage n'a jamais été conçu pour supporter la méta-programmation, domaine essentiellement réservé aux langages fonctionnels. Ainsi le vieux Lisp, le premier d'entre eux, la supportait déjà. Toutefois, quand C++ s'est vu doté des templates, des programmeurs astucieux les ont détournés de leur usage premier. La méta-programmation C++ était née, et un gain significatif de performances avec elle. Nous allons voir brièvement en quoi celle-ci consiste, puis nous apprécierons ce qu'elle peut apporter en découvrant Blitz++.