24
(Petite) Histoire de C++ Florian Galinier Introduction 1983, une année à succès Remontons le temps... Simula 67, les origines de la POO BCPL, B, C Retour vers le futur C with Classes C++ C++ 2.0 C++98 C++11 C++14 Et maintenant ? Conclusion Sources (Petite) Histoire de C++ Florian Galinier 25 novembre 2014

(Petite) Histoire de C++

Embed Size (px)

Citation preview

Page 1: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

(Petite) Histoire de C++

Florian Galinier

25 novembre 2014

Page 2: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

1 Introduction1983, une année à succès

2 Remontons le temps...Simula 67, les origines de la POOBCPL, B, C

3 Retour vers le futurC with ClassesC++C++ 2.0C++98C++11C++14Et maintenant ?

4 Conclusion

5 Sources

Page 3: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Quelques sorties célèbres en 1983

Page 4: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Prix Turing

Ken Thompson et Dennis Ritchie sont récompensés pour leurstravaux sur UNIX

Page 5: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Une naissance célèbre

Bjarne Stroustrup : Le papa d’un tout nouveau langage : leC++

Page 6: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

BCPL

Simula 67

C++

B

C

C++ : un héritage multiple

Page 7: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Simula I

• Simple Universal Language (1962)• Créé par Ole-Johan Dahl et Kristen Nygaard• Surtout connu pour son évolution de 1967

Page 8: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Un exemple de Simula 67

CLASS Rec tang l e ( width , h e i g h t ) ;REAL width ;REAL he i g h t ;BEGIN

REAL area ;

PROCEDURE p r i n t ;BEGIN

OutText (" Rec tang l e : " ) ;OutFix (Width , 2 , 6 ) ;OutText ( " x " ) ;OutFix ( Height , 2 , 6 ) ;OutImage ;

END;

a r ea := width ∗ h e i g h t ;END;

Page 9: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Les instructions suivantes :

REF( Rec tang l e ) r ;r :− NEW Rec tang l e ( 1 0 , 2 0 ) ;r . p r i n t ;OutText ( " Area : " ) ;OutFix ( r . area , 2 , 6 ) ;

entraineront l’affichage de :

Rectangle: 10.00 x 20.00Area: 200.00

Page 10: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

BCPL

$ (LET X = VEC 2 AND Y = X

X!0 := 13X!1 := 1.035

WRITEF("%N∗N" , Y! 1 )) $

The experience of coding and debugging (...) inBCPL was horrible. BCPL makes C look like a veryhigh level language (...)

Bjarne Stroustrup, A History of C++

Page 11: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

B

main ( ) {e x t r n p r i n t f ;auto x [ 2 ] , y ;

x [ 0 ] = 13 ;x [ 1 ] = 1 . 0 3 5 ;y = x ;

p r i n t f ("%d∗n " , y [ 1 ] ) ;}

Page 12: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

C

i n t main ( vo i d ) {auto i n t x [ 2 ] = {13 ,1 .035} , ∗y = x ;

p r i n t f ("%d\n " , y [ 1 ] ) ;

r e t u r n 0 ;}

Page 13: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

1979-1983

c l a s s Rec tang l e {f l o a t width ;f l o a t h e i g h t ;v o i d new ( f l o a t , f l o a t ) ; /∗ Con s t r u c t e u r ∗/c a l l ( ) ; /∗ Avant chaque appe l de f o n c t i o n ∗/r e t u r n ( ) ; /∗ Apres chaque appe l de f o n c t i o n ∗/

p u b l i c :f l o a t a r ea ( ) ;

} ;

f l o a t Rec tang l e . a r ea ( ) {r e t u r n width ∗ h e i g h t ;

}

Page 14: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

• Classes et héritage• Visibilités public / private• Constructeurs et destructeurs• Classes friend• call() et return()• Arguments par défaut• Surcharge de l’opérateur =

Page 15: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

1983-1985

• Fonctions virtuelles• Surcharge d’opérateur et de fonctions• Référence• Constantes• Suppression de call() et return()• Ajout des commentaires //• Le . désigne désormais uniquement l’appartenance à unobjet, le :: l’appartenance à une classe

Page 16: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

1985-1988

• Héritage multiple• Classes abstraites• Méthodes statiques• Méthodes const• Visibilité protected• Surcharge de ->

Page 17: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

• Première standardisation du C++• Template• Namespace• Exceptions• Boolean

Page 18: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

• Boucle for(x : y)• nullptr• Fonctions lambda• Pointeurs intelligents• Inférence de type (auto)• Move semantics• Ajout des enum class et enum struct• std::thread• et encore énormément d’ajouts dans la bibliothèquestandard...

Page 19: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

• Déduction du type de retour des fonctions• Déduction du type des paramètres des lambdas• Littéraux binaires• Séparateurs de nombres• Template de variable• Attribut [[deprecated]]• Quelques ajouts dans la STL

Page 20: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

• Prochaine norme majeure en 2017• Quelques nouveautés déjà implémentées par descompilateurs

Page 21: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Au final, C++ c’est :• de la programmation impérative ;• de la programmation orientée objet ;• de la programmation générique.

Page 22: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

Préférez-vous...

X∗ p = new X( 2 ) ;

Page 23: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

... ou bien ?

s t r u c t X ∗ p = ( s t r u c t X ∗)ma l l o c ( s i z e o f ( s t r u c t X ) ) ;

i f ( p == 0) e r r o r ( "memory exhaus t ed " ) ;p−>i n i t ( 2 ) ;

Page 24: (Petite) Histoire de C++

(Petite)Histoire de

C++

FlorianGalinier

Introduction1983, une année àsuccès

Remontons letemps...Simula 67, lesorigines de la POO

BCPL, B, C

Retour vers lefuturC with Classes

C++

C++ 2.0

C++98

C++11

C++14

Et maintenant ?

Conclusion

Sources

• A History of C++, Bjarne Stroustrup• Martin Richards’s BCPL Reference Manual, 1967• The Computer History Museum’s Software Preservation –

http://www.softwarepreservation.org• Le site de Martin Richards (avec un compilateur BCPL à

disposition !) – http://www.cl.cam.ac.uk/~mr10/• Le compilateur GNU Cim pour Simula –

http://folk.uio.no/simula67/cim.shtml• Le support du standard C++14 du compilateur GCC –

https://gcc.gnu.org/projects/cxx1y.html• Le support des standards du compilateur Clang –

http://clang.llvm.org/cxx_status.html• Le comité standard C++ –

http://www.open-std.org/jtc1/sc22/wg21/