Histoire de la programmation
Histoire, évolution et concepts clés des langages de programmation
1. L’ère du langage machine et de l’assembleur
1.1 Le langage machine
Les premiers ordinateurs étaient programmés directement en langage machine, c’est-à-dire en code binaire. Cette méthode présentait plusieurs caractéristiques :
- Complexité extrême : Les programmeurs devaient écrire des séquences de 0 et de 1 pour chaque instruction.
- Spécificité au matériel : Chaque type de processeur avait son propre jeu d’instructions en langage machine.
- Difficulté de maintenance : Le code était pratiquement illisible pour les humains, rendant les corrections et les mises à jour très difficiles.
Exemple simplifié d’addition en langage machine (fictif) :
10110000 01100011 00000001 // Charger la valeur du registre 1 dans l'accumulateur
10110001 01100011 00000010 // Ajouter la valeur du registre 2 à l'accumulateur
10110010 01100011 00000011 // Stocker le résultat dans le registre 3
1.2 L’avènement de l’assembleur
Pour faciliter la programmation, le langage assembleur a été développé. Il présentait plusieurs avantages :
- Lisibilité améliorée : Utilisation de mnémoniques (ADD, MOV, JMP) au lieu de codes binaires.
- Correspondance directe : Chaque instruction assembleur correspondait généralement à une instruction en langage machine.
- Introduction des étiquettes : Permettait de nommer des points dans le programme, facilitant les sauts et les boucles.
Exemple du même calcul en assembleur (syntaxe simplifiée) :
LOAD R1 ; Charger la valeur du registre 1 dans l'accumulateur
ADD R2 ; Ajouter la valeur du registre 2 à l'accumulateur
STORE R3 ; Stocker le résultat dans le registre 3
2. L’émergence des langages de haut niveau
2.1 FORTRAN (FORmula TRANslation)
Développé par IBM en 1957, FORTRAN a révolutionné la programmation :
- Premier langage de haut niveau largement adopté
- Conçu pour les calculs scientifiques et l’ingénierie
- Introduction de concepts comme les boucles et les fonctions
Exemple de calcul d’intérêt composé en FORTRAN :
PROGRAM INTERET_COMPOSE
REAL PRINCIPAL, TAUX, MONTANT
INTEGER ANNEES, I
PRINT *, 'Entrez le principal, le taux (en decimal) et les annees:'
READ *, PRINCIPAL, TAUX, ANNEES
= PRINCIPAL
MONTANT DO I = 1, ANNEES
= MONTANT * (1 + TAUX)
MONTANT END DO
PRINT *, 'Montant final:', MONTANT
END PROGRAM INTERET_COMPOSE
2.2 COBOL (COmmon Business-Oriented Language)
Créé en 1959, COBOL visait les applications commerciales :
- Syntaxe proche de l’anglais pour faciliter la compréhension
- Gestion efficace des fichiers et des données structurées
- Largement utilisé dans les systèmes bancaires et financiers
Exemple simplifié de calcul de salaire en COBOL :
IDENTIFICATION DIVISION.
PROGRAM-ID. CALCUL-SALAIRE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYE-FICHIER ASSIGN TO "employes.dat"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD EMPLOYE-FICHIER.
01 EMPLOYE-ENREG.
05 EMP-NOM PIC X(20).
05 EMP-HEURES PIC 9(3).
05 EMP-TAUX PIC 9(3)V99.
WORKING-STORAGE SECTION.
01 WS-SALAIRE PIC 9(5)V99.
01 WS-EOF PIC A(1).
PROCEDURE DIVISION.
MAIN-PROCEDURE.
OPEN INPUT EMPLOYE-FICHIER
PERFORM UNTIL WS-EOF = 'Y'
READ EMPLOYE-FICHIER
AT END
MOVE 'Y' TO WS-EOF
NOT AT END
PERFORM CALCUL-AFFICHAGE
END-READ
END-PERFORM
CLOSE EMPLOYE-FICHIER
STOP RUN.
CALCUL-AFFICHAGE.
COMPUTE WS-SALAIRE = EMP-HEURES * EMP-TAUX
DISPLAY EMP-NOM " Salaire: $" WS-SALAIRE.
3. Caractéristiques de la programmation procédurale
La programmation procédurale, illustrée par ces langages, se caractérise par :
- Séquence d’instructions : Le programme est une suite d’étapes à exécuter.
- Procédures et fonctions : Le code est organisé en blocs réutilisables.
- Variables globales et locales : Gestion de l’état du programme.
- Flux de contrôle linéaire : Utilisation de structures comme les boucles et les conditions.
Avantages :
- Simplicité relative par rapport au langage machine
- Possibilité de créer des programmes complexes
- Facilité d’apprentissage pour les débutants
Limites :
- Difficulté à gérer des projets très larges
- Risque élevé d’effets de bord avec les variables globales
- Manque de représentation naturelle pour certains problèmes du monde réel
Cette approche a dominé la programmation pendant plusieurs décennies, posant les bases pour l’évolution future vers des paradigmes plus avancés, notamment la programmation orientée objet.