Déb/u/o/gue tes humanités
Saison 04

Comprendre l’ordinateur avec le terminal

Formateur·trice·s :
Marcello Vitali-Rosati, Louis-Olivier Brassard, Giulia Ferretti
Lieu :
Bibliothèque des lettres et sciences humaines, local 3091
Date et heure :
(13h-15h)
Lien de la visioconférence :
https://meet.jit.si/DebogueHumanitesCRCEN-BLSH
Impression (bêta) :
Version imprimable
Support de présentation (cliquez pour ouvrir en grand ↗)

Sommaire

# Plan de la séance

  1. Tour de table et d’écrans
  2. Déroulement de la formation
  3. Origines de l’informatique
  4. Principes du numérique
  5. Qu’est-ce qu’un programme/logiciel ?
  6. Usages basiques d’un terminal

Pour cette première séance nous vous proposons de découvrir les enjeux de cette formation ainsi que les différentes séances au programme.

# 1. Tour de table et d’écrans

3 questions :

# 2. Déroulement de la formation

# 3. Origines de l’informatique

# Des calculateurs analogiques aux machines programmables

Si l’informatique est une science récente, et un ensemble de technologies développées au 20e siècle, il faut garder à l’esprit que l’informatique née dès l’antiquité, soit 4000 ans avant notre ère. Le père de l’ordinateur c’est la machine à calculer : un projet qui démarre pendant l’antiquité avec le boulier, et qui se concrétise plus tard avec les inventions de Pascal ou de Leibniz. La grande différence entre ces prémisses et l’ordinateur réside dans la computation : l’ordinateur peut exécuter des programmes, c’est-à-dire enchaîner une suite logique de calculs (une procédure de calcul) sans intervention humaine.

Machine de Leibniz

La date de 1936 est un basculement dans l’histoire de l’informatique : Alan Turing publie un article fondateur sur la calculabilité, qui résout un problème fondamental de logique, qui passera à l’époque inaperçu auprès de celles et ceux qui travaillent sur les machines à calculer. En 1936 c’est aussi une époque où les états se réarment, et beaucoup d’efforts sont mis sur la cryptographie pour sécuriser les moyens de communication, d’où ce besoin de calculateurs.

La machine de Turing est une machine conceptuelle. Elle n’existe pas en tant que telle, il s’agit simplement un modèle pour penser le principe de l’informatique. Il n’y a par exemple pas de différence entre un ordinateur d’aujourd’hui et une machine de Turing. On parle alors de " machine universelle « , car elle traite l’information de façon simple. La machine de Turing permet de faire n’importe quel calcul, elle traite l’information de façon universelle. Alan Turing est un personnage emblématique dans l’histoire de l’informatique (et plus globalement dans l’histoire des sciences et des techniques).

# 3. Origines de l’informatique

# Qu’est-ce qu’un ordinateur ?

Tout d’abord il faut écarter l’idée que l’ordinateur serait une boîte noire, ou une machine dont le comportement serait aussi incompréhensible qu’imprévisible. L’informatique s’est fortement complexifiée depuis une trentaine d’années, sans parler du fait que la plupart des terminaux sont désormais connectés à Internet, mais ce n’est pas pour cela qu’il faut considérer un ordinateur comme une chose mystérieuse.

Cela ne veut pas pour autant dire que je pourrais vous expliquer simplement comment fonctionne un ordinateur, mais déjà les distinctions que Michel Serres vous a présenté sont utiles :

# 4. Principes du numérique

# 4. Principes du numérique

# Le numérique au sens propre du terme

Représentation de la réalité via des éléments discrets et atomiques qui correspondent à des nombres naturels.

S’oppose à analogique: représentation du réel via un signal continu, « analogue » au réel.

Numérique et analogique

# 4. Principes du numérique

# La modélisation du monde

  1. modèle conceptuel
    • donner une description en langage naturel de quelque chose
  2. modèle computationnel
    • transformer la représentation en unités atomiques discrètes et définir des fonctions pour les traiter
      Le « numérique » se situe ici!
  3. modèle matériel
    • implémenter le calcul fonctionnel dans une machine de Turing réelle.
    • calculable = computable

Les trois étapes ne sont pas étanches!

# 4. Principes du numérique

# La base 2

Pour pouvoir implémenter l’approche numérique dans une machine avec 2 symboles disponibles (plein vide, noir/blanc, +/-…).

Base 10 Base 2
0 0
1 1
2 10
3 11
4 100
5 101
6 110

# 4. Principes du numérique

# La base 2

Base 10 Base 2
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

# 4. Principes du numérique

# La base 2

# 4. Principes du numérique

# Les algorithmes

Série finie et exacte d’instructions permettant de résoudre un problème ou d’effectuer des calculs, à partir des données initiales (input). Les algorithmes respectent deux conditions:

Un algorithme qui s’exécute indéfiniment est un erreur de logique. Par exemple :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# python

# Variables
pommes = 1
cerises = 2

# Attention! La boucle ne s'arrêtera jamais!
while pommes + cerises > 1
    pommes = 3 - pommes
    cerises = 3 - cerises
end

# 4. Principes du numérique

# La machine de Turing

Jouez avec une machine de Turing virtuelle

# 5. Qu’est-ce qu’un programme/logiciel ?

# 6. Usages basiques d’un terminal

# 6.1. Qu’est-ce qu’un terminal ?

Un terminal est une interface graphique (graphical user interface, ou GUI) qui émule une console. Il nous permet d’exécuter un shell.

— Source

Un terminal est un moyen d’interagir avec un ordinateur.

# 6. Usages basiques d’un terminal

# 6.2 Définition : le shell

Le shell est un interpréteur de commandes. Il s’agit d’un programme qui transmet les commandes entrées par l’utilisateur au système d’exploitation pour qu’il les exécute.

Des exemples de programmes shell sont bash (qui est aussi un langage de commande) et zsh (Z shell).

# 6. Usages basiques d’un terminal

# 6.3 L’intérêt

Les autres interfaces graphiques nous offrent une série d’options et nous orientent vers un parcours d’action. Grâce au terminal, nous pouvons construire nos propres commandes, adaptées à nos besoins. En apprenant à bien utiliser le terminal, nous pouvons exécuter des commandes complexes très rapidement.

# 6. Usages basiques d’un terminal

# 6.4. Ouvrir un terminal

Sous Linux ou Mac, chercher « Terminal » parmi les applications.

Sous Windows, chercher « Windows Power Shell » ; dans le menu déroulant en haut sélectionner « Ubuntu » ; écrire dans le terminal :

# Windows PowerShell

cd /c/Users/votre-nom-sur-Windows

Sinon suivre ces instructions ou celles-ci.

# 6. Usages basiques d’un terminal

# 6.5. Savoir où l’on est

pwd

# exemple de réponse: /home/nom-d-utilisateur

À noter ici qu’il s’agit d’un chemin absolu puisque l’adresse/chemin indiquée commence par une barre oblique /.

# 6. Usages basiques d’un terminal

# 6.6. Lister les fichiers

ls

ou

ls -a

pour voir aussi les fichiers cachés (dont le nom débute par un .).

Pourquoi vouloir voir les fichiers cachés ? Ce sera utile pour la suite.

# 6. Usages basiques d’un terminal

# 6.7. Naviguer

Pour changer de dossier, utiliser la commande cd, suivi du chemin. Exemple :

cd Document/Photos

mène au dossier Photos dans le dossier Documents.

Il est possible d’indiquer à la fois un chemin relatif, donc sans commencer par une barre oblique, ou en commençant par une barre oblique pour un chemin absolu.

# 6. Usages basiques d’un terminal

# 6.8. Les bons réflexes

# 6. Usages basiques d’un terminal

# Redimensionner des images en masse

Nous avons plusieurs dizaines de photographies en très haute résolution. Du fait de leur résolution élevée (plusieurs mégapixels), la taille de fichier est également très élvée.

Pour ne pas alourdir le document numérique dans lequel nous souhaitons les incorporer (comme un diaporama ou un document PDF), il faudrait les redimensionner (par exemple, passer de 6000px sur le long côté à au plus 600px).

Comment faire?

# Une première solution

Il serait possible d’importer chaque image dans un logiciel de traitement d’image (avec une interface graphique) et de renommer le fichier ainsi transformé.

Toutefois, pour une masse de plusieurs dizaines images, cela s’avérerait fastidieux et chronophage.

Cette tâche triviale pourrait être facilement automatisée grâce à une seule (!) instruction en ligne de commande.

# Une autre solution, en ligne de commande

Avec le logiciel ImageMagick (attention, il s’agit d’un logiciel sans interface graphique !), on pourrait utiliser l’utilitaire convert qu’il propose :

#!/bin/bash

convert Photo1.jpg Photo1.redim.jpg -resize 600

Résultat : on obtiendrait ainsi un fichier Photo1.redim.jpg qui ferait 600 px sur le plus long côté, sans écraser l’image originale.

Examinons la commnade !

Décortiquons la commande :

Là encore, on pourrait procéder une image à la fois… Ce qui n’est guère plus viable dès lors qu’on a plusieurs fichiers à redimensionner. Ne pourrait-on pas gagner du temps ?

# Généraliser la ligne de commande

Grâce aux connaissances acquises dans la section précédente, nous pourrons, au saupoudrant un petit peu de bash, généraliser notre commande.

Considérant un dossier dans lequel il y a plusieurs images dont l’extension est .jpg :

# Dans un répertoire ~/projet/avec/images

Photo1.jpg
Photo2.jpg
Photo3.jpg
Photo_x.jpg
# et ainsi de suite...

…on pourrait recourir à une boucle (pour chaque image .jpg, effectuer le redimensionnement avec le suffixe .jpg) :

#!/bin/bash

for i in *.jpg; do
  convert $i.jpg $i.redim.jpg -resize 600
done

Résultat : chaque image a été redimensionnée sans écraser l’originale !

# 6. Usages basiques d’un terminal

# 6.9. Gérer des fichiers ou des dossiers

# 6. Usages basiques d’un terminal

# 6.10. Déplacer un fichier

La commande mv permet de renommer ou de déplacer un fichier (dans le terminal, c’est la même chose!). Deux exemples :

# Pour renommer le fichier "mon-fichier.md" => "fichier.md"

mv mon-fichier.md fichier.md
# Pour déplacer le fichier "mon-fichier.md" dans le dossier "Documents/"
# Attention! On suppose que ce dossier existe déjà

mv /home/utilisateur/mon-fichier.md /home/utilisateur/Documents/mon-fichier.md

# 6. Usages basiques d’un terminal

# 6.11. Supprimer un fichier

# Pour supprimer uniquement un fichier
rm mon-fichier.md

# L'option -R permet de supprimer les sous-répertoires, récursivement.
# (Par défaut, la commande `rm` refusera de supprimer les sous-répertoires,
# au cas où on aurait oublié qu'il y en avait d'autres dans ce dossier.)
rm -R mon-dossier

# 6. Usages basiques d’un terminal

# 6.12. Afficher le contenu d’un fichier

cat mon-fichier.md

Avec les logiciels nano ou vim :

# avec nano
nano mon-fichier.md

# avec vim
vim mon-fichier.md

# 6. Usages basiques d’un terminal

# 6.13. Exercice

  1. créez un dossier livre contenant un sous-dossier chapitre01, contenant lui-même un fichier texte.txt
  2. naviguez dans le dossier chapitre01
  3. revenez dans le dossier livre
  4. déplacez le fichier texte.txt dans le dossier livre
  5. renommez le fichier texte.txt dans le dossier livre
  6. supprimez le dossier chapitre01

# 6. Usages basiques d’un terminal

# 6.14. Pour en savoir plus sur une commande de terminal

man nom-commande