SCIENCES NUMERIQUES ET TECHNOLOGIE
BASES

Introduction

Platon venant de définir l'Homme comme un bipède sans plumes, Diogène de Sinope se présenta à son Académie, brandit un coq plumé en clamant sur un ton ironique : Voici l'Homme selon Platon!. Cette anecdote illustre la difficulté de construire une définition.

Avec quelques milliers de mots, nous décrivons un monde infini. Quelques milliers comptent peu face à l'infini. Un même mot désigne plusieurs choses, plusieurs mots désignent la même chose. De nouveaux mots apparaissent, d'autres tombent en désuétude. Les abus de langage et autres sous-entendus détériorent cette situation. En somme, élaborer une définition précise, consensuelle bien que synthétique, s'avère compliqué.

Définitions

Science

Outil pour comprendre le monde, reposant sur l'observation et l'expérimentation.

Numérique

Ce mot revêt plusieurs sens. Il signifie banalement relatif aux nombres. Ici, il concerne les algorithmes et les données numérisés, convertis en suites de 0 ou de 1 pour un traitement informatique.

Technologie

Etude des outils et des savoir-faire pour produire des choses utiles.

Informatique

Le terme informatique se construit avec les mots information et automatique. Il signifie traitement automatique de l'information par ordinateur... sauf que :

Ainsi, le mot informatique signifie plus précisément traitement séquentiel des données numériques par ordinateur. L'informatique repose sur 4 piliers :

Algorithme

Description rigoureuse d'une procédure par une suite finie d'étapes successives, pour traiter des données et obtenir des résultats.

L'algorigramme (ou logigramme ou encore organigramme de programmation), dont la figure ci-dessous en montre un exemple, s'emploie parfois pour présenter graphiquement un algorithme.

Donnée

Elément d'information qu'un algorithme traite pour produire des résultats. Concrètement, les données peuvent prendre diverses formes, telles que des nombres, des mots, des tableaux de nombres, des textes, des images....

Langage

Moyen de communication entre un humain et un ordinateur. Il traduit les algorithmes ou structure les données en un code numérisable, compatible avec l'ordinateur. On distingue :

Un langage de programmation bas-niveau permet un contrôle plus direct sur le matériel, alors qu'un langage haut-niveau est plus facilement abordable pour un humain.

Ordinateur

Machine qui effectue des calculs sur des données numériques en suivant les instructions d'un programme. L'ordinateur se décompose en 3 parties :

Calculateur

Machine qui effectue des calculs (plusieurs opérations arithmétiques ou logiques) sur des données numériques.

Calculatrice (ou machine à calculer)

Type de calculateur effectuant des opérations arithmétiques.

Automate

Automate peut désigner :

Un automate reproduit en autonomie, sans intervention humaine directe, une séquence d'actions prédéterminée. En principe, un système motorisé (l'énergie de puissance, en fonctionnement, n'est pas fournie par un humain) est dit :

Les automates ont évolué en trois grandes familles :

Mémoire

Lieu de conservation des fichiers. Un fichier est une suite de 0 ou de 1. Ces chiffres se regroupent habituellement par 8 pour former des octets (symbole : o). La taille d'une mémoire, d'un fichier, s'exprime en o ou un de ses multiples : ko, Mo ou Go. On distingue :

Par ailleurs, les octets placés dans un fichier peuvent correspondre à des caractères, encodés en UTF-8 ou ASCII par exemple. On distingue ainsi :

Fichier exécutable ou programme

Fichier contenant une suite d'instructions exécutables par un ordinateur.

Trois paradigmes très classiques en programmation :

Fichier de données

Fichier contenant des données traitées par des programmes.

Logiciel

Système de programmes, ainsi que tous les fichiers de données nécessaires à le rendre opérationnel. Exemples :

Tableaux de synthèse

Les machines :

Une seule
instruction
Suite
d'instructions
Données
logiques
Porte logiqueAutomate
Données
numériques
CalculateurOrdinateur

Les fichiers :

TexteBinaire
ExécutableProgramme interprétéProgramme compilé
De donnéesS'ouvre avec un éditeur de texteRequiert un logiciel spécifique

Repères historiques

DateEvènement
IXe siècle Le nom du mathématicien persan Muhammad ben Mūsā Al-Khwârizmî est à l'origine du mot algorithme.
1955 IBM France introduit le mot ordinateur pour traduire l'anglais computer.
1957 L'ingénieur allemand Karl Steinbuch crée le terme Informatik pour son essai intitulé Informatik Automatische Informationsverarbeitung, traduit en français par informatique.
1969 La Délégation à l’informatique chargée du Plan Calcul adopte le mot logiciel pour traduire l'anglais software.

Traitement des données numériques

Il s'agit ici de présenter quelques machines, calculateurs ou ordinateurs, importantes dans le cadre historique. Quelle date retenir? Plusieurs années s'écoulent entre l'idée, la conception, la mise au point, le dépôt de brevet, la création de société, la commercialisation. Affirmer que telle machine est la première au monde à obtenir tel résultat se révèle délicat: :

Solutions mécaniques

Machine d’Anticythère

C'est un dispositif mécanique grec de l'antiquité, utilisé pour calculer et afficher des informations sur les phénomènes astronomiques. C'est le premier calculateur à engrenages de l'Histoire.

Pascaline

C'est une calculatrice mécanique, inventée par Blaise Pascal en 1645. Ayant effectivement été utilisée en pratique et commercialisée, elle est souvent considérée comme la première calculatrice de l'Histoire.

Arithmomètre d'Odhner

C'est une machine à calculer à addition et soustraction directes et qui permet aussi de multiplier et de diviser. Inventée en Russie en 1873 par Willgodt Theophil Odhner, un immigrant suédois, elle deviendra extrêmement populaire au XXe siècle.

Machine Analytique de Charles Babbage

C'est une machine mécanique dont l'architecture ressemble à celle d'un ordinateur moderne. Elle n'a jamais été construite dans son intégralité. Sa collaboratrice, Ada Lovelace, est souvent considérée comme la première informaticienne de l'Histoire. Plan 28 est un projet de construction de cette machine.

Bombe de Turing

C'est une sorte d'ordinateur mécanique capable de casser les codes allemands d'Enigma, pendant la Seconde Guerre mondiale. Elle est une amélioration de la Bombe cryptologique du polonais Marian Rejewski, travaillant au Biuro Szyfrów. Alan Mathison Turing est souvent considéré comme le père de l'informatique.

Composants électroniques de base

Les ordinateurs et calculateurs ont été construits à partir de quatre composants de base.

Relais électromécanique

Il était très utilisé autrefois pour construire les systèmes automatisés. On dit qu'il est électromécanique plutôt qu'électronique du fait de sa partie mobile. Le premier relais réellement pratique a vu le jour en 1837, grâce à l'inventeur américain Samuel F.B. Morse (celui qui a inventé l'alphabet de même nom).

Tube à vide ou tube électronique

C'est un autre composant équivalent au relais, inventé en 1906 par l'américain Lee De Forest, très utilisé dans les années 1950-1970. Les tubes électroniques fonctionnant aussi en analogique, ils ont été très utilisés pour construire les postes de radio. Ils sont basés sur l'effet thermo-ionique.

Transistor

Qui a inventé le transistor, dont on dit qu'il a engendré la quatrième révolution industrielle, après celles du charbon, de l'électricité et du nucléaire?

Il a été mis en œuvre en 1947 par les Américains John Bardeen, William Shockley et Walter Brattain, chercheurs des Laboratoires Bell. Ces chercheurs ont reçu pour cette invention le prix Nobel de physique en 1956.

Sauf que... Quelques années plus tôt, en 1925, le physicien austro-hongrois Julius Edgar Lilienfeld déposa un brevet, au Canada, sur le concept théorique d’un « transistor à effet de champ ».

Le TA166 fut un des premier transistor commercialisé en 1952.

Microprocesseur

C'est un circuit intégré, aussi appelé puce électronique. L'Intel 4004 est le premier microprocesseur commercialisé en 1971. Fonctionnant en 4 bits, (32 caractères) à une fréquence 740 kHz, il comporte 2300 transistors.

Solutions électroniques

Zuse 3

Le relais a été utilisé pour fabriquer le premier ordinateur au monde, en 1941. Le Z3 (Zuse 3) était un calculateur à relais électromécaniques conçu par l'ingénieur allemand Konrad Zuse. Ce calculateur était la première machine programmable pleinement automatique ce qui en fait le premier ordinateur du monde. Il était composé de 2000 relais électromécaniques, fonctionnait à une fréquence d'horloge de 5 à 10 Hz et exploitait des mots d'une longueur de 22 bits. Le code et les données étaient stockés sur des rubans perforés en celluloïd.

ABC

L'ABC (Atanasoff–Berry Computer) fut reconnu, après un procès, comme le premier ordinateur numérique électronique (ce que prétendait être l'ENIAC). Il fonctionnait avec des tubes à vide et a été testé avec succès en 1942. Il a été conçu par les américains John Vincent Atanasoff et Clifford Berry.

TRADIC

En 1955, le TRADIC (TRAnsistor DIgital Computer or TRansistorized Airborne DIgital Computer) des laboratoires Bell a été le premier ordinateur à transistors des États-Unis. Il comportait 700 transistors et 10 000 diodes.

Micral N

En 1972, la société française Réalisations et études électroniques fondée et dirigée par André TRUONG, commercialise le premier micro-ordinateur vendu assemblé, le Micral N à microprocesseur 8 bits Intel 8008.

Les microprocesseurs

Architecture de von Neumann

De nos jours, la plupart des ordinateurs suivent l’architecture de von Neumann. Elle décompose l’ordinateur en 4 parties :

Principaux types de microprocesseurs

Deux grandes familles de microprocesseurs :

Principaux types de CPU :

TypeARMx86, x64
Utilisation
Fabriquants Qualcomm
Samsung
Freescale
Nvida
...
Intel Corporation
AMD (Advanced Micro Devices)

Evolution des microprocesseurs

Selon la loi de Gordon Moore, énoncée en 1975 : Le nombre de transistors des microprocesseurs sur une puce de silicium double tous les deux ans.

Notations binaire, décimale, hexadécimale

Systèmes de numération

Binaire 011011 100101110111 1000100110101011 1100110111101111
Décimal 01234567 89101112131415
Hexadécimal 01234567 89ABCDEF

On dit de manière rigoureuse :

On dit plus simplement, par abus de langage :

Attention à la confusion, un nombre décimal peut désigner :

Notations d'un octet

Les octets des fichiers s'écrivent ordinairement en notations binaire, décimale ou hexadécimale.

NotationCaractéristique Valeurs d'un octet
MinimaleMaximale
BinaireProche de l'ordinateur011111111
DécimaleFamilière pour un humain0255
HexadécimaleCourte à écrire0FF

Conversions en Python

Exemple de programme :

nb_dec=123
nb_hex=0x7b
nb_bin=0b1111011
print(nb_dec, nb_hex, nb_bin)
print(type(nb_dec), type(nb_hex), type(nb_bin))
print()

ch1=hex(nb_dec)
ch2=bin(nb_dec)
ch3=ch1[2:]
ch4=ch2[2:]
print(ch1, ch2, ch3, ch4)
print(type(ch1), type(ch2), type(ch3), type(ch4))
print()

nb1=int(ch1,16)
nb2=int(ch2,2)
nb3=int(ch3,16)
nb4=int(ch4,2)
print(nb1, nb2, nb3, nb4)
print(type(nb1), type(nb2), type(nb3), type(nb4))

Résultat obtenu :

123 123 123
<class 'int'> <class 'int'> <class 'int'>

0x7b 0b1111011 7b 1111011
<class 'str'> <class 'str'> <class 'str'> <class 'str'>

123 123 123 123
<class 'int'> <class 'int'> <class 'int'> <class 'int'>

Encodage des caractères

Divers encodages

Les octets des fichiers représentent souvent des caractères. La transcription des caractères, compréhensibles par l'utilisateur, en octets, traités par l'ordinateur, se nomme codage ou encodage.

Exemple d'extrait du code ASCII :

Caractèrea+0
Code binaire110000101010110110000

Il existe de nombreux codes différents. De nos jours, l'UTF-8 tend à se généraliser. Il est compatible avec le code ASCII, très ancien et toujours utilisé.

Code Signification Taille Organisme normalisateur Création Caractéristique
Baudot Développé par Émile Baudot 5 bits - 1874 Code télégraphique
ASCII American Standard Code for Information Interchange 7 bits ASA renommé ANSI 1960 Existe des versions étendues à 1 octet
Base64 Basé sur 64 caractères différents 6 bits IETF 1987 Convertit des données binaires en un texte
Unicode - 21 bits Unicode Consortium 1991 Compatible avec l'ASCII
UTF-8 Unicode Transformation Format, version 8 1 à 4 octets ISO 1996 Compatible avec l'Unicode

Encodage en Python

Soit la chaîne de trois caractères "eé\n" à coder en UTF-8 :

CaractèreImprimableCodé sur
eOuiUn octet
éOuiDeux octets
\n (saut de ligne)NonUn octet

Exemple d'encodage en UTF-8 :

txt="eé\n"
txt_encode=txt.encode()
print(len(txt), type(txt), len(txt_encode), type(txt_encode))
print()
for i in txt_encode :
  print(i, bin(i)[2:], hex(i)[2:], type(i))

Résultat obtenu :

3 <class 'str'> 4 <class 'bytes'>

101 1100101 65 <class 'int'>
195 11000011 c3 <class 'int'>
169 10101001 a9 <class 'int'>
10 1010 a <class 'int'>

Quelques noms de caractères

Les noms que devraient porter les caractères... est un sujet polémique.

CaractèreNom
FrançaisAnglais
*Etoile (astérisque)Asterisk
#Dièse (croisillon)Sharp ou hash
/Barre obliqueSlash
\Barre oblique inverséeBackslash (antislash)
&EsperluetteAmpersand
<Chevron ouvrant (inférieur à)Less than
>Chevron fermant (supérieur à)Greater than

Quelques unités

Préfixes décimaux, binaires

En informatique, pour des raisons techniques, les préfixes binaires s'emploient en complément des préfixes décimaux.

Préfixes décimauxPréfixes binaires
Nom Symbole Valeur Nom Symbole Valeur
Kilok103KibiKi210
MégaM106MébiMi220
GigaG109GibiGi230
TéraT1012TébiTi240
PétaP1015PébiPi250
ExaE1018ExbiEi260
ZettaZ1021ZébiZi270

Taille d'un fichier

En informatique, les bits se regroupent communément par séries de 8. Ainsi, la taille d'un fichier s'exprime :

Noms d'unités :

Symboles d'unités :

Préfixes pour les bits

Préfixes décimauxPréfixes binaires
SymbolesValeur (bit) SymbolesValeur (bit)
 kbit   kb 103  Kibit   Kib 210
 Mbit   Mb 106  Mibit   Mib 220
 Gbit   Gb 109  Gibit   Gib 230
 Tbit   Tb 1012  Tibit   Tib 240

Préfixes pour les octets

Préfixes décimauxPréfixes binaires
SymbolesValeur (o) SymbolesValeur (o)
 ko   kB 103  Kio   KiB 210
 Mo   MB 106  Mio   MiB 220
 Go   GB 109  Gio   GiB 230
 To   TB 1012  Tio   TiB 240

Débit binaire

Le débit binaire (bitrate en anglais) indique la quantité de données numériques transmises par unité de temps. Il s'exprime :

Préfixes pour les bits par seconde

Préfixes décimauxPréfixes binaires
SymbolesValeur (bit/s) SymbolesValeur (bit/s)
 kbit/s   kb/s   kbps 103  Kibit/s   Kib/s   Kibps 210
 Mbit/s   Mb/s   Mbps 106  Mibit/s   Mib/s   Mibps 220
 Gbit/s   Gb/s   Gbps 109  Gibit/s   Gib/s   Gibps 230
 Tbit/s   Tb/s   Tbps 1012  Tibit/s   Tib/s   Tibps 240

Préfixes pour les octets par seconde

Préfixes décimauxPréfixes binaires
SymbolesValeur (o/s) SymbolesValeur (o/s)
 ko/s   kB/s   kBps 103  Kio/s   KiB/s   KiBps 210
 Mo/s   MB/s   MBps 106  Mio/s   MiB/s   MiBps 220
 Go/s   GB/s   GBps 109  Gio/s   GiB/s   GiBps 230
 To/s   TB/s   TBps 1012  Tio/s   TiB/s   TiBps 240