Vous êtes sur la page 1sur 6

Programmation informatique

1
La programmation, appelée aussi codage dans le domaine informatique , est l'ensemble des activités qui permettent
l'écriture des programmes informatiques. C'est une étape importante du développement de logiciels (voire de matériel).

L'écriture d'un programme se fait dans un langage de programmation. Un logiciel est un ensemble de programmes (qui
peuvent être écrits dans des langages de programmation différents) dédié à la réalisation de certaines tâches par un (ou
plusieurs) utilisateurs du logiciel.

La programmation représente donc ici la rédaction du code source d'un logiciel. On utilise plutôt le terme
développement pour dénoter l'ensemble des activités liées à la création d'un logiciel et des programmes qui le
composent. Cela inclut la spécification du logiciel, sa conception, puis son implémentation proprement dite au sens de
l'écriture des programmes dans un langage de programmation bien défini, ainsi que la vérification de sa correction, etc.

Sommaire
Histoire
Exemple de programme Liste d'instructions sur le
Commodore 64
Phases
Conception
Programmation impérative
Implémentation
Transformation du code source
Compilation
Interprétation
Avantages, inconvénients
Appellation impropre
Test du programme
Pratiques
Paradigmes
Programmation impérative
Programmation procédurale
Programmation structurée
Programmation déclarative
Programmation fonctionnelle
Programmation logique
Programmation orientée objet
Programmation orientée prototype
Programmation orientée classe
Autres paradigmes
Notes et références
Voir aussi
Articles connexes
Liens externes

Histoire
La première machine programmable (c’est-à-dire machine dont les possibilités changent quand on modifie son programme) est probablement le métier à tisser de
Jacquard, qui a été réalisé en 1801. La machine utilisait une suite de cartons perforés. Les trous indiquaient le motif que le métier suivait pour réaliser un tissage ;
2
avec des cartes différentes le métier produisait des tissages différents . Cette innovation a été ensuite améliorée par Herman Hollerith d'IBM pour le
3
développement de la fameuse carte perforée d'IBM .
4
En 1936, la publication de l'article fondateur de la science informatique On Computable Numbers with an Application to the Entscheidungsproblem par Alan
Turing allait donner le coup d'envoi à la création de l'ordinateur programmable. Il y présente sa machine de Turing, le premier calculateur universel
programmable, et invente les concepts et les termes de programmation et de programme.

Les premiers programmes d'ordinateur étaient réalisés avec un fer à souder et un grand nombre de tubes à vide (plus tard, des transistors). Les programmes
devenant plus complexes, cela est devenu presque impossible, parce qu'une seule erreur rendait le programme entier inutilisable. Avec les progrès des supports
de données, il devint possible de charger le programme à partir de cartes perforées, contenant la liste des instructions en code binaire spécifique à un type
d'ordinateur particulier. La puissance des ordinateurs augmentant, on les utilisa pour faire les programmes, les programmeurs préférant naturellement rédiger du
texte plutôt que des suites de 0 et de 1, à charge pour l'ordinateur d'en faire la traduction lui-même.

Avec le temps, de nouveaux langages de programmation sont apparus, faisant de plus en plus abstraction du matériel sur lequel devraient tourner les
programmes. Ceci apporte plusieurs facteurs de gains : ces langages sont plus faciles à apprendre, un programmeur peut produire du code plus rapidement, et les
programmes produits peuvent tourner sur différents types de machines.
Exemple de programme
L'immense majorité des programmes qui s'exécutent sur nos ordinateurs, téléphones et autres outils électroniques sont écrits dans des langages de programmation
dits impératifs : les lignes du programme sont exécutées les unes après les autres. Chaque ligne du programme effectue soit une opération simple, soit exécute
une fonction qui est elle-même une suite d'opérations simples.

Le programme « Hello World! » est par tradition le premier programme écrit par tous programmeurs. Le programme possède pour unique fonction l'affichage de
"Hello World!" à son utilisateur.

Voici une version d'un programme « Hello World! »:

Affichage d'un programme « Hello


World! »

Le programme suivant écrit en langage Java (légèrement simplifié et auquel des commentaires ont été rajoutés), demande simplement à l'utilisateur d'entrer au
clavier deux nombres entiers, et affiche leur quotient.

void main() { // fonction 'main' : c'est toujours ici qu'un programme Java commence
// 'int' signifie integer : nombre entier en anglais
int A, B; // on déclare deux variables A et B qui sont des nombres entiers
WriteLine("entrez deux entiers : "); // 'WriteLine' permet d'écrire à l'écran
A = ReadIntFromKeyboard(); // on attend que l'utilisateur tape un entier au clavier,
// et on l'enregistre dans A
B = ReadIntFromKeyboard(); // puis on fait la même chose pour B
if (B == 0) { // si B est égal à 0
WriteLine("erreur : division par zéro");
} else { // sinon
float C = CalculerDivision(A,B); // on exécute la fonction 'CalculerDivision'
// que l'on a programmée ci-dessous,
// et on enregistre le résultat dans C qui est un 'float' : un nombre à virgule
WriteLine("le résultat est : " + C); // on affiche C
}
}
float CalculerDivision(float U, float V) { // U et V sont les paramètres de notre fonction 'CalculerDivision' : ce sont des nombres à
virgules (float).
// et celle-ci renvoie un 'float' : un nombre à virgule flottante
// dans la fonction 'main', A et B étaient des nombres entiers,
// U et V sont des copies des valeurs de A et B,
// et qui ont été converties en nombres à virgule (22 deviendrait simplement 22.0000000)
float Resultat;
Resultat = U / V; // on effectue la division
return Resultat; /// on renvoie le résultat
}

Dans ce programme, les principales fonctionnalités de la programmation impérative sont utilisées : des variables de type nombre entier, nombre à virgule, chaîne
de caractère, fonction calculant un résultat à partir de paramètres, fonction effectuant une tâche telle qu'afficher un message à l'écran, instruction if permettant
d'exécuter un code ou un autre en fonction de la valeur de telle ou telle variable.

Dans un programme informatique typique, on trouvera suivant les langages des boucles while ou for qui permettent d'exécuter un morceau de code en
boucle ou simplement un certain nombre de fois, des new pour l'allocation dynamique de données (par exemple des tableaux), et très souvent des éléments de
programmation objet permettant de structurer différemment le code et de créer des types de données personnalisés, ou encore des exceptions pour gérer certains
cas d'erreurs plus facilement.

On remarque que pour effectuer une tâche très simple, le code informatique peut être très laborieux, et encore ici on ne traite pas les erreurs (si l'utilisateur tape un
mot au lieu d'un nombre), et l'affichage est minimaliste. C'est pourquoi les langages de programmation n'ont jamais cessé d'évoluer, dans le but d'aider le
programmeur qui souhaite réaliser des programmes rapides à s'exécuter, sans dysfonctionnements, et surtout simples à écrire, du moins le plus possible.

Phases

Conception

La phase de conception définit le but du programme. Si on fait une rapide analyse fonctionnelle d'un programme, on détermine essentiellement les données qu'il
va traiter (données d'entrée), la méthode employée (appelée l'algorithme), et le résultat (données de sortie). Les données d'entrée et de sortie peuvent être de
nature très diverse. On peut décrire la méthode employée pour accomplir le but d'un programme à l'aide d'un algorithme. La programmation procédurale et
fonctionnelle est basée sur l'algorithmique. On retrouve en général les mêmes fonctionnalités de base.

Programmation impérative

"Si"
Si prédicat

Alors faire ceci


Sinon faire cela

"Tant que"
Tant que prédicat

Faire ...
"Pour"
Pour variable allant de borne inférieure à borne supérieure

Faire ...

"Pour" (variante)
Pour variable dans conteneur

faire ...

Implémentation

Une fois l'algorithme défini, l'étape suivante est de coder le programme. Le codage dépend de l'architecture sur laquelle va s'exécuter le programme, de
compromis temps-mémoire, et d'autres contraintes. Ces contraintes vont déterminer quel langage de programmation utiliser pour « convertir » l'algorithme en
code source.

Transformation du code source

Le code source n'est (presque) jamais utilisable tel quel. Il est généralement écrit dans un langage "de haut niveau", compréhensible pour l'homme, mais pas pour
la machine.

Compilation

Certains langages sont ce qu'on appelle des langages compilés. En toute généralité, la compilation est l'opération qui consiste à transformer un langage source en
un langage cible. Dans le cas d'un programme, le compilateur va transformer tout le texte représentant le code source du programme, en code compréhensible
pour la machine, appelé code machine.

Dans le cas de langages dits compilés, ce qui est exécuté est le résultat de la compilation. Une fois effectuée, l'exécutable obtenu peut être utilisé sans le code
source.

Il faut également noter que le résultat de la compilation n'est pas forcément du code machine correspondant à la machine réelle, mais peut être du code compris
par une machine virtuelle (c'est-à-dire un programme simulant une machine), auquel cas on parlera de bytecode. C'est par exemple le cas en Java. L'avantage est
que, de cette façon, un programme peut fonctionner sur n'importe quelle machine réelle, du moment que la machine virtuelle existe pour celle-ci.

Dans le cas d'une requête SQL, la requête est compilée en une expression utilisant les opérateurs de l'algèbre relationnelle. C'est cette expression qui est évaluée
par le système de gestion de bases de données.

Interprétation

D'autres langages ne nécessitent pas de phase spéciale de compilation. La méthode employée pour exécuter le programme est alors différente. La phase de
compilation est la plupart du temps incluse dans celle d’exécution. On dit de ce programme qu'il interprète le code source. Par exemple, Python ou Perl sont des
langages interprétés.

Avantages, inconvénients

Les avantages généralement retenus pour l'utilisation de langages « compilés », est qu'ils sont plus rapides à l'exécution que des langages interprétés, car
l'interprète doit être lancé à chaque exécution du programme, ce qui mobilise systématiquement les ressources.

Traditionnellement, les langages interprétés offrent en revanche une certaine portabilité (la capacité à utiliser le code source sur différentes plates-formes), ainsi
qu'une facilité pour l'écriture du code. En effet, il n'est pas nécessaire de passer par la phase de compilation pour tester le code source. Il n'est pas non plus
nécessaire de disposer d'un autre programme (debugger) afin d’ôter les bugs du programme, c'est l’interpréteur qui permet d'afficher directement le contenu des
variables du programme.

Appellation impropre

Il faut noter qu'on parle abusivement de langages compilés ou interprétés. En effet, le caractère compilé ou interprété ne dépend pas du langage, qui n'est
finalement qu'une grammaire et une certaine sémantique. D'ailleurs, certains langages peuvent être utilisés interprétés ou compilés. Par exemple, il est très courant
5
d'utiliser Ruby avec un interprète, mais il existe également des compilateurs pour ce langage . On notera toutefois, qu'il peut être important de préciser comment
le code source est exécuté. En effet, rares sont les organismes qui proposent à la fois un compilateur et un interpréteur, les résultats du programme peuvent
différer à l'exécution, même si la norme du langage est clairement définie.

Néanmoins, l'usage qu'on fait des langages est généralement fixé.

Test du programme

C'est l'une des étapes les plus importantes de la création d'un programme. En principe, tout programmeur se doit de vérifier chaque partie d'un programme, de le
tester. Il existe différents types de test. On peut citer en particulier :

Test unitaire
Test d'intégration
Test de performance

Il convient de noter qu'il est parfois possible de vérifier un programme informatique, c'est-à-dire prouver, de manière plus ou moins automatique, qu'il assure
certaines propriétés.
Pratiques
Algorithmique
Gestion de versions
Optimisation du code
Programmation système
Refactoring
Test d'intégration
Test unitaire

Paradigmes
Un paradigme est un style fondamental de programmation, définissant la manière dont les programmes doivent être formulés.

Un paradigme est la façon dont sont traitées les solutions aux problèmes et un style fondamental de programmation, définissant la manière dont les programmes
doivent être formulés. Chaque paradigme amène sa philosophie de la programmation ; une fois qu'une solution a été imaginée par un programmeur selon un
certain paradigme, un langage de programmation qui suit ce paradigme permettra de l'exprimer.

Programmation impérative

Le paradigme impératif est le plus répandu, les opérations sont une suite d’instructions exécutées par l'ordinateur pour modifier l'état du programme.

Programmation procédurale

La programmation procédurale est un sous-ensemble de la programmation impérative. Elle introduit la notion de routine ou fonction qui est une sorte de
factorisation de code, chaque procédure peut être appelée à n’importe quelle étape du programme. Ce paradigme permet aussi de supprimer les instructions
6, 7
goto .

Ce paradigme est très répandu, il est présent dans des langages comme le C, le COBOL ou le FORTRAN.

Programmation structurée

Apparu dans les années 70, la programmation structurée est un sous-ensemble de la programmation impérative. Elle née avec les travaux de Nicklaus Wirth pour
son Algol W et l'article fondateur de Dijkstra dans Communications of the ACM, visant à supprimer l’instruction goto.

Tous les langages procéduraux peuvent faire de la programmation structurée, mais certains comme le FORTRAN s'y prêtent très mal.

Programmation déclarative

En programmation déclarative, le programme est indépendant de l’état de la machine, il s’affranchit donc de tout effet de bord et un appel à une même fonction
produira toujours le même résultat.

Le programme s’écrit non pas comme une suite d’instruction pour résoudre un problème mais (contrairement à la programmation impérative) comme la solution
au problème.

Programmation fonctionnelle

La programmation fonctionnelle se base sur plusieurs principes comme : l’immutabilité, les fonctions pures (qui ne dépendent pas de l’état de la machine) et les
lambda-calcul.

Aujourd’hui, nombreux sont les langues qui offre une possibilité d’approche fonctionnelle au programme. Certains comme le LISP ou le Scala le sont depuis
leurs créations. D’autre comme le JavaScript, le Java ou le PHP ont ajoutée par la suite des outils permettant une approche plus fonctionnelle.

Programmation logique

La programmation logique consiste à exprimer les problèmes et les algorithmes sous forme de prédicats à l’aide d'une base de faits, d'une base de règles et d'un
moteur d'inférence.

Programmation orientée objet

La programmation orientée objet (abrégé POO) consiste en la définition et l'interaction de briques logicielles appelées objets ; ces objets représentes un concept,
une idée. Chaque objet contient des attributs et des méthodes en rapport avec un sujet.

Programmation orientée prototype

La programmation orientée prototype est un sous ensemble de la programmation orientée objet. Dans ce paradigme, chaque objet est créé à partir d’un prototype
qui est lui-même un objet. Le prototype a donc une existence physique en mémoire et est mutable contrairement aux classes.

Le JavaScript, le Lua ou le Self sont des exemples de langages utilisant ce paradigme.


Programmation orientée classe

La programmation orientée classe est basée sur la notion de classes. Une classe est statique, c’est la représentation abstraite de l’objet, c’est à ce niveau que ce
passe l’héritage. Tout objet est donc l’instance d’une classe.

Les langages à classes peuvent être sous forme fonctionnelle (CLOS) comme sous forme impérative (C++, Java), voir les deux (Python, OCalm).

Autres paradigmes
Programmation concurrente
Programmation orientée aspect
Programmation orientée composant
Programmation par contrat
Programmation par contraintes
Programmation par intention
Programmation réactive

Notes et références
1. « Pour éviter cette confusion polysémique, des termes alternatifs sont parfois utilisés, comme le code ou le codage, mais la programmation
informatique ne peut pas se réduire au code ». Cf Margarida Romero, Benjamin Lille et Azeneth Patiño, Usages créatifs du numérique pour
l'apprentissage au XXIe siècle, PUQ, 2017, 190 p. (lire en ligne (https://books.google.com/books?id=hHs2DwAAQBAJ)).
2. « Modèle : Métier original de Jacquard » (https://www.arts-et-metiers.net/musee/modele-metier-original-de-jacquard), sur Musée des arts et
métiers (consulté le 20 décembre 2020)
3. (en-US) « IBM100 - The IBM Punched Card » (http://www-03.ibm.com/ibm/history/ibm100/us/en/icons/punchcard/), sur www-03.ibm.com,
7 mars 2012 (consulté le 20 décembre 2020)
4. (en) Alan Turing, On Computable Numbers, with an Application to the Entscheidungsproblem : Proceedings of the London Mathematical
Society, London Mathematical Society, 1937 (DOI 10.1112/PLMS/S2-42.1.230 (https://dx.doi.org/10.1112/PLMS/S2-42.1.230), lire en ligne
(https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf)) et « [idem] : A Correction », Proc. London Math. Soc., 2e série, vol. 43, 1938,
p. 544-546 (DOI 10.1112/plms/s2-43.6.544 (https://dx.doi.org/10.1112/plms/s2-43.6.544), lire en ligne (http://www.thocp.net/biographies/pape
rs/turing_oncomputablenumbers_1936.pdf))
5. (en) XRuby (http://xruby.com/default.aspx)
6. Texte original dans E. W Dijkstra, « Go To Statement Considered Harmful », Communications of the ACM, vol. 11, no 3, mars 1968, p. 147-14
(lire en ligne (http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html))
7. « Go To Statement Considered Harmful » (http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF) [PDF], sur University of Texas

Voir aussi
Sur les autres projets Wikimedia :
Articles connexes
Programmation informatique,
Économie d'énergie d'un programme informatique sur Wikiversity
Paradigme (programmation)
Programmation informatique,
Style de programmation
sur Wikibooks
Chronologie des langages de programmation
Liste des langages de programmation
Programmation web
Forme de Backus-Naur (BNF), une grammaire de description de langage
Google Code Jam, un concours international annuel de programmation très prisé des mordus d'algorithmique et de programmation
Kata (programmation)

Liens externes
Notices d'autorité :
Bibliothèque nationale de France (http://catalogue.bnf.fr/ark:/12148/cb11932648m) (données (http://data.bnf.fr/ark:/12148/cb11932648m)) ·
Bibliothèque du Congrès (http://id.loc.gov/authorities/sh85107310) · Gemeinsame Normdatei (http://d-nb.info/gnd/4076370-5) ·
Bibliothèque nationale de la Diète (http://id.ndl.go.jp/auth/ndlna/00569223) ·
Bibliothèque nationale d’Espagne (http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=XX526555)
Notice dans un dictionnaire ou une encyclopédie généraliste :
Encyclopædia Universalis (https://www.universalis.fr/encyclopedie/programmation/)

Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Programmation_informatique&oldid=184515457 ».

La dernière modification de cette page a été faite le 10 juillet 2021 à 08:41.

Droit d'auteur : les textes sont disponibles sous licence Creative Commons attribution, partage dans les mêmes conditions ; d’autres conditions peuvent s’appliquer. Voyez les
conditions d’utilisation pour plus de détails, ainsi que les crédits graphiques. En cas de réutilisation des textes de cette page, voyez comment citer les auteurs et mentionner
la licence.
Wikipedia® est une marque déposée de la Wikimedia Foundation, Inc., organisation de bienfaisance régie par le paragraphe 501(c)(3) du code fiscal des États-Unis.
Politique de confidentialité
À propos de Wikipédia
Avertissements
Contact
Développeurs
Statistiques
Déclaration sur les témoins (cookies)

Vous aimerez peut-être aussi