Pourquoi ce cours?

L’informatique en première année à l’ENSTA

En 1A, on vous enseignera une variété de compétences destinées à vous préparer aux cours spécialisés de 2A et 3A ainsi qu’à votre vie professionnelle. Les compétences informatiques seront présentées à travers un cycle de 5 cours :

  1. MO101 présente l’environnement technique (Linux, machine virtuelle).
  2. IN102 présente la lingua franca de l’informatique : le langage C. Le C étant très proche du matériel, cela vous permet également de mieux comprendre le fonctionnement d’un ordinateur.
  3. IN101 montre comment un problème peut être décrit pour être résolu par un ordinateur : l’algorithmique.
  4. IN103 montre comment les données peuvent être organisées pour un traitement plus efficace : les structures de données.
  5. IN104 présente le développement des projets logiciels plus ambitieux.

Qu’est-ce que l’informatique ?

L’informatique est la science du traitement des données par une machine.

L’informatique fait-elle partie des mathématiques ?

Une partie de l’informatique appartient aux mathématiques discrètes, mais pas toutes. Par exemple, changer l’ordre des opérations peut modifier la longueur d’un calcul, même si le nombre d’opérations et leur signification mathématique restent les mêmes - la longueur du transfert des données peut jouer un rôle.

D’autres parties de l’informatique prennent en compte les limitations imposées par le matériel - cela reste une science (et non une technologie) lorsque ces limitations sont de nature très fondamentale. Par exemple, lorsque chaque opération est limitée à un certain nombre de bits.

L’informatique = la programmation?

La programmation n’est qu’une petite partie de l’informatique. Pour beaucoup de questions fondamentales, on n’a pas besoin de savoir comment le traitement est réalisé (=programmé). Exemples:

  • Peut-on décider si un programme finira dans un temps fini? (Non, sauf pour des cas spéciaux.)
  • Peut-on garantir que le résultat d’un programme soit correct (et comment)? (Parfois, oui.)
  • Peut-on garantir qu’un programme ne se plantera pas (et comment)? (Parfois, oui)
  • Peut-on créer automatiquement des programmes à partir d’une spécification ? (Rarement.) Ces questions sont discutées par les informaticiens non pour un seul programme donné, mais pour des classes de programmes. On répond à ces questions en construisant des modèles mathématiques, qu’on peut ensuite analyser — parfois avec d’autres programmes!

A quoi me sert l’info en 1A ?

Même si vous ne programmez jamais, vous prendrez contact avec des outils informatiques ou des informaticiens. Ça peut être chez les clients, les fournisseurs ou le support. La connaissance des fondamentaux vous permettra de garder une perspective réaliste et éclairée, sans tomber dans un défaitisme (un superordinateur nous gouvernera tous) ou un optimisme naïf (l’intelligence artificielle résoudra tous nos problèmes).

L’enseignement en informatique vous sensibilisera aussi à certaines problématiques. Par exemple, 66% des projets logiciels échouent! Vous ferez vous-même l’expérience de certaines des difficultés qui rendent le développement de logiciels si difficile.

Du côté des succès, l’informatique permet aux gens de collaborer sur une échelle jamais connue. Beaucoup de projets logiciels connus sont créés par des milliers de collaborateurs, souvent gratuitement! Exemples: toutes les logiciels que vous utilisez en 1A info. Linux a été developpé par plus de 15600 développers venant de plus que 1400 entreprises.

Finalement, l’informatique vous met à disposition des outils qui libèrent votre créativité. En quelques lignes, vous pouvez lancer des calculs sur des superordinateurs, chercher des blogs des gens qui aiment le même peintre que vous, détecter des anomalies dans des échographies ou trouver des possibles suites pour un morceau de musique que vous êtes en train de composer. La seule limite est votre imagination.

Mais pourquoi dois-je apprendre à programmer?

Essayons une analogie : imaginez que vous donnez un cours sur les transports à une personne qui n’a jamais utilisé autre chose que le métro. Pas de vélo, pas de voiture, pas de bus. Beaucoup de problématiques liées aux transports paraîtront totalement abstraites et seraient difficiles à expliquer : les bouchons, les problèmes de stationnement, qu’on sort de la route quand on prend un virage trop vite… Ne serait-il pas mieux de laisser la personne prendre un vélo pendant un certain temps? Les problématiques s’expliqueront d’un coup tout seul.

Mais C, alors vraiment?

La maîtrise d’un langage commun, tel que le C, facilitera la communication et vous permettra de mieux comprendre certaines problématiques fondamentales. Le C est le langage le plus universel

  • qu’un humain peut lire et écrire facilement, et
  • qui, en même temps, permet à un utilisateur humain de dire exactement comment chaque instruction sera executée dans le matériel.

C’est pourquoi nous considérons que c’est le langage le plus adapté pour comprendre le fonctionnement un ordinateur et pour se familiariser avec certains principes fondamentaux de l’informatique.

Le C, c’est écologique!

Enfin, les programmes écrits en C sont généralement les moins gourmands en énergie. Dans une étude, les programmes écrits en C ont consommé 75x moins que les programmes en Python 1.

    1. Rui Pereira, Marco Couto, Francisco Ribeiro, Rui Rua, Jácome Cunha, João Paulo Fernandes, and João Saraiva: Ranking Programming Languages by Energy Efficiency. Science of Computer Programming, volume 205. Elsevier, 2021. (preprint)