<page>
    <title>Langage de programmation</title>
    <id>6923</id>
    <revision>
      <id>31167495</id>
      <timestamp>2008-06-30T17:44:20Z</timestamp>
      <contributor>
        <username>GaMip</username>
        <id>82500</id>
      </contributor>
      <minor />
      <comment>/* Langages spécialisés */ + PROMELA</comment>
      <text xml:space="preserve">Un '''langage de programmation''' est un [[code]] de [[communication]], permettant à un être humain de dialoguer avec une machine en lui soumettant des instructions et en analysant les données matérielles fournies par le système, généralement un [[ordinateur]]. Le langage permet à la personne qui rédige un [[programme (informatique)|programme]],  de faire abstraction de certains mécanismes internes, généralement des activations et désactivations de [[commutateur (électronique)|commutateurs électroniques]], qui aboutissent au résultat désiré. 

L'activité de rédaction du [[code source]] d'un programme est nommée [[programmation informatique|programmation]]. Elle consiste en la mise en œuvre de techniques d'écriture et de résolution d'algorithmes informatiques, lesquelles sont fondées sur les [[mathématiques]]. À ce titre, un langage de programmation se distingue du langage mathématique par sa visée opérationnelle (une fonction et par extension, un programme, doit ''retourner'' une valeur), de sorte qu'un « langage de programmation est toujours un compromis entre la puissance d'expression et la possibilité d'exécution. »&lt;ref&gt;[[Gilles Dowek]], ''Le langage mathématique et les langages de programmation'', Colloque '' Voir, entendre, raisonner, calculer'',  [[Cité des sciences et de l'industrie]], La Villette, Paris, 1997 — [http://www.lix.polytechnique.fr/~dowek/Vulg/langagelangages.pdf lire en ligne] {{pdf}}&lt;/ref&gt;

== Langages de programmation ==
Les langages de programmation permettent de définir les ensembles d'instructions effectuées par l'[[ordinateur]] lors de l'exécution d'un programme. Il existe des milliers de langages de programmation, la plupart d'entre eux étant réservés à des domaines spécialisés. Ils font l'objet de recherches constantes dans les universités et dans l'industrie.

Les langages de programmation peuvent être classifiés de nombreuses manières : 
* généraliste/spécialisé, 
* [[Langage de haut niveau|haut niveau]]/[[Langage de bas niveau|bas niveau]], 
* [[interpréteur|interprété]]/[[compilateur|compilé]], 
* avec/sans [[Ramasse-miettes|gestion de mémoire automatisée]], 
* avec/sans [[système de gestion d'exceptions]], 
* à [[typage fort]]/[[typage faible]], 
* à [[typage statique]]/[[typage dynamique]], 
* à [[syntaxe]] fixe/extensible ; 
* non objet/[[orienté objet]]/purement objet, 
* impératif/fonctionnel/déclaratif, 
* fonctionnel pur/impur, 
* etc.

Nous incluons ci-dessous une classification sommaire des langages de programmation les plus connus. Il faut garder à l'esprit que de nombreux langages appartiennent simultanément à plusieurs catégories — ils sont dits « multi-paradigmes ».
Par exemple, C++ permet la programmation impérative, orientée objet et la programmation générique (à base de classes et de fonctions paramétrées nommées templates). 
[[Common Lisp]] est à la fois impératif, fonctionnel, orienté objet 
— et son caractère « programmable » (un langage de programmation programmable...) lui permet d'intégrer d'autres « paradigmes » de programmation en son sein (par exemple : la programmation logique, la programmation par contraintes).

Ci-dessous, nous listons les langages les plus connus (nous mettons entre parenthèses certains langages dérivés ou les extensions requises).

{| border=&quot;0&quot; align=&quot;center&quot; style=&quot;border: 1px solid #999; background-color:#FFFFFF; text-align:center&quot;
|+ '''Classification des langages généralistes'''
|-align=&quot;center&quot; bgcolor=&quot;#CCCCCC&quot;
|'''Nom''' ||'''[[Programmation impérative|Impératif]]''' ||'''[[Programmation fonctionnelle|Fonctionnel]]''' || '''[[Programmation orientée objet|Objets]]''' || '''[[Programmation déclarative|Déclaratif]]''' || '''[[Programmation concurrente|Concurrent]]'''
|----bgcolor=&quot;#EFEFEF&quot;
| [[4ème Dimension (langage)|4D]] || X || ||  || ||
|----
| [[ActionScript]] || X || || X || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[Ada (langage)|Ada]] || X || || X || || X
|----
| [[Algol (langage)|Algol]] || X || || || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[Langage Anubis|Anubis]] || || X || X || ||
|----
| [[APL (langage)|APL]] ||X || || APL2 || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[Langage Assembleur|Assembleur]] || X || || || ||
|----
| [[BASIC]] || X || ||  || ||
|----bgcolor=&quot;#EFEFEF&quot; 
| [[Caml]] || X || X || || ||
|----
| [[CDuce]] ||  || X || | 
|----bgcolor=&quot;#EFEFEF&quot; 
| [[C (langage)|C]] || X || || || ||
|----
| [[C plus plus|C++]] || X || || X || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[C sharp|C#]] || X || || X || ||
|----
| [[COBOL]] || X || ||COBOL 2002 || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[ColdFusion]] || X || || || ||
|----
| [[Common Lisp]] || X || X || X || (screamer) ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[DarkBasic]] || X || || X || ||
|----
| [[Eiffel (langage)|Eiffel]] || X || || X || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[Erlang (langage)|Erlang]] || || X || || || X
|----
| [[Fortran]] || X || || || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[Forth (langage)|Forth]] || X || || || ||
|----
| [[Haskell]] || || X || (O'Haskell) ||  ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[ICON]] || X || || || ||
|----
| [[Java (langage)|Java]] || X || || X || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[Limbo (langage)|Limbo]] || X || || X || ||
|----
| [[Logo (langage)|Logo]] || X || || || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[ML (langage)|ML]] || X || X || ([[OCaml|Objective CAML]]) || ||
|----
| [[Natural]] || X || || || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[Objective C]] || X || || X || ||
|----
| [[Langage Oz|Oz]] || X || X || X || X || X
|----bgcolor=&quot;#EFEFEF&quot;
| [[Pascal (langage)|Pascal]] || X || || ([[Delphi (langage)|Delphi, Kylix]]) || ||
|----
| [[Perl (langage)|Perl]] || X || X || X || ||
|----bgcolor=&quot;#EFEFEF&quot;
| [[PHP: Hypertext Preprocessor|PHP]] || X || || (PHP 4+) || ||
|----
| [[PL/I]] || X || || || ||
|----bgcolor=&quot;#EFEFEF&quot;
|[[Python (langage)|Python]] || X || X || X || ||Stackless
|----
|[[Prolog]] || || ||  || X ||
|----bgcolor=&quot;#EFEFEF&quot;
| RPG ou [[Générateur automatique de programmes|GAP]] || X || || || ||
|----
|[[Ruby]] || X || X || X || ||
|----bgcolor=&quot;#EFEFEF&quot;
|[[Scala (langage)|Scala]] || X || X || X || || X
|----
|[[Scheme]] || X || X || (TinyClos) || ||gambit, termite
|----bgcolor=&quot;#EFEFEF&quot;
|[[Simula]] || X || || X || ||
|----
|[[Smalltalk]] || X || || X || ||
|----bgcolor=&quot;#EFEFEF&quot;
|[[Tool Command Language|Tcl]] || X || X || (Incr Tcl, Snit, XOTcl) || ||
|----
| [[W-Langage]] || X || || X ([[WinDev]], [[WebDev]], [[WinDev Mobile]]) || ||
|----bgcolor=&quot;#EFEFEF&quot;
|[[XSLT]] || X || || || X ||
|}

==== Langages déclaratifs ====

*[[Langage Oz| Oz]]
*[[Langage Mercury|Mercury]]
*[[Prolog]] pour &lt;nowiki&gt;PROgrammation LOGique&lt;/nowiki&gt;
*[[Clips (langage)|Clips]]

Ci-dessous, nous listons les langages spécialisés, c'est-à-dire dont l'utilisation est réservée à des domaines bien spécifiques ; les plus connus sont :

==== Langages de définition de données ====
*[[ASN.1]]
*[[SGML|DTD SGML]]
*[[Extensible markup language|DTD XML]]
*[[XML Schema]]
*[[Relax NG]]

==== Langages spécialisés pour la communication avec une [[base de données]]====
* [[4GL]]
* [[SAS (langage)|SAS]]
* [[SQL]]
* [[Visual FoxPro]] (Description)
* [[W-Langage]] ([[WinDev]], [[WinDev Mobile]])
* [[Magic eDeveloper]]

==== Langages pour pages [[Web]] dynamiques ====
*Exécution par le [[serveur HTTP]] (côté serveur) :
**[[PHP: Hypertext Preprocessor|PHP]].
**[[Active server pages|ASP]].
**[[JavaServer Pages|JSP]] (issu de [[Java (langage)|Java]], basé sur des [[Servlet]]s).
**[[Python (langage)|Python]].
**[[Perl (langage)|Perl]].
**[[Tcl (langage)|Tcl]].
**''Framework'' [[Ruby on Rails]] basé sur le langage [[Ruby]].
**[[XSP]] (issu de [[Extensible markup language|XML]], soutenu par [[Apache (logiciel)|Apache]]).
**Tout langage dans le cadre de [[Common Gateway Interface]] (CGI).
**[[W-Langage]] ([[WebDev]]).

*Exécution par le [[navigateur web]] (côté client) :
**[[JavaScript]] ou [[ECMAScript]] (dont [[JScript]] hérite avec des extensions spécifiques). 
**[[VBScript]].
**[[applet]]s écrites en [[Java (langage)|Java]].
**Tclets écrits en [[Tcl (langage)|Tcl]].
**[[ActionScript]] de [[Macromedia Flash]].
**[[XSLT]].

==== Langages de programmation théorique ====
*[[Machine de Turing]]
*[[Lambda-calcul]]
*[[Récursion Primitive]]
*[[Système T]] de [[Kurt Gödel]]
*[[Pi-calcul]]
*[[Join-Calcul]]
*[[Logique combinatoire]]

==== Langages de programmation de Commande Numérique (C.N.) ====
Une [[machine-outil]] automatisée, ou Commande Numérique (C.N.), a besoin d'un langage de programmation pour réaliser les opérations de [[Tournage mécanique|tournage]], ou de [[fraisage]]…
*[[Programmation de commande numérique]]

==== Langages de programmation des [[Automate programmable industriel|automates programmables industriels  (API)]] ====
* [[Sequential function chart]], langage graphique, dérivé du [[grafcet]] (NB : le grafcet définit les spécifications de façon graphique)
*[[Langage Ladder]], [[langage graphique]]

==== Pour rendre la programmation plus difficile ====
* [[Brainfuck]] (ou encore [[F*ckF*ck]], [[Ook]] ou [[spoon]])
* [[Intercal]]
* [[Malbolge]]
* [[Unlambda]]

==== Langages spécialisés ====
* [[Advanced Boolean Expression Language|ABEL]], langage pour la programmation électronique des [[Circuit logique programmable|PLD]]
* [[CDuce]], langage fonctionnel d'ordre supérieur pour la manipulation de documents au format XML.
* [[Esterel (langage)|Esterel]], [[Lustre (langage)|Lustre]], [[Signal (langage de programmation)|Signal]], [[Lucid Synchrone]] : langages de programmation synchrones pour les systèmes réactifs
* [[Forme de Backus-Naur]] (BNF), formalisation des langages de programmation
* [[Langage K]], langage à vocation pédagogique
* [[Langage R|R]], langage pour l'outil de statistiques du même nom
* [[PROMELA]], langage de spécification de systèmes asynchrones
* [[SystemC]], langage de description matérielle de plus haut niveau que les précédents et permettant une simulation plus rapide
* [[Verilog]], autre langage de description matérielle et de simulation, plus populaire aux États-Unis
*[[Very High Speed Integrated Circuit Hardware Description Language|VHDL]], langage de description matérielle, permettant de synthétiser de l'électronique numérique (descriptions de portes logiques) et d'en simuler le fonctionnement
*[[VRML]], description de scènes en trois dimensions
*[[xLispStat]], langage pour l'outil de statistiques du même nom

====Autres langages====
* [[Fenix Project| Fenix]]
* [[ABAP]]
* [[Langage Anubis| Anubis]]
* [[ArmScript]]
* [[awk]]
* [[Lisaac]]
* [[Miva Script| Miva Script]]
* [[SNOBOL]] 
* [[sed (informatique)|sed]]
* [[Scripting mIRC]]
* [http://scratch.mit.edu/ Scratch], langage gratuit, développé par le [[Massachusetts Institute of Technology]] (MIT) et orienté vers une utilisation dès l'âge de 8 ans.
* [http://www.up-comp.com/french/ressources/ Up ! 5GL pour consolider ou construire des applications basées sur des composants.]

== Notes et références ==
{{références}}

==Voir aussi==

* [[Langage de balisage]]
* [[Langage informatique]]
* [[Chronologie des langages de programmation]]

{{Portail|programmation informatique}}

[[Catégorie:Langage de programmation|*]]

&lt;!-- [[fr:Langage de programmation]] --&gt;
{{Lien AdQ|he}}
{{Lien AdQ|vi}}
{{lien BA|en}}
[[af:Programmeertaal]]
[[als:Programmiersprache]]
[[am:የፕሮግራም ቋንቋ]]
[[an:Lenguache de programazión]]
[[ar:لغة برمجة]]
[[ast:Llinguaxe de programación]]
[[bg:Език за програмиране]]
[[bn:প্রোগ্রামিং ভাষা]]
[[br:Areg]]
[[bs:Programski jezik]]
[[ca:Llenguatge de programació]]
[[cs:Programovací jazyk]]
[[da:Programmeringssprog]]
[[de:Programmiersprache]]
[[el:Γλώσσα προγραμματισμού]]
[[en:Programming language]]
[[eo:Programlingvo]]
[[es:Lenguaje de programación]]
[[et:Programmeerimiskeel]]
[[eu:Programazio-lengoaia]]
[[fi:Ohjelmointikieli]]
[[gl:Linguaxe de programación]]
[[he:שפת תכנות]]
[[hr:Programski jezik]]
[[hu:Programozási nyelv]]
[[ia:Linguage de programmation]]
[[id:Bahasa pemrograman]]
[[ilo:Lengguahe ti panangprograma]]
[[is:Forritunarmál]]
[[it:Linguaggio di programmazione]]
[[ja:プログラミング言語]]
[[ka:დაპროგრამების ენა]]
[[ko:프로그래밍 언어]]
[[lb:Programméiersprooch]]
[[lt:Programavimo kalba]]
[[lv:Programmēšanas valoda]]
[[ml:പ്രോഗ്രാമിംഗ് ഭാഷ]]
[[nl:Programmeertaal]]
[[nn:Programmeringsspråk]]
[[no:Programmeringsspråk]]
[[pl:Język programowania]]
[[pt:Linguagem de programação]]
[[ro:Limbaj de programare]]
[[ru:Язык программирования]]
[[simple:Programming language]]
[[sk:Programovací jazyk]]
[[sl:Programski jezik]]
[[sq:Gjuhë programimi]]
[[su:Basa pamrograman]]
[[sv:Programspråk]]
[[ta:ஆணைமூலம்]]
[[te:ప్రోగ్రామింగు భాష]]
[[tg:Забони барномасозӣ]]
[[th:ภาษาโปรแกรม]]
[[tl:Wikang pamprograma]]
[[tr:Programlama dilleri]]
[[uk:Мова програмування]]
[[vi:Ngôn ngữ lập trình]]
[[zh:编程语言]]
[[zh-min-nan:Thêng-sek gí-giân]]</text>
    </revision>
  </page>