Interstices


  Itinéraires

Bjarne Stroustrup : le père de C++, un langage qui a de la classe

Bjarne Stroustrup est l'homme à qui l'on doit le célèbre langage de programmation C++. Celui-ci offre au développeur des outils très sophistiqués, mais dans le même temps permet de programmer « très près » de la machine. Il connaît un succès croissant non seulement pour le développement de logiciel système, conformément à l'objectif initial de son auteur, mais également dans d'autres secteurs où l'on tient à la fois à programmer « proprement » et efficacement : télécoms, interfaces homme-machine, applications graphiques, simulation...

Bjarne Stroustrup
 

L'homme qui a conçu le langage à succès C++ s'appelle Bjarne Stroustrup. Installé désormais à College Station, une petite ville du Texas, depuis qu'il enseigne à la Texas A&M University, Bjarne Stroustrup a passé l'essentiel de sa carrière aux Bell Labs.

Mais il a d'abord été petit. Bjarne Stroustrup est né en 1950 à Aarhus, la deuxième ville du Danemark (250 000 habitants aujourd'hui). Il fait ses études à l'Université d'Aarhus jusqu'à l'obtention en 1975 d'un master en informatique. Puis c'est à l'Université de Cambridge, en Angleterre qu'il obtient en 1979 son PhD, portant sur la conception des systèmes distribués. Il part alors pour les Etats-Unis, au New Jersey où l'attend un emploi au Computer Science Research Center des Bell Telephone Laboratories. Et ce n'est que 23 ans plus tard, en 2002, qu'il quittera ce qui est devenu les AT&T Labs pour accepter un poste de professeur à la Texas A&M University.

D'une frustration naît la vocation

Bjarne Stroustrup n'a pas toujours su qu'il serait l'inventeur d'un nouveau langage de programmation. Dans les années soixante-dix, ses centres d'intérêt tournaient autour des systèmes distribués, autrement dit les architectures informatiques impliquant plusieurs processeurs. Et en particulier, celles destinées à prendre en charge des systèmes d'exploitation.

Les systèmes d'exploitation sont un peu les sous-vêtements des ordinateurs. Sans eux, ces derniers sont tout nus et ne savent rien faire. Alors que, revêtu d'un système d'exploitation, un ordinateur peut enfiler toutes sortes de vêtements logiciels (les applications) qui lui permettent d'exercer autant de métiers. Plus formellement, un système d'exploitation rend un ordinateur « exploitable », capable d'écouter ses utilisateurs, d'accueillir et de lancer des applications, de prendre en charge pour leur compte toutes sortes de corvées, de procéder à diverses tâches d'intendance (comme dupliquer un fichier) et bien d'autres choses.

Le système d'exploitation et divers appendices (comme les systèmes de gestion de bases de données…) constituent ce que l'on appelle le « logiciel système », un genre de logiciel qui se caractérise par sa forte dépendance du matériel sur lequel il doit opérer ainsi que par de fortes exigences en matière d'efficacité. De ce fait, la production du logiciel système diffère quelque peu du développement de logiciels applicatifs et nécessite des outils, en particulier des langages de programmation, spécifiques.

Un peu par hasard, Bjarne Stroustrup allait devenir le créateur d'un langage de programmation merveilleusement adapté au développement du logiciel système. Comme pour bien des créateurs de langage, c'est une frustration qui est à l'origine de cette vocation. « Ce n'est pas tant que j'ai décidé de créer un nouveau langage que le fait que j'avais quelques problèmes pour lesquels les langages existants ne semblaient pas adaptés. »

Des langages de programmation, ce n'est pourtant pas cela qui manquait à l'époque. « Mais je trouvais qu'ils se partageaient en deux catégories : ceux que les gens utilisaient vraiment pour produire du logiciel, et les langages de recherche qui servaient à explorer des idées et argumenter sur les principes de la conception du logiciel. » Bjarne Stroustrup se retrouve face à un affreux dilemme. Il trouve que les « langages de production » sont assez mal fichus et que les « langages de recherche » ont tendance à être limités à quelques machines, à quelques secteurs d'applications et à quelques groupes d'utilisateurs. Et ces derniers langages, qui plus est, ont souvent de sérieux problèmes de performances et d'accès aux ressources matérielles.

Entre idéaux et contraintes

Car si le développeur système se laisse séduire par la possibilité que lui offre un langage de haut niveau de manier de puissantes abstractions, il ne peut oublier qu'il a également besoin de pouvoir accéder aux réalités bassement matérielles de l'architecture qui héberge son logiciel, puisque, précisément, ce dernier a pour objet de« l'exploiter » au mieux. Un langage en col blanc, pourquoi pas, mais à condition qu'il n'empêche pas de mettre les mains dans le cambouis, quitte à fournir les gants.

Lorsque Bjarne Stroustrup se pose ces questions, le paysage des langages de programmation qu'il contemple sans y trouver son bonheur est pourtant riche de Simula, Lisp, Pascal, Algol 68, Modula-2, PL/1... Par la suite, il se familiarisera avec des « langages de recherche » tels que Smalltalk et Trellis/Owl. Enfin, Ada était en gestation et faisait peur. Ada, supposait-on, allait devenir LE langage pour le développement système... sérieux.

Mais en attendant, les logiciels système s'écrivaient au mieux à l'aide de langages « orientés machine ». « Il allait souvent de soi que si vous aviez l'intention de travailler sur une machine IBM, vous alliez utiliser un langage IBM, comme PL/S ou PL/360 ; ou dans le cas d'une machine DEC, un langage DEC tel que Bliss, etc. Il y avait des exceptions, bien sûr. La défense britannique avait un assez joli langage appelé Coral. Il existait des dialectes utiles d'Algol 68. Et BCPL était utilisé dans des endroits surprenants, comme le Xerox PARC. Mais je crois surtout que la plupart des gens à cette époque vous auraient dit que si vous étiez sérieux à propos de développement système, vous deviez écrire en assembleur. » C'est-à-dire le langage simplet fourni par le constructeur permettant d'engendrer des instructions élémentaires destinées à l'ordinateur.

Mais Bjarne Stroustrup ne veut décidément pas programmer en assembleur. « Je l'avais déjà assez fait dans le passé. » Il ne veut pas non plus se limiter à une seule famille de machines. « D'un coup d'œil circulaire dans le labo, je pouvais voir plusieurs machines intéressantes que j'avais de bonnes raisons d'essayer. »

Pas question d'utiliser l'assembleur, ni un langage évolué marié à une machine, et aucun langage de haut niveau à l'horizon permettant d'écrire proprement du logiciel système efficace : Bjarne devra-t-il inventer ce langage idéal qui n'existe pas ? Il répond par oui. Mais devra-t-il le créer ex nihilo ? Non, car il trouve tout de même un point de départ sympathique.

À l'origine était le C

« En 1979, le langage C venait juste d'apparaître. Il n'était pas encore largement connu. » Inventé aux Bell Labs en même temps que le système Unix et d'ailleurs pour développer ce dernier, C est à mi-chemin entre l'assembleur et le langage de haut niveau. C'est une sorte d'assembleur sophistiqué indépendant de la machine.

« Je l'avais déjà utilisé une première fois en 1975 en Angleterre et j'y suis revenu lorsque j'ai rejoint les Bell Labs au printemps 1979. J'avais obtenu mon exemplaire du fameux « K & R book » (rédigé par les inventeurs de C, Brian W. Kernighan, Dennis M. Ritchie) peu après sa sortie en 1978. Une chose qui était importante pour moi, c'est que le langage C était utilisé pour la programmation système sérieuse, sur une variété de machines. Il était assez « bas niveau » pour que l'on puisse écrire le système Unix dans ce langage avec juste quelques lignes d'assembleur en plus, mais dans le même temps suffisamment de « haut niveau » pour que l'on puisse, en étant prudent, obtenir un code portable et raisonnablement élégant. » « Portable » : c'est-à-dire transposable d'une machine à l'autre. « En rejoignant le Computer Science Research Center des Bell Labs, je me retrouvais là où l'on pouvait bénéficier du meilleur support pour C au monde. Si j'avais un problème, je pouvais m'adresser à Dennis Ritchie, Brian Kernighan, Bob Morris, Steve Johnson, Doug McIlroy ou d'autres contributeurs majeurs de ce genre à C et Unix. »

C'est donc de C que s'inspire en premier lieu Bjarne Stroustrup. Dans un premier temps, il définit un langage qu'il appelle « C with classes » - soit « C avec des classes », la classe étant une notion qu'il emprunte au langage Simula.

La révolution de la « classe »

Ce langage révolutionnaire vient du grand nord, plus précisément du Norwegian Computing Centre d'Oslo où Ole-Johan Dahl et Kristen Nygaard lui ont donné naissance en 1962. Mais c'est surtout la mouture Simula-67 qui a fait découvrir au monde le nouveau concept sur lequel est bâti le nouveau venu. Simula a introduit la « classe », qui fait le premier pas vers la notion moderne d'objet, ce fameux objet que l'on retrouve dans la formule « langage orienté objet ».

La programmation orientée objet permet de définir de nouvelles entités caractérisées à la fois comme une collection de données (les « attributs ») et de sous-programmes (les « méthodes »), définissant les actions dont elles sont capables. Une fois décrite une nouvelle « classe », des exemplaires ou « instances » de cette classe peuvent être créés : ce sont les objets. Ainsi dans un logiciel (imaginaire) permettant d'étudier l'agencement d'un appartement, une classe « meuble » pourra comporter des « attributs » tels que « hauteur », « largeur » et « profondeur » et des « méthodes » telles que « placer (coordonnées) ».

Bjarne Stroustrup apprécie dans Simula ce concept de classe, mais regrette bien des inconvénients pour l'activité qui lui importe : le développement de logiciel système efficace. C'est pourquoi, à partir de 1979, il entreprend d'introduire une notion de classe empruntée à Simula dans un langage C augmenté par ses soins.

En 1982, « C with classes » devient C++, avec l'introduction d'autres nouveautés qui ne relèvent pas toutes de la programmation orientée objet. Par la suite, Bjarne Stroustrup définira C++ comme un langage « multi paradigme », signifiant par là qu'il n'est pas seulement « orienté objet ». C++, insiste Bjarne Stroustrup, est un C amélioré qui supporte « l'abstraction de données », la programmation orientée objet et la « programmation générique ».

Du succès au standard

En 1985, Bjarne Stroustrup publie son livre « The C++ Programming Language », qui connaîtra par la suite trois nouvelles éditions (en 1991, 1997 et 2000). Il racontera en 1990 la saga de C++, des idées qui l'ont influencé et des confrontations d'idéaux et de contraintes qui l'ont fait évoluer, dans « The Design and Evolution of C++ ». Devant le succès de C++, la nécessité d'une normalisation du langage se fait sentir. Un long processus aboutira à sa standardisation par l'ISO en 1998. Bjarne Stroustrup s'implique dans cet effort et participe encore aux travaux de finalisation de la norme qui n'ont pas cessé.

La contribution de Bjarne Stroustrup à l'avancement de sa discipline lui a valu un certain nombre de nominations et récompenses. Ainsi il a entre autres été élu en 2004 à la National Academy of Engineering et a obtenu la même année le « Computer Entrepreneur Award » de la IEEE Computer Society. Déjà en 1990, Fortune Magazine l'avait désigné parmi les « douze meilleurs jeunes scientifiques d'Amérique ».

La notoriété inspire à Bjarne Stroustrup des sentiments contrastés. « Avantage : les gens prennent mes opinions au sérieux. Du coup, je sens que j'ai le devoir d'utiliser cette influence pour améliorer l'univers de la programmation. Et je sens que cela rétrécit mon champ d'activité, m'empêche de me lancer dans des petits projets « juste pour le plaisir », qui auraient pu m'aider à grandir. » La notoriété, regrette le chercheur, cela vous colle une étiquette. « Je suis devenu aux yeux de certains Monsieur C++, plutôt qu'un individu multidimensionnel. Ils pensent par exemple que j'aime tout dans C++ et que je déteste tout des autres langages. C'est absurde ! »

Bjarne Stroustrup lors d'un voyage à Hawaii.
Lors d'un voyage à Hawaii.

Bjarne Stroustrup et son épouse Marian sont les heureux parents d'une fille, Annemarie, née à Cambridge, et d'un fils, Nicholas, né aux États-Unis. Tous deux poursuivent aujourd'hui leurs études à l'université. Du coup le papa y est retourné lui aussi. « Il y avait quelque temps déjà que j'avais envie d'enseigner et je voyais mes enfants s'amuser comme des fous à l'université... » Bjarne Stroustrup est devenu il y a deux ans professeur à la Texas A&M University, mais il reste affilié à son laboratoire d'origine. Quand il se met en vacances de l'informatique, Bjarne Stroustrup lit, des ouvrages historiques ou plus littéraires, écoute de la musique. Il pratique la photographie, aime voyager. Et toujours, il marche, court.

Bjarne Stroustrup a même marché sur Mars. Enfin presque. Car Spirit et Opportunity, ces deux merveilleux robots du Jet Propulsion Laboratory qui ont arpenté pendant des mois la planète rouge, voient et décident par la grâce de logiciels écrits en C++.

Tags