Table of Contents

Introduction aux concepts des langages de programmation

Les enseignants ne répondent qu'aux messages envoyés en utilisant la page Piazza

Le dépôt GIT du cours

La page dédiée aux projets

Mode d'évaluation

Les projets sont évalués selon 3 critères

Les notes de cours (Julie Parreaux, 2016-17)

Cours 10: La vie secrète des objets


Lundi 27 novembre

Documentation C++

Cours 9: Classe découverte: templates, itérateurs, exceptions

Lundi 20 novembre

À la découverte de la documentation C++

Documentation C++
La minute culture: TOP500

Twice a year, three Top500 lists come out to rank the world's supercomputers by either their overall performance, their ability to parse enormous data sets, or their minimal environmental impact. And last week the Top500, Graph500 and Green500 were released at the SC13 conference in Denver.

For more than 20 years, the Top500 list has used analysis of brute force computing power, the number of floating-point operations each machine could process per second, to determine the rankings for supercomputers. But parsing data and reducing environmental impact are two trends that have led to the Graph500 and Green500 lists.

The Green500 list provides a window into how difficult it is to build a supercomputer that can compete in terms of efficiency and low energy consumption. Only one supercomputer on this year's Green500, the Piz Dainte from the Swiss National Supercomputing Centre, is also ranked in the top 10 of the Top500.

Most Efficient Supercomputers Ranked On Green500 List, Lily Hay Newman, IEEE Spectrum Nov 2013

NB: Dernier classement du TOP500:

Cours 8: Quel bel héritage, cette classe!

Lundi 13 novembre

Documentation C++
Bjarne Stroustrup

Le concepteur de C++ est aussi un grand communicant, ce qui a sans doute significativement contribué à la large adoption du langage. Son site personnel déborde d'informations. Vous y trouverez par exemple un grand nombre d'entretiens. Pour un exemple récent, voir Bjarne Stroustrup Discusses C++.

Il maintient une liste des principales questions qui ont été posées à propos de C++. Voir en particulier celles sur l'héritage.

Plus étonnant, il maintient aussi une liste des grandes applications développées en C++: Geant4, GCC, Google, Microsoft, etc.

Here is a list of systems, applications, and libraries that are completely or mostly written in C++. Naturally, this is not intended to be a complete list. In fact, I couldn't list a 1000th of all major C++ programs if I tried, and this list holds maybe 1000th of the ones I have heard of. It is a list of systems, applications, and libraries that a reader might have some familiarity with, that might give a novice an idea what is being done with C++, or that I simply thought “cool”. Bjarne Stroustrup, Applications


Cours 7: Quelle classe, ce type!

Lundi 6 novembre

Thème: une approche sémantique de la programmation objet, ou la programmation objet sans les langages orientés objet

La lecture de la semaine

l'histoire de C++ et la page Web de Bjarne Stroustrup


The C++ programming language has a history going back to 1979, when Bjarne Stroustrup was doing work for his Ph.D. thesis. One of the languages Stroustrup had the opportunity to work with was a language called Simula, which as the name implies is a language primarily designed for simulations. The Simula 67 language - which was the variant that Stroustrup worked with - is regarded as the first language to support the object-oriented programming paradigm. Stroustrup found that this paradigm was very useful for software development, however the Simula language was far too slow for practical use.

Shortly thereafter, he began work on “C with Classes”, which as the name implies was meant to be a superset of the C language. His goal was to add object-oriented programming into the C language, which was and still is a language well-respected for its portability without sacrificing speed or low-level functionality. His language included classes, basic inheritance, inlining, default function arguments, and strong type checking in addition to all the features of the C language.

[…] In mid-2011, the new C++ standard (dubbed C++11) was finished. The Boost library project made a considerable impact on the new standard, and some of the new modules were derived directly from the corresponding Boost libraries. Some of the new features included regular expression support (details on regular expressions may be found here), a comprehensive randomization library, a new C++ time library, atomics support, a standard threading library (which up until 2011 both C and C++ were lacking), a new for loop syntax providing functionality similar to foreach loops in certain other languages, the auto keyword, new container classes, better support for unions and array-initialization lists, and variadic templates.

Written by Albatross, History of C++

Retour vers le futur

Les discours de Turing Award de Thompson et Ritchie en 1983

Cours 1-6: Caml

Voir la page dédiée.


Bibliothèque de l'ENS Rennes

Langages de programmation

Measuring programming language popularity It is difficult to determine which programming languages are most widely used, and what usage means varies by context. One language may occupy the greater number of programmer hours, a different one have more lines of code, a third may utilize the most CPU time, and so on. Some languages are very popular for particular kinds of applications. For example, COBOL is still strong in the corporate data center, often on large mainframes; FORTRAN in engineering applications; C in embedded applications and operating systems; and other languages are regularly used to write many different kinds of applications.



Outils, environnements de programmation, etc.

Ubuntu virtuel

Attention à bien installer le CD VBoxGuestAdditions.iso pour avoir accès aux fichiers de votre machine hôte de manière transparente.

Environnement de développement

Tous les projets sont corrigés sous Linux Ubuntu. C'est votre responsabilité que de vérifier que tout marche bien dans cet environnement si vous développez autrement.


Documentation C++ de référence: The C++ Resources Network

Tout le cours est construit sur le compilateur GNU g++ version 4.9 et les outils GNU standard: make, gdb, etc. Nous utiliserons aussi des outils avancés comme valgrind. L'environnement recommandé est Linux Ubuntu, mais vous pouvez tout à fait travailler sur Windows ou Mac.

Un site ressource sur les environnements de développement C++: la page Wikipedia sur les environnements de développement intégré (IDE)