Le premier compilateur C++ a 30 ans !

Par:
fredericmazue

jeu, 15/10/2015 - 12:40

A lire, si vous appréciez C++, et peut-être aussi si vous ne l'appréciez pas, une très intéressante interview de son créateur danois Bjarne Stroustrup.

En 1979, Bjarne Stroustrup travaillait à un langage C amélioré, qui ne s'appelait pas encore C++ mais C with classes (C avec les classes). Bjarne a ainsi travaillé jusqu'en 1984, pour ajouter à ce langage qui supporte les classes : les constructeurs et destructeurs, les prototypes de fonctions, la surcharge de fonctions, la redéfinition de méthodes et les méthodes virtuelles.

Finalement, en 1985, les travaux aboutissent au premier compilateur commercial C++ ainsi qu'au livre bien connu de Bjarne : The C++ Programming Language, qui en est maintenant à sa 4ème édition. Ce premier compilateur, qui s'appelait CFront, traduisait le code C++ en code C, ce code ainsi généré étant à son tour compilé pour générer un exécutable.

Savez-vous que dès le début Bjarne Stroutrup avait doté le C++ de la programmation générique ? C'est complètement oublié aujourd'hui. C'est Bjarne qui le rappelle lui-même dans son billet. La programmation générique était fournie par un système de macro. Un système petit joueur, pas du tout à la hauteur de langage, et avec lequel Bjarne Stroustrup s'est lourdement trompé. (C'est lui qui le dit :-) Mais depuis, avec les templates, on peut dire qu'il s'est brillamment rattrapé :-)

Bjarne nous apprend encore qu'il a souvent été tenté de créer un nouveau langage à partir de zéro. Outre qu'il est difficile de créer quelque chose de nouveau, il est toujours revenu à C++, le considérant comme trop difficile à concurrencer sur son propre terrain :-) Il a finalement toujours préféré faire une contribution utile au plus grand nombre, en continuant son travail avec C++.

Depuis 1979 et 1985, jusqu'au nouveau standard C++11. C++ a considérablement évolué. Il continuera de le faire, et selon Bjarne Stroustrup, C++17, le nouveau standard en préparation apportera beaucoup de bonnes choses,  comme l'introduction des concepts pour faciliter le travail avec les templates, la modularité, une librairie standard STL améliorée, un meilleur support de la programmation concurrente et parallèle, une librairie pour le réseau, entre autres :-)