# Programmation/Historique

* Historique
* Abstraction

## Concepts de base

* Commentaires
* Instructions
* Variables
* Types
* Expressions
* Comparaisons
* Instructions de contrôle
* Entrées-sorties

## Concepts spécifiques

* Manipulation de chaînes
* Procédures et fonctions
* Gestion de mémoire
* Gestion des exceptions
* Paradigmes de programmation
* Programmation séquentielle
* Programmation concurrente
* Programmation impérative
* Programmation orientée objet
* Programmation générique
* Programmation orientée aspect
* Programmation fonctionnelle
* Programmation logique
* Programmation par contrat

## Logiciels

* Eclipse
* NetBeans
* PhpStorm
* PyCharm
* SciTE
* Visual Studio Code

## Annexes

* Structure et style
* Règles de programmation
* Langages
* Historique
* Abstraction

## Concepts de base

* Commentaires
* Instructions
* Variables
* Types
* Expressions
* Comparaisons
* Instructions de contrôle
* Entrées-sorties

## Concepts spécifiques

* Manipulation de chaînes
* Procédures et fonctions
* Gestion de mémoire
* Gestion des exceptions
* Paradigmes de programmation
* Programmation séquentielle
* Programmation concurrente
* Programmation impérative
* Programmation orientée objet
* Programmation générique
* Programmation orientée aspect
* Programmation fonctionnelle
* Programmation logique
* Programmation par contrat

## Logiciels

* Eclipse
* NetBeans
* PhpStorm
* PyCharm
* SciTE
* Visual Studio Code

## Annexes

* Structure et style
* Règles de programmation
* Langages
[ Modifier le sommaire ]

## Fondements technologiques

En 1946, lorsque fut créé le premier calculateur électronique, l'ENIAC, on ne pouvait guère parler d'ordinateur : la logique du système était directement câblée dans les composants, et la machine n'était donc pas programmable.
Il fallut attendre 1948 et le Mark I pour voir apparaître le premier ordinateur au sens où l'entendait Von Neumann : un calculateur doté d'une logique programmable, ce qui veut dire une machine capable d'exécuter différents programmes sans intervention sur le matériel. Ce n'est toutefois qu'en 1971 que l'invention du processeur permettra la programmation d'applications complexes.
Les principes logiques et mathématiques nécessaires à la programmation étaient déjà établis depuis longtemps : le binaire fut inventé par les Chinois il y a plusieurs millénaires, et fut introduit en Europe en 1697 par Leibniz, le principe du calcul par itération successive fut inventé par Ada Lovelace en 1843 (elle avait déjà eu l'idée d'une machine capable de calculer en 1840) et l'algèbre binaire fut inventée par Boole en 1854.
La programmation par câblage se faisait en reliant les différentes parties d'un calculateur permettant le transfert de signaux entre elles.
* Programmation par câblage
* Programmation par câblage d'un calculateur analogique, modèle ELWAT créé dans les années 1960 en Pologne.
* Carte de câblage d'un IBM 402, côté câbles.

## Évolution

L'arrivée de la logique programmable provoqua une cascade d'inventions : l'assembleur (c'est à dire l'utilisation de mnémoniques à la place des séquences de chiffres du langage machine) fut inventé en 1948, le premier langage évoluée, l'A0, en 1951, suivi du Fortran (1956), du Cobol (1959), du Lisp (1959) et de l'Algol (1960).
Le Basic est créé en 1965 et le Pascal en 1968. Le C et Prolog voient le jour en 1972 et Smalltalk, le premier langage objet, la même année.
La programmation orientée objet prendra son essor avec C++, créé en 1983. En 1986 est créé Perl. Python est créé en 1991 et 1995 verra l'apparition de Java, qui prétend être portable au niveau de l’exécutable, et de PHP. 2000 voit l'apparition du premier langage créé par Microsoft, C#.
Les langages de description, pas assez complets pour être considérés comme des langages de programmation, apparaissent vers 1969, avec le GML puis le SGML. Le HTML est créé en 1990. En 1996 est introduit XML. Ces deux derniers langages sont dérivés du SGML : leur syntaxe reprend différentes parties de celle du SGML.
Les travaux actuels semblent montrer que la tendance vers plus d'abstraction se poursuit, avec la programmation orientée aspect, par exemple.