"…mais ce serait peut-être l'une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d'autre que du code…"

C++ et la métaprogrammation avec les templates, le nouveau standard C++0x pour C++

Posted by patrick sur mars 3, 2008

Source: un article publié dans le magazine Programmez! de Frédéric Mazué sur “Blitz++ et la méta-programmation C++ ».

« …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 performance avec elle…ce n’est pas une bonne idée que de vouloir faire de la méta-programmation à tout prix. Par contre c’est une bonne idée d’utiliser des librairies telles que Boost et Blitz++ dont la méta-programmtion est une pierre angulaire« .

A voir:

  • http://fr.wikipedia.org/wiki/M%C3%A9taprogrammation (« La métaprogrammation avec des patrons est une technique de programmation dans laquelle les patrons sont utilisés de sorte que le compilateur, lors de la compilation du code, exécute un programme. Ces programmes peuvent générer des constantes ou des structures de données. Cette technique est utilisée principalement dans le langage de programmation C++…La métaprogrammation avec des patrons a des utilisations pratiques malgré son apparence maladroite. Elle peut être utilisée pour créer des classes vecteur à n dimensions quand n est connu à la compilation. L’avantage par rapport à un vecteur à n dimensions traditionnel est que les boucles peuvent être déroulées, ce qui produit un code très optimisé. »)
  • http://en.wikipedia.org/wiki/C%2B%2B0x (« C++0x is the planned new standard for the C++ programming language. It is intended to replace the existing C++ standard, ISO/IEC 14882, which was published in 1998 and updated in 2003. These predecessors are informally known as C++98 and C++03. The new standard will include several additions to the core language and will extend the C++ standard library, incorporating most of the C++ Technical Report 1 libraries — most likely with the exception of the library of mathematical special functions. Since the standard is not yet finalized, this article may not reflect the most recent state of C++0x. Up-to-date state of the next C++ standard is published on the ISO C++ committee website. The most recent report, N2432, was published in October 2007. »)
  • http://www.oonumerics.org/blitz/ (« Blitz++ is a C++ class library for scientific computing which provides performance on par with Fortran 77/90. It uses template techniques to achieve high performance. The current versions provide dense arrays and vectors, random number generators, and small vectors and matrices. Blitz++ is distributed freely under an open source license, and contributions to the library are welcomed. « )
  • http://www.boost.org/ (« Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use.C++ Standards Committee’s Library Technical Report ( TR1) as a step toward becoming part of a future C++ Standard. More Boost libraries are proposed for the upcoming TR2 We aim to establish « existing practice » and provide reference implementations so that Boost libraries are suitable for eventual standardization. Ten Boost libraries are already included in the . »)
  • http://en.wikipedia.org/wiki/Boost_C%2B%2B_Libraries (« …The libraries are aimed at a wide range of C++ users and application domains. They range from general-purpose libraries like SmartPtr, to OS Abstractions like FileSystem, to libraries primarily aimed at other library developers and advanced C++ users, like MPL. In order to ensure efficiency and flexibility, Boost makes extensive use of templates. Boost has been a source of extensive work and research into generic programming and metaprogramming in C++…« )
  • http://en.wikipedia.org/wiki/GNU_Compiler_Collection (« …The GNU Compiler Collection (usually shortened to GCC) is a set of compilers produced for various programming languages by the GNU Project. GCC is a key component of the GNU toolchain. As well as being the official compiler of the GNU system, GCC has been adopted as the standard compiler by most other modern Unix-like computer operating systems, including Linux, the BSD family and Mac OS X. GCC has been ported to a wide variety of computer architectures, and is widely deployed as a tool in commercial, proprietary and closed source software development environments. GCC is also used in popular embedded platforms like Symbian[1], Playstation and Sega Dreamcast. Originally named the GNU C Compiler, because it only handled the C programming language, GCC 1.0 was released in 1987, and the compiler was extended to compile C++ in December of that year.[2] Front ends were later developed for Fortran, Pascal, Objective C, Java, and Ada, among others...GCC 4.2.1 will be the last release of GCC covered by version 2 of the GNU General Public License. All future releases will be released under GPL version 3. » « )

Une Réponse to “C++ et la métaprogrammation avec les templates, le nouveau standard C++0x pour C++”

  1. Mazué said

    Patrick,

    Bonjour,

    Je vous remercie de l’intérêt que vous avez apporté à mon article sur la meta-programmation et de l’avoir cité sur cette page. Puis-je vous demander d’ajouter la provenance de l’article, en modifiant comme ceci:

    un article publié dans le magazine Programmez! de Frédéric Mazué sur “Blitz++” et la méta-programmation C++.

    Je vous remercie

    Bon week end

    fred

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :