Upload
galinierf
View
139
Download
0
Embed Size (px)
Citation preview
(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
(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
(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
(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
(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++
(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
(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
(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;
(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
(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++
(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 ] ) ;}
(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 ;}
(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 ;
}
(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 =
(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
(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 ->
(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
(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...
(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
(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
(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.
(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 ) ;
(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 ) ;
(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/