2. Histoire de la programmation : des machines aux algorithmes modernes¶
Objectif : Montrer comment la programmation est née de besoins pratiques et scientifiques, et comment elle a évolué jusqu’à aujourd’hui.
1. Les précurseurs mécaniques (avant le XXe siècle)¶
Idée clé : L’automatisation des tâches répétitives a inspiré les premières “machines programmables”.
1.1 La machine à tisser de Jacquard (1801)¶
- Inventeur : Joseph Marie Jacquard (France).
- Fonctionnement :
- Utilisait des cartes perforées pour contrôler les motifs des tissus.
- Chaque carte représentait une instruction (un motif à reproduire).
- Impact :
- Première machine à utiliser un “programme” externe pour automatiser une tâche complexe.
- Inspiration directe pour les premiers ordinateurs (ex. : cartes perforées d’IBM au XXe siècle).
1.2 La machine analytique de Babbage (1837)¶
- Inventeur : Charles Babbage (Royaume-Uni).
- Fonctionnement :
- Machine mécanique conçue pour effectuer des calculs automatiques.
- Utilisait des cartes perforées pour entrer les données et les instructions.
- Ada Lovelace (mathématicienne) a écrit le premier algorithme pour cette machine (considéré comme le premier programme informatique).
- Impact :
- Concept de mémoire, unité de calcul et programme stocké — bases de l’architecture des ordinateurs modernes.
2. Les débuts de l’informatique (XXe siècle)¶
Idée clé : L’électronique remplace la mécanique, et les premiers langages de programmation apparaissent.
2.1 Les premiers ordinateurs électroniques (années 1940)¶
- ENIAC (1945) :
- Premier ordinateur entièrement électronique, conçu pour calculer des trajectoires d’obus.
- Programmable en reconfigurant physiquement ses câbles (pas de langage de programmation).
- Von Neumann et l’architecture moderne (1945) :
- John von Neumann propose de stocker données et programmes dans la même mémoire.
- Base de l’architecture des ordinateurs actuels.
2.2 Les premiers langages de programmation (années 1950)¶
- Assembleur (années 1950) :
- Langage bas niveau, proche du code machine (ex. :
MOV,ADD). - Difficile à lire et à écrire, mais plus efficace que la programmation manuelle.
- Langage bas niveau, proche du code machine (ex. :
- FORTRAN (1957) :
- Premier langage haut niveau, conçu pour les calculs scientifiques.
- Permettait d’écrire des équations mathématiques de manière intuitive.
- COBOL (1959) :
- Langage orienté gestion et affaires, toujours utilisé dans les banques.
3. L’essor des langages modernes (années 1960–1980)¶
Idée clé : Les langages deviennent plus accessibles et spécialisés.
3.1 Langages structurés et portabilité¶
- C (1972) :
- Développé pour écrire le système d’exploitation Unix.
- Langage rapide et proche de la machine, mais plus lisible que l’assembleur.
- Pascal (1970) :
- Conçu pour l’enseignement de la programmation structurée.
3.2 Programmation orientée objet (années 1980)¶
- Smalltalk (1980) et C++ (1985) :
- Introduction du concept d’objets (regroupement de données et de fonctions).
- Permet une meilleure modularité et réutilisation du code.
4. L’ère d’Internet et des langages accessibles (années 1990–2020)¶
Idée clé : La programmation devient un outil pour le grand public et le web.
4.1 Langages pour le web¶
- JavaScript (1995) :
- Langage de script pour rendre les pages web interactives.
- PHP (1994) et Python (1991) :
- Python devient populaire pour sa simplicité et sa polyvalence (sciences, IA, web).
4.2 Open source et communautés¶
- Linux (1991) et GitHub (2008) :
- Le code devient collaboratif et accessible à tous.
- Naissance de bibliothèques open source (ex. : NumPy, TensorFlow).
5. Aujourd’hui et demain (2020–)¶
Idée clé : L’IA, le big data et la démocratisation de la programmation.
5.1 Intelligence artificielle et apprentissage machine¶
- Python domine grâce à des bibliothèques comme TensorFlow et PyTorch.
- Les algorithmes d’IA (ex. : réseaux de neurones) transforment la science, la médecine et l’ingénierie.
5.2 Programmation visuelle et low-code¶
- Outils comme Scratch (pour les enfants) ou Jupyter Notebooks (pour les scientifiques) rendent la programmation plus accessible.
6. Résumé chronologique¶
Chronologie de la programmation
| Période | Événement marquant | Impact |
|---|---|---|
| 1801 | Machine à tisser de Jacquard | Premier “programme” mécanique avec cartes perforées. |
| 1837 | Machine analytique de Babbage | Concept de programme stocké et mémoire. |
| 1945 | ENIAC | Premier ordinateur électronique. |
| 1957 | FORTRAN | Premier langage haut niveau pour la science. |
| 1972 | Langage C | Base des systèmes d’exploitation modernes. |
| 1991 | Python | Langage simple et polyvalent, idéal pour l’enseignement et la science. |
| 2020s | IA et big data | Python et les bibliothèques open source dominent. |
7. Pour aller plus loin¶
- Livres :
- The Innovators (Walter Isaacson) — Histoire de l’informatique et de ses pionniers.
- Code: The Hidden Language of Computer Hardware and Software (Charles Petzold).
- Documentaires :
- The Imitation Game (film sur Alan Turing).
- Lo and Behold: Reveries of the Connected World (Werner Herzog).
8. Tableau récapitulatif : Évolution des langages de programmation¶
Objectif : Comparer les langages par époque, usage, niveau d’abstraction et impact.
Comparaison des langages de programmation par époque
| Époque | Langage | Année | Niveau | Usage principal | Caractéristiques clés | Exemple de code |
|---|---|---|---|---|---|---|
| Précurseurs | Cartes perforées | 1801 | Mécanique | Automatisation des métiers à tisser | Premier “programme” physique, pas de syntaxe. | ![]() |
| Années 1940 | Assembleur | 1949 | Bas niveau | Programmation des premiers ordinateurs | Instructions mnémoniques (ex. : MOV, ADD), dépendant du processeur. |
MOV AX, 1 |
| Années 1950 | FORTRAN | 1957 | Haut niveau | Calculs scientifiques et ingénierie | Premier langage “moderne”, syntaxe mathématique. | DO 10 I=1,10 |
| COBOL | 1959 | Haut niveau | Gestion et affaires | Langage verbeux, conçu pour les entreprises. | ADD A TO B GIVING C |
|
| Années 1970 | C | 1972 | Niveau intermédiaire | Systèmes d’exploitation et logiciels | Rapide, portable, accès bas niveau à la mémoire. | printf("Hello, World!"); |
| Pascal | 1970 | Haut niveau | Enseignement de la programmation | Structuré, typage strict, conçu pour la clarté. | writeln('Bonjour'); |
|
| Années 1980 | C++ | 1985 | Niveau intermédiaire | Programmation orientée objet | Ajoute les classes et objets au langage C. | cout << "Hello, World!" << endl; |
| Années 1990 | Python | 1991 | Haut niveau | Polyvalence (science, web, IA) | Syntaxe simple, lisible, bibliothèques riches. | print("Hello, World!") |
| JavaScript | 1995 | Haut niveau | Développement web (interactivité) | Exécuté dans les navigateurs, dynamique. | console.log("Hello, World!"); |
|
| Années 2000 | Java (suite) | 2000s | Haut niveau | Applications mobiles et entreprises | “Write once, run anywhere”, orienté objet. | System.out.println("Hello, World!"); |
| Années 2020 | Python (dominance) | 2020s | Haut niveau | IA, data science, automatisation | Bibliothèques puissantes (NumPy, TensorFlow), communauté open source. | import numpy as np |
Utilisation de l’IA
Page rédigée en partie avec l’aide d’un assistant IA. L’IA a été utilisée pour générer des explications, des exemples et/ou des suggestions de structure. Toutes les informations ont été vérifiées, éditées et complétées par l’auteur.
