Introduction [2017-12-15 ven.]

Intitulé

L'informatique libre : un point de vue sur l'histoire, la théorie et l'utilisation de l'informatique.
Ce cours abordera la théorie de l'informatique et son histoire, en insistant sur le rôle et l'importance de l'informatique libre.
Ce cours, qui ne portera pas sur l'utilsation pratique des logiciels, se veut complémentaire des cours et activités informatiques actuellement proposés dans le cadre de l'utl-tb. Il ne nécessite aucune connaissance préalable.

linux-gnu-debian-ubuntu.png

Pourquoi faut il parler d'informatique ?

Dans la société actuelle l'informatique est devenue omniprésente, de même que les médias audiovisuels sont devenus omniprésents dans les années soixante dix. Or, de la même manière que l'éducation à l'image n'a jamais été faite, l'apprentissage de l'outil informatique est complètement négligé. La conséquence en ce qui concerne les images a été de nous soumettre à des manipulations de l'information par ces médias. Nous risquons d'aggraver cette situation si nous nous contentons de subir cette "révolution" du numérique.

Description

Histoire et contexte

L'étude de la naissance de l'informatique, de son évolution et de son impact sur la sociéte permettra de mettre en évidence les concepts sous-jacents à son élaboration et de montrer la nécessité d'en préserver la liberté d'utilisation.
Des liens pourront être faits avec le cours de culture mathématique que je propose en parallèle.

Exemples

Des exemples d'applications utilisables sur les systèmes linux :

  • logiciels classiques (bureautique, multimedia, ...),
  • gestion d'une base de données,
  • commande robotique,
  • protection des données personnelles,
  • création d'un site web,
  • ... (les exemples présentés dépendront de la demande des participants).

Dans cette partie, conformément à ce qui a été dit au début, l'accent sera mis sur la compréhension générale des grandes classes de logiciels et non sur l'apprentissage d'un logiciel en particulier.

Pourquoi une informatique libre ?

  • répondre aux besoins des utilisateurs plutôt qu'aux contraintes du marché
  • permettre aux utilisateurs de s'approprier les outils :
    • l'esprit "open source" : développer la connaissance des outils, partager ses connaissances
    • comprendre ce que l'on fait, comprendre la logique des systèmes et des programmes
  • permettre aux utilisateurs de disposer librement de ces outils : l'esprit "free"
  • contrôler leur action : éviter les "back-doors" par exemple
  • résister à la main-mise des grandes firmes sur les logiciels, le matériel, l'internet, les données et leur traitement
cc-by-sa.png

Le projet de contenu pour ces cours

Ordinateurs et logiciels

Principalement répondre à vos attentes, donc j'attends vos propositions !
Ce dont je peux parler - ou pas - selon ce que vous souhaitez :

  • une histoire de l'informatique permettant de comprendre son évolution, l'apparition des différents outils matériels et logiciels qui la composent.
  • quelques notions sur la structure et le fonctionnement d'un ordinateur et de ses périphériques
  • une initiation au système linux : qu'est-ce que linux, son histoire, les différentes "distributions", comment l'installer, comment l'utiliser sans crainte et facilement, pourquoi l'utiliser.

Algorithmes et programmation

  • une explication des algorithmes, qui serait en quelque sorte un prolongement de la conférence que j'ai faite le 7 décembre.
  • une initiation à la programmation vue d'un point de vue général, cest à dire insistant sur les caractéristiques communes aux différents langages de programmation et sur leurs différences ; avec des exemples concrets d'applications que nous réaliserions ensemble (dans des cas simples)
  • une initiation à la construction d'un site web, ce qui comprendrait une initiations aux "langages du web" : html5, css, javascript, php

Quelques applications

  • J'ai invité fin janvier un "intervenant extérieur" à venir présenter des outils technologiques (machine à graver, logiciel de traitement de la musique) qu'il a construits en utilisant linux.
  • Contrairement à ce que je fais dans le cours sur les mathématiques où je vous propose des animations et documents que j'ai réalisés au préalable, ici j'essaierai quelquefois de faire en sorte de vous montrer "en direct" comment sont construits certains documents que j'utilise.

Réfléchir aux impacts sur la société

  • Le rôle de l'informatique dans les sciences
  • Un outil qui nous aide à travailler ?
  • Un outil qui nous libère ?
  • Comment se ré-approprier tout ça !
  • Protéger ses données
  • ...

Brève introduction à Linux

  • Pourquoi Gnu/Linux ?
  • Linux est-il difficile à utiliser ?

Le principes théoriques fondateurs de l'informatique [2018-01-19 ven.]

Les précurseurs

La machine d'Anticythère

Elle permet de calculer des positions astronomiques.
Trouvée en 1901 dans l'épave d'une galère romaine datée d'avant 87 av. J.-C., près de l'île grecque d'Anticythère, entre Cythère et la Crète.
On situe la date de fabrication du mécanisme entre 100 et 150 av. J.-C.
Selon l'estimation des chercheurs, le calendrier du mécanisme aurait été connu dès 205 av. J.-C., sept ans seulement après la mort d'Archimède.
machine%20anticyth%C3%A8re.jpg

La Pascaline

Pascal (1642) : première "machine à calculer"
Elle permettait d’additionner et de soustraire deux nombres d'une façon directe et de faire des multiplications et des divisions par répétitions.
pascaline.jpg

La machine analytique

Tentative de création d'une "machine analytique" à cartes perforées par Charles Babbage (vers 1850)
et premier programme informatique pour la machine de Babbage par Ada Lovelace.
machine%20de%20Babbage.jpg

La naissance théorique de l'informatique

Turing, Church, Shannon, Von Neumann

La machine (théorique) de Turing (1936)

machine de Turing simple

Elle permet de calculer en déplaçant une bande de papier contenant les données à traiter devant une tête de lecture / écriture munie du programme à exécuter.
simulation machine de Turing

Une réalisation en Lego de la machine de Turing

20000 à 30000 pièces et 50 mètres de tuyaux assemblés entre septembre 2011 et mars 2012
Ce calculateur fonctionne mais les étudiants ne veulent pas s’arrêter là. Après la présentation publique, ils envisagent l’étape suivante : une machine de Turing universelle. De quoi ne pas cantonner cette belle machine à l’inversion de trois bits. "Dans quelques mois cette machine sera capable de réaliser les mêmes calculs qu’un ordinateur moderne, ni plus, ni moins, mais pour effectuer ce qu’un téléphone portable réalise en 1 seconde, il faudrait à notre machine 3168 ans 295 jours 9 heures 46 minutes et 40 secondes".
video machine de Turing en Lego

machine de Turing universelle
Shannon (milieu du XXème siècle)
  • crée la théorie de l'information
  • utilise le bit pour coder tout type de données (mot, image, musique, ...)
  • du bit au byte (octet)
  • codage ASCII, unicode
informatique = données + algorithmes (programmes)

table unicode de tous les caractères

remarque 1

caractère agnostique de la machine de Turing : interprétation humaine des données ; par exemple le programme d'inversion des bits peut être considéré comme une fonction mathématique ou comme un programme d'inversion video pour une image en noir et blanc
image%20noir%20et%20blanc.png

remarque 2

on peut grouper les bits de données (en octets par exemple) pour leur conférer une structure et un sens ; par exemple

  • on peut considérer des groupes dont le nombre d'éléments est la largeur de l'écran ce qui permet de les considérer comme des points de l'écran ;
  • ou bien considérer qu'un octet représente un caractère (table ASCII)
  • ou que plusieurs octets représentent un caractère (système UTF pour le codage de tous les alphabets)
  • système RGB pour le codage des couleurs, codage numérique du son
universalité

dès lors rien n'empêche de considérer que la table de transition (algorithme) soit elle même codée et écrite sur le ruban ; dans ce cas la tête de lecture contient un programme "universel" qui traite à la fois les instructions et les données de manière équivalente.
Machine_de_turing_universelle.png

La thèse de Church - Turing

Ils prouvent que tout ce qui est calculable peut l'être avec cette machine.
repris par von Neumann

Illustration : page web, navigateur <2018-01-26 ven.>

Écriture d'une page web : codage html et css.
Analogie avec la machine de Turing: cette page est une donnée, le navigateur est un algorithme qui va traiter cette donnée pour l'afficher ; les deux sont chargés en mémoire vive par le système d'exploitation (linux) qui sert d'intermédiaire avec le processeur.

Ordinateurs

Architecture de Von Neumann

Von_Neumann_Architecture.png

Le premier ordinateur ENIAC vers 1945

Eniac.jpg

organisation d'un ordinateur

unité centrale, périphériques
sch%C3%A9ma%20ordi.jpg

caractéristiques <2018-02-02 ven.>

  • architecture (en bits) du processeur : taille des "mots" manipulés
  • fréquence (en GHz) du processeur
  • nombre de cœurs
  • capacité (en Go) et fréquence (en GHz) de la RAM (en Go) ; mémoire cache
  • capacité des disques durs (en Go)
  • carte graphique et carte son pour les applications spécifiques (traitement multimedia, jeu video)

Les systèmes d'exploitation

démarrage d'un ordinateur : BIOS (UEFI), bootstrap, secteur d'amorçage <2018-02-09 ven.>

BIOS : intégré à la carte mère (dans la ROM), cherche le premier disque dur avec un secteur d'amorçage (MBR) qui lui-même contient un chargeur de démarrage (GRUB pour Linux) qui va charger le noyau du système d'exploitation.
UEFI : même schéma mais au lieu du MBR il cherche la partition EFI qui contient la suite des actions à effectuer.
Ils détectent aussi tous les deux la présence de certains périphériques.

la ROM placée sur la carte mère contient le BIOS
------> le BIOS accède au disque dur dont le premier secteur (MBR) contient un chargeur de système (GRUB pour linux)
------> charge Linux du disque dur vers la RAM

systèmes d'exploitation (OS)

  • Multics (1964), UNIX (1969)
  • MS-DOS (1980), Windows (1985)
  • Mac OSX (1984)
  • Gnu (Richard Stallman - 1983), Linux (Linus Torvalds 1991)
  • Android

le système de fichiers et ses interfaces

Partitions, dossiers, fichiers

Sur un disque dur interne ou externe (usb par exemple), une clé usb, un CD ou un DVD l'information est organisée en fichiers.
Un fichier est une unité logique repérée par un nom (ce qui correspond à sa position, son adresse, sur le disque). En réalité peut être écrit sur plusieurs secteurs physiques. Tout ceci est géré par un système de fichiers (fat32, ntfs, ext3, ext4)..
Les fichiers peuvent aussi être organisés logiquement en groupes appelés dossiers ou répertoires et ceci de manière récursive.
le système de fichiers

Quelques principes d'organisation des fichiers

Il est préférable de séparer les fichiers du système des documents personnels. Quand c'est possible il vaut mieux les mettre dans des partitions différentes.

les systèmes ntfs et fat sous windows

les systèmes ext3 et ext4 (entre autres) sous linux.

Les langages de programmation et algorithmes

Un exemple

structuration

trop%20petit%20trop%20grand%201.png

algorithme

N ← nombre entier au hasard entre 1 et 100
Répéter
Afficher "que proposez vous"
X ← Réponse de l'utilisateur
Jusqu'à X = N
Afficher "gagné !"

Notion de programmation structurée.
Écrire un algorithme consiste à écrire dans un "pseudo-langage" structuré - compréhensible par l'homme mais pas par l'ordinateur - la suite des instructions nécessaires à la réalisation d'une tâche.

programme

Ecrire un programme consiste à traduire un algorithme dans un langage de programmation.
Le programme est ensuite :

  • soit compilé en langage machine, pour être rendu directement exécutable
  • soit interprété par une autre application

exemple en javascript

Paradigmes de programmation

  • Programmation impérative, le paradigme originel et le plus courant : on indique la succession d'actions à exécuter (Basic, C, Pascal)
  • Programmation orientée objet, consistant en la définition et l’assemblage de briques logicielles appelées objets (Smalltalk, C++)
  • Programmation déclarative, consistant à déclarer les données du problème, puis à demander au programme de le résoudre
    • Programmation descriptive, à l'expressivité réduite, qui permet de décrire des structures de données (HTML, XML, LaTeX)
    • Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme (lisp)
    • Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats (Prolog)

Exemples

PROGRAMME
SOIT a = [1, 2, 4, 9, 201, 154]
SOIT b = []
POUR-CHAQUE-ELEMENT x DANS a
SI x EST-PAIR ALORS mettre x à la fin de la liste b
AFFICHER b
FIN

FONCTION F(a)
SI a EST-VIDE
ALORS RENVOYER a
SINON SI le premier élément x de a est pair
ALORS RENVOYER {x} UNION F(a - {x})
SINON RENVOYER F(a SAUF x)
FIN

DECLARATION b est la liste des éléments pairs dans a
b = [x | c] avec
x est le premier élément pair de a
c est la liste des éléments pairs dans a - {x}
FIN

Principaux langages

Multiplicité des langages : analogie avec les langues naturelles
Modèle mathématique : système formel
En général les langages récents incluent la possibilité de programmer suivant plusieurs paradigmes

  • langage machine
  • assembleur (1965)
  • avant 1980
    • FORTRAN, LISP
    • COBOL, BASIC, C, SMALLTALK, PROLOG
    • PASCAL, FORTH

diagramme simplifié des langages informatiques

Faut il apprendre à programmer ?

  • programmer pour comprendre les outils informatiques qui nous entourent
  • programmer pour structurer sa pensée, en particulier pour les jeunes

En France depuis deux ou trois ans dans l'Éducation Nationale la question est posée. Cependant la question fondamentale est de savoir quel serait le contenu de cet apprentissage. S'il s'agit d'un enseignement "technique" cela paraît peu pertinent : les compétences qui seront nécessaires dans les années à venir dans ce domaine demanderont un très haut niveau de technicité mais surtout seront tributaires de compétences non strictement informatiques : mathématiques, connaissance des métiers, ... Enfin sans doute que les programmes d'intellignece artificielle seront de bien meilleurs codeurs que les êtres humains.

Réseaux, internet et le web

Histoire

fin des années 60

Le consortium Digital-Intel-Xerox crée la première carte réseau.
Cependant les machines de fabricants différents ne peuvent pas communiquer.
Le réseau ARPANET en 1971 (23 ordinateurs) est le premier système interconnecté (protocole NCP)
arpanet%201970.png

le web au début des années 90

En 1983 naissance de l'internet avec le protocole TCP/IP (1000 ordinateurs)
En 1990 Tim Berners-Lee invente le World Wide Web au CERN : interface graphique, liens hypertextes.
En 1993 création du W3C (World Wide Web Consortium) au MIT et à l'INRIA pour accompagner le développement du Web, définir les normes et garantir son ouverture.
w3c%20validation.png

Protocoles

adresses ip: ipv4 et ipv6, paquets de données, protocole tcp
web : http, https, domaine
mail : pop, smtp, webmails
tcp%20packet-format.jpg

Illustration : Comment la page web est transmise et interprétée

traceroute%20-q1%20utltb.manthano.fr.png
traceroute%20facebook.png

Les applications

Ce sont des programmes écrits dans l'un des langages disponibles (code source) et en général compilés en langage machine.
Une même application (Firefox ou libreoffice par exemple) peut être compilée pour être utilisée dans plusieurs systèmes d'exploitation

  • Exemples courants
    • navigateur web : permet d'accéder au web (Firefox)
    • traitement de textes : permet d'écrire et de mettre en forme du texte (libreoffice Writer)
    • tableur : permet de construire et gérer des tableaux de calcul (libreoffice Calc)
    • Les images, le son, la video : formats, compression, traitements
  • Exemples plus spécifiques
    • bases de données : Une base de données est un ensemble de tables dont chaque ligne est appelée un enregistrement ; ces tables sont reliées entre elles par des clés d'index. Un gestionnaire de bases de données permet de gérer ces bases de données (libreoffice Base)
    • éditeurs : Un éditeur permet d'écrire du "texte brut" ; il est souvent utilisé en programmation (gedit)
    • le terminal sous linux

Algorithmes et Big Data dans la société

Bienfaits utopiques et dangers réels de l'informatique et des algorithmes

Questionnements et inquiétude sociale

Extraits du hors-série "Big Data", Pour La Science, février 2018

Transformations sociales

... À mesure que la société se numérise et que le big data l’envahit, on a d’abord optimisé la demande du consommateur vis-à-vis des biens eux-mêmes, puis géré les interactions sociales que leur consommation génère. La première étape relève encore de l’ancien monde, la seconde dessine déjà la frontière d’un nouveau monde.
... Cette fois, le big data et les algorithmes ne sont plus des instruments d’optimisation d’une vie qui ressemble par ailleurs à celle d’avant. Ils nous demandent d’entrer dans ce monde, de devenir nous-mêmes des informations pour être traités par des algorithmes.
On passerait d’un monde où un capteur nous dit : « Votre pouls s’accélère, allez voir votre médecin» à un autre où le capteur lui-même prescrit la solution optimale. L’individu, totalement numérisé, serait géré par un algorithme. Dans ce monde, la matérialité des corps et des objets disparaîtrait, ne laissant plus qu’informations et algorithmes. On n’existe plus en chair, un peu comme dans le film Matrix.
Je prends ça au sérieux. Le big data se prépare à nous faire entrer dans un monde entièrement numérique, où nous devenons des informations gérées par des informations. On peut certes refuser d'y entrer, mais au risque d’un ostracisme général (moyens de paiement, de guérison, d’éducation...). Or une fois à l’intérieur, on devient un flux d’informations qui nous rend tout à fait différents des objets du monde antérieur.
... Si la mécanisation n’a pas, finalement, paupérisé les ouvriers au XIXe et au XXe siècle, c’est parce que les machines et les humains ont été complémentaires : les premières ont eu besoin des seconds pour fonctionner. Ces liens ont créé un effet de levier qui a tiré l’ensemble vers le haut. Mais que se passerait-il si, au lieu
d’être complémentaires, les machines se substituaient aux humains ? Si le travail humain était mis en concurrence avec des robots, des machines, des algorithmes ? C’est la grande question du monde contemporain.
... Si les jeunes veulent travailler, et tirer le meilleur profit des technologies à leur disposition, ils y parviendront, mais à condition évidemment que la société, son système de formation notamment, leur en donne les moyens. Pour cette raison, je suis très attentif à la réforme de l’université. J’aimerais tant qu’elle soit vraiment un lieu d’intelligence collective. Aujourd’hui, en France, au sortir du baccalauréat, vers 18 ans, les jeunes doivent choisir une voie (avocat, médecin...). C’est ridicule et revient à les envoyer au « peloton d’exécution », car on est certain que les métiers auxquels on les destine sont déjà en voie de disparition. On devrait plutôt leur donner les moyens d’être beaucoup plus agiles afin qu’ils puissent inventer de nouvelles complémentarités avec les machines et éviter d’être entièrement numérisés. En un mot, j’aspire à une révolution démocratique par laquelle la créativité humaine garderait le dernier mot.
[Daniel Cohen, professeur d'économie à l'ENS]

Reprendre le contrôle

... la magie des chiffres ne fonctionne plus, car « derrière les moyennes se cachent des transformations et des inégalités de plus en plus importantes. [...] On ne reconnaît plus les difficultés de sa vie quotidienne dans les indicateurs. [...] Ceci est un danger pour la démocratie ».
Un autre élément d’explication réside dans la disruption. Selon le philosophe Bernard Stiegler, cette accélération de l’innovation, nourrie d’algorithmes et de big data, « prend de vitesse les organisations sociales » et entraîne l’apparition brutale de nombreuses instabilités, notamment « une perte du sentiment d’exister, qui provoque de la frustration ».
Pour remettre de l’humain dans le numérique, lutter contre le désenchantement, Dominique Cardon, directeur du Médialab de Sciences Po, propose d’améliorer la compréhension par tous des mécanismes de traitement des données. En d’autres termes, on doit « soulever le capot » !
[Loïc Mangin, Rédacteur en chef adjoint de la revue Pour La Science]

Questions scientifiques

L'avenir des théories scientifiques

Le projet Human Brain

simulation d'un cerveau humain a été contesté :

  • argument des opposants : on ne connaît pas assez le fonctionnement du cerveau humain pour pouvoir le simuler
  • contre argument : justement la modélisation permettra de mieux comprendre le cerveau humain

Questionnaire pour les prochaines sessions (à partir de la mi-octobre 2018)

(vous pouvez me remettre vos propositions au prochain cours ou me l'envoyer avant la fin du mois de mars par courrier électronique à l'adresse michel.damiens@gmail.com)

  1. comme cette année : un cours d'informatique découplé du cours de mathématiques

quelles questions aborder ?

  1. un cours d'informatique intégré au cours de mathématiques
  1. un atelier informatique différent des (et complémentaire aux) ateliers déjà existants :
    • centré sur linux (utilisation du système et des logiciels libres spécifiques)
    • avec une initiation à la programmation
    • avec une initiation à la création de pages web (html, css, javascript)
    • ...
  1. autres suggestions