Cours C++.livre(Historique)

Cours C++.livre(Historique)

-

Documents
4 pages
Lire
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

CHAPITRE 2 Un peu d’histoire...Quand Bell Labs, en 1976, abandonne le projet MULTICS, Ken Thompson,programmeur système chez Bell Labs, se trouve désoeuvré. MULTICS devait êtreun nouveau système d’exploitation multi-tâches et multi-utilisateurs utilisablepour la commande de systèmes de télécommunications (entre autres, des centrauxtéléphoniques, et des noeuds de réseau de données ARPAnet), mais le projet estabandonné parce que trop coûteux, et que les perspectives sur la base matérielleutilisée sont trop restreintes: à cette époque, le mini-ordinateur le plus performantétait le PDP-8 de Digital Equipment Corporation.Le langage C++ 13einev Télécommunications mjnPour s’occuper, Ken Thompson décide de programmer des jeux sur le PDP-8, et commeil ne dispose pas d’un système d’exploitation qui le satisfasse, il commence par développer unsystème d’exploitation. Ce sera la première version de UNIX, écrite entièrement en assem-bleur.Quasi parallèlement, un autre programmeur de Bell Labs, Dennis Ritchie utilise le lan-gage BCPL (développé en Grande Bretagne, dans une université), mais le trouve inadapté àses besoins. Il va récrire un langage sur la base de BCPL, et l’appellera B (vraisemblablementla première lettre de BCPL). B ne sortira jamais officiellement des tiroirs de Dennis Ritchie;aidé par Brian Kernighan, B va connaître un nouveau développement. Le nouveau langageainsi crée se nommera C. Difficile de dire à priori si C représente la lettre venant après ...

Sujets

Informations

Publié par
Nombre de visites sur la page 61
Langue Français
Signaler un problème
Le langage C++
13
CHAPITRE 2
Un peu d’histoire...
Quand Bell Labs, en 1976, abandonne le projet MULTICS, Ken Thompson,
programmeur système chez Bell Labs, se trouve désoeuvré. MULTICS devait être
un nouveau système d’exploitation multi-tâches et multi-utilisateurs utilisable
pour la commande de systèmes de télécommunications (entre autres, des centraux
téléphoniques, et des noeuds de réseau de données ARPAnet), mais le projet est
abandonné parce que trop coûteux, et que les perspectives sur la base matérielle
utilisée sont trop restreintes: à cette époque, le mini-ordinateur le plus performant
était le PDP-8 de Digital Equipment Corporation.
einev
Télécommunications
mjn
14
Le langage C++
Pour s’occuper, Ken Thompson décide de programmer des jeux sur le PDP-8, et comme
il ne dispose pas d’un système d’exploitation qui le satisfasse, il commence par développer un
système d’exploitation. Ce sera la première version de UNIX, écrite entièrement en assem-
bleur.
Quasi parallèlement, un autre programmeur de Bell Labs, Dennis Ritchie utilise le lan-
gage BCPL (développé en Grande Bretagne, dans une université), mais le trouve inadapté à
ses besoins. Il va récrire un langage sur la base de BCPL, et l’appellera B (vraisemblablement
la première lettre de BCPL). B ne sortira jamais officiellement des tiroirs de Dennis Ritchie;
aidé par Brian Kernighan, B va connaître un nouveau développement. Le nouveau langage
ainsi crée se nommera C. Difficile de dire à priori si C représente la lettre venant après B dans
l’alphabet, ou la deuxième lettre de BCPL.
C’est à peu près à cette période que Dennis Ritchie parvient à persuader Ken Thompson
de récrire UNIX sur une machine plus performante, un PDP 11. Pour ce faire, au lieu d’utiliser
l’assembleur, on va utiliser le langage de Ritchie, C. Cette décision est à considérer comme
un des plus importants tournants de l’histoire de l’informatique: pour la première fois, on va
créer un système d’exploitation écrit dans un langage indépendant de la machine cible : pour
la première fois, on va développer un système d’exploitation portable au niveau source.
Cette grande première va faire le succès de UNIX, et par corollaire, le succès de C.
AT&T reprendra progressivement le développement de UNIX, en fournissant des licences
source à bas prix, comprenant le compilateur Kernighan&Ritchie (ou K&R) à tous les utilisa-
teurs potentiels. Petit à petit, UNIX s’imposera comme le
must
des systèmes d’exploitation à
l’usage des scientifiques et des universités.
UNIX étant écrit en C, la moindre intervention sur UNIX demande au moins une con-
naissance embryonnaire de C. Le compilateur C étant gratuit, le langage devient populaire en
même temps que UNIX, malgré une syntaxe cryptique, et des déboguages particulièrement ar-
dus dans la jungle des pointeurs imposée par le langage. Ses qualités pour la programmation
système, et le code très performant que génèrent les compilateurs en font bientôt une alterna-
tive intéressante également pour les scientifiques, las de FORTRAN. Un temps mis sous
l’éteignoir de la mode PASCAL, C sort soudain du monde UNIX avec l’arrivée d’ordinateurs
à bas prix, dotés de systèmes multi-fenêtrage comportant des interfaces en C (Windows de Mi-
crosoft, par exemple).
A cette époque, Bjarne Stroustrup définit le successeur de C. Plutôt que D ou P (soit la
suite de C dans l’alphabet, ou la suite de C dans BCPL), Stroustrup baptise son enfant C++
1
,
entendant par là que C++ est «
a better C
», un C meilleur, incrémenté. (++ est l’opérateur
d’auto-incrémentation de C). C++ est un bricolage de labo, en ce sens qu'il n'y a jamais eu de
projet défini pour C++, avant qu'il connaisse le succès actuel
2
. Dans l'idée de Stroustrup, C++
devait conserver les idées de base ayant conduit à la réalisation de C (typage statique, effica-
1. En fait, le premier nom donné à ce nouveau langage était “C with classes”.
2. Il est intéressant de constater que UNIX, C et C++ sont tous des bricolages de labo. En ce sens, ces trois produits sont à
l’opposé de produits comme CHILL ou ADA, ayant fait l’objet d’une spécification très poussée. Cette opposition est par-
ticulièrement manifeste dans la philosophie sensible derrière l’implémentation des produits. Cette opposition est égale-
ment sensible chez les utilisateurs des produits respectifs, qui ont facilement tendance à déclarer la guerre sainte dans ce
genre de situation. Guerre sainte d’autant plus vaine qu’un langage, aussi bon ou aussi mauvais soit-il, n’a jamais fait la
qualité ni le succès d’un programme, comme le démontre à l’envi nombre de réussites et d’échecs industriels.
Le langage C++
15
einev
Télécommunications
mjn
cité d'exécution, langage compilé), et amener quelques-uns des points forts d'autres langages.
Parmi ces points forts, citons la surcharge d'opérateurs (introduite pour la première fois par
Algol-68) et les classes (introduites tout d'abord par Simula-67). Ironiquement, les principaux
“+” de C++ sont des caractéristiques introduites dans des langages antérieurs à C lui-même,
qui est à l'origine de C++.
L’avènement de C++ défini par Bjarne Stroustrup de AT&T décuple le succès déjà con-
sidérable de C, en annulant un bon nombre de critiques faites de tous temps à C. Actuelle-
ment, la plupart des produits livrés pour le développement sont fournis avec une interface
standard en C, et un nombre grandissant proposent une interface C++.
On peut bien sûr regretter la quasi-hégémonie prise actuellement par C++ dans bon
nombre de secteurs industriels, alors que d’autres langages, comme PORTAL, ADA ou MO-
DULA-3 pourraient sembler plus «élégants». L’avantage est que l’on peut se fonder actuel-
lement sur des bibliothèques de logiciels très vastes (communications, protocoles, fenêtrages,
algorithmique, traitement d’images, etc...) offrant des interfaces écrits dans un même langa-
ge. Et beaucoup plus que le langage de programmation utilisé, c’est le code déjà écrit et testé
qui permet d’optimiser les coûts de production de grands logiciels. Le meilleur langage est
celui que l’on connaît, le meilleur code, - et le plus rapidement disponible- celui qui tourne
déjà sans erreurs. Sur la base de ces hypothèses, C++ apparaît comme un langage très puis-
sant, connu par beaucoup de programmeurs dans le monde, et soutenu par une masse de code
existant et disponible probablement à nulle autre pareille. Ses défauts, -essentiellement une
notation cryptique et une complexité non négligeable-, ne sauraient contrebalancer ces deux
avantages, tant qu’il est vrai que l’industrie reste un milieu essentiellement pragmatique.
1
1. Nous omettons volontairement les bibliothèques FORTRAN, qui surpassent actuellement encore en masse de code les
bibliothèques C. Les bibliothèques FORTRAN ne connaissent actuellement que peu (ou plus) de développements signi-
ficatifs à l’échelle mondiale, si bien que l’on peut raisonnablement prédire leur abandon à plus ou moins brève échéance.
Pour le cas de COBOL, une prévision est beaucoup plus difficile à faire, l’inertie dans les milieux commerciaux étant
beaucoup plus grande (et ce n’est pas peu dire !) que dans les milieux technico-scientifiques.
TABLEAU 1.
Aperçu de l’évolution des langages de programmation
Date
Evènement
1946
Développement de “Plankalkül” par l’ingénieur allemand (bavarois) Konrad Zuse. Il applique son
langage, entre autres, au développement d’un jeu d’échecs. Ce langage ne sera jamais appliqué
sur un ordinateur.
1949
Premier langage de programmation appliqué sur un ordinateur, Short Calc doit être compilé à la
main avant d’être introduit dans la machine.
1951
Apparition de A-0, premier compilateur connu par une large audience. L’auteur du compilateur
est Grace Hopper, qui plus tard participera au développement de COBOL
1957
Un team conduit par John Backus écrit le premier compilateur FORTRAN (FORmula TRANsla-
tor) langage à vocation mathématique essentiellement. John Backus contribuera également au
développement de ALGOL, et à la notation BNF.
1958
Apparition de FORTRAN II, et de la première spécification de ALGOL. John Mac Carthy (MIT)
commence le développement de LISP.
1959
Apparition de LISP 1.5 et de COBOL (COmmon Business Oriented Laguage). COBOL est écrit
par un groupe appelé “Conference on Data Systems and Languages”, mieux connu sous le nom de
CODASYL.
einev
Télécommunications
mjn
16
Le langage C++
1960
Date importante, avec l’apparition de
ALGOL-60
, premier membre de la famille des langages
structurés. ALGOL-60 est l’ancêtre d’une famille de langages parmi lesquels on trouvera plus
tard PASCAL, C, Ada entre autres.
1962
Définition par Kenneth Ivarson de APL - A Programming Language. APL utilise un jeu de carac-
tères propre, et nécessite donc des terminaux d’entrée-sortie dédiés. Apparition de FORTRAN IV.
1964
Invention de BASIC par les professeurs John G. Kemeny et Thomas E. Kurtz à l’université de
Dartmouth. Apparition officielle de PL/1, un langage dont l’une des particularités, hormis sa
complexité, est de ne pas comprendre de mots reservés.
1968
Faisant suite à FORTRAN 66 (1966), LISP2 et LOGO, c’est l’apparition de ALGOL68, un lan-
gage qui n’a plus grand chose de commun avec son prédecesseur, et qui s’avère un challenge pour
les implémentateurs.
1970
Début du développement, au Xerox PARC, sous la direction de Alan Kay, du projet
Smalltalk
,
qui sera à l’origine de la programmation orientée objets. Première implémentation de
PASCAL
sur un ordinateur CDC 6600.
1972
Dennis Ritchie produit C
, dont la première spécification ne sera publiée que 2 ans plus tard.
Apparition de Prolog.
1975
Première version du BASIC Microsoft, écrite par Bill Gates et Paul Allen. Spécification de PAS-
CAL (PASCAL User manual and Report) par Niklaus Wirth.
1977
Apparition de MUMPS, dédié aux tâches médicales. Le DOD (Department Of Defense) lance une
compétition pour un langage universel: cette compétition aboutira à ADA, écrit par un team de
Honeywell Bull sous la direction Jon Ichbiah. Publication de UCSD Pascal.
1980
Apparition de Smalltalk-80 et de MODULA-2. Bjarne Stroustrup développe une série d’exten-
sions à C connues sous le nom de “
C with classes
”.
1983
Apparition de Ada. Apparition des premiers compilateurs C pour micro-ordinateurs (Microsoft et
Digital Research).
Première implémentation de C++
(le nom est dû à Rick Mascitti). Apparition
de
Turbo Pascal
.
1986
L’année des langages orientés objets. Apparition de
Smalltalk V
pour micro-ordinateurs. Appari-
tion de
Object Pascal
pour Macintosh. Apparition de
Eiffel
, et publication de
C++
.
1988
Publication de CLOS (Common Lisp Object system), et mise au point de
Obéron
.
1990
C++ V2.1 introduit les templates et les exceptions
1991
Apparition de Visual Basic, une révolution dans la catégorie des langages RAD (Rapid Applica-
tion Development). Ce développement va induire toute une série d’outils RAD, comme Delphi,
CBuilder, Visual C++, qui tendent à permettre le développement d’applications sans programma-
tion (en fait, avec peu de programmation !).
1992
Spécification de Dylan par Apple Computers
1995
Apparition de
Java
. Proche de C++, mais radicalement orienté objets, Java s’exécute sur une
machine virtuelle, et son code objets est ainsi indépendent de la machine cible. Internet va rapide-
ment populariser Java, et en faire l’un des plus incroyables succès de la jeune histoire de l’infor-
matique. La date de 1995 (le 23 mai, exactement) est sujette à controverse : les origines de Java
sont certainement nettement antérieures, mais 1995 coïncide avec la présentation du premier
explorateur “compatible Java” par Sun Microsystems.
1995
Publication de ADA 95, avec un support pour la programmation orientée objets
1996
Publication d’un standard ANSI pour C++
TABLEAU 1.
Aperçu de l’évolution des langages de programmation
Date
Evènement