# Programmation/Langages de programmation

* 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 ]
On distingue six générations de langages de programmation. Les langages des générations 1 et 2 sont appelés langages de bas niveau (orienté machine) alors que les langages des générations 3 à 6 sont appelés langages de haut niveau (orienté problème). Les langages de haut niveau sont indépendants du processeur ce qui n’est pas le cas des langages de bas niveau.

## Bas niveau
### Génération 1

* Langage machine dépendant du processeur
* Suite d’instructions binaires directement introduites (programmation directe) dans la mémoire du processeur
* Les instructions du processeur sont appelées code opérationnel
Code opérationnel- Intel pentium- Motorola 6800
Exemple pour un processeur 8086 :
La programmation de la machine par un humain à ce niveau nécessite d'avoir le manuel du processeur. Les erreurs de frappe arrivent facilement.

### Génération 2

* Même jeu d’instructions que le langage machine, mais sous forme symbolique (mnémoniques) plus compréhensible pour l’homme
* Les instructions sont converties (programmation indirecte) en langage machine par un programme (assembleur)
Exemple pour un processeur 8086 :
Les langages assembleurs plus évolués permettent d'utiliser des commentaires et possèdent des fonctionnalités facilitant la vie du développeur, lui évitant des calculs manuels et des erreurs potentielles. Par exemple, il est possible de définir un symbole/nom/label représentant l'adresse où se trouve la déclaration puis l'utiliser directement comme opérande (adresse de saut ou adresse de l'emplacement d'une donnée) dans les instructions à la place d'une adresse calculée manuellement.

## Haut niveau
### Génération 3

* Langages indépendants du processeur
* Proches des langues parlées (anglais)
* Langages procéduraux, descriptions des opérations à effectuer pour résoudre un problème.
Les premiers langages de programmation étaient écrits sur des cartes perforées. Celles-ci ne permettaient pas de coder les lettres en minuscules, ce qui explique que les mots-clés des premiers langages de programmation soient en capitales (Fortran, COBOL, Basic, Pascal).
Langages : C, Pascal, Fortran (Formula Translation), Cobol (Common Business Oriented Language), Basic, Wlangage

### Génération 4

* Langages descriptifs
* Description de ce que l’on désire faire mais pas de la manière de le faire
* Très fortement lié à un domaine (base de données, tables de calcul)
Langages : Uniface, Informix, Oracle, Lotus

### Génération 5

* Langages descriptifs pour la programmation de systèmes experts
Langages : Prolog

### Génération 6

* Orienté objet
* Toutes les informations nécessaires à la résolution d’un problème sont réunies dans un objet
Langages : Ada, C++, C#, Delphi, Eiffel, Java, Object Pascal, PHP, Python, Smalltalk