Langage de Programmation
Langage de Programmation
Langage de Programmation
Les langages de programmation permettent de décrire d'une part les Fragment de code écrit dans le
structures des données qui seront manipulées par l'appareil langage de programmation
informatique, et d'autre part d'indiquer comment sont effectuées les JavaScript.
manipulations, selon quels algorithmes. Ils servent de moyens de
communication par lesquels le programmeur communique avec
l'ordinateur, mais aussi avec d'autres programmeurs ; les programmes étant d'ordinaire écrits, lus, compris et
3
modifiés par une équipe de programmeurs .
Un langage de programmation est mis en œuvre par un traducteur automatique : compilateur ou interprète.
Un compilateur est un programme informatique qui transforme dans un premier temps un code source écrit
dans un langage de programmation donné en un code cible qui pourra être directement exécuté par un
2
ordinateur, à savoir un programme en langage machine ou en code intermédiaire , tandis que l’interprète
réalise cette traduction « à la volée ».
Les langages de programmation offrent différentes possibilités d'abstraction et une notation proche de
l'algèbre, permettant de décrire de manière concise et facile à saisir les opérations de manipulation de
données et l'évolution du déroulement du programme en fonction des situations. La possibilité d'écriture
abstraite libère l'esprit du programmeur d'un travail superflu, notamment de prise en compte des spécificités
2
du matériel informatique, et lui permet ainsi de se concentrer sur des problèmes plus avancés .
Les premiers langages de programmation ont été créés dans les années 1950 en même temps que
l'avènement des ordinateurs. Cependant, de nombreux concepts de programmation ont été initiés par un
langage ou parfois plusieurs langages, avant d'être améliorés puis étendus dans les langages suivants. La
plupart du temps la conception d'un langage de programmation a été fortement influencée par l'expérience
4
acquise avec les langages précédents .
Définition
Un langage de programmation est construit à partir d'une grammaire formelle, qui inclut des symboles et des
règles syntaxiques, auxquels on associe des règles sémantiques. Ces éléments sont plus ou moins complexes
selon la capacité du langage. Les modes de fonctionnement et de définition de la complexité d'un langage
de programmation sont généralement déterminés par leur appartenance à l'un des degrés de la hiérarchie de
5
Chomsky .
Sous un angle théorique, tout langage informatique peut être qualifié de langage de programmation s'il est
Turing-complet, c'est-à-dire qu'il permet de représenter toutes les fonctions calculables au sens de Turing et
Church (en admettant néanmoins pour exception à la théorie que la mémoire des ordinateurs n'est pas un
6
espace infini) .
La plupart des langages de programmation peuvent prévoir des éléments de structure complémentaires, des
méthodes procédurales, des définitions temporaires et variables ainsi que des identifiants :
Les commentaires
Les commentaires sont des textes qui ne seront pas traduits. Ils peuvent être ajoutés dans
les programmes pour y laisser des explications. Les commentaires sont délimités par des
marques qui diffèrent d'un langage de programmation à l'autre tel que « -- », « /* » ou
7
« // » .
Les identifiants
Les éléments constitutifs du programme, tels que les variables, les procédures ou les
types servent à organiser le programme et son fonctionnement. On peut ainsi, par
exemple, diviser un programme en fonctions ou lui donner une structure par objets : ces
éléments de structure sont définis par des identifiants ou des procédures par mot clé selon
le langage.
Utilisation
Un langage de programmation offre un cadre pour élaborer des algorithmes et exprimer des diagrammes de
8, 7
flux . Il permet en particulier de décrire les structures des données qui seront manipulées par l'appareil
informatique et quelles seront les manipulations. Un langage de programmation sert de moyen de
communication avec l'ordinateur mais aussi entre programmeurs : les programmes étant d'ordinaire écrits,
3
lus et modifiés par une équipe de programmeurs .
Un langage de programmation offre un ensemble de notions qui peuvent être utilisées comme primitives
pour développer des algorithmes. Les programmeurs apprécient que le langage soit clair, simple et unifié,
qu'il y ait un minimum de notions qui peuvent être combinées selon des règles simples et régulières. Les
qualités d'un langage de programmation influent sur la facilité avec laquelle les programmes pourront être
7
écrits, testés, puis plus tard compris et modifiés .
La facilité d'utilisation, la portabilité et la clarté sont des qualités appréciées des langages de programmation.
La facilité d'utilisation, qui dépend de la syntaxe, du vocabulaire et des symboles, influence la lisibilité des
programmes écrits dans ce langage et la durée d'apprentissage. La portabilité permet à un programme écrit
pour être exécuté par une plateforme informatique donnée (un système d'exploitation) d'être transféré en vue
8
d'être exécuté sur une autre plateforme .
Les programmeurs apprécient que la syntaxe permette d'exprimer la structure logique inhérente au
programme. Un des soucis en programmation est d'éviter des pannes, qu'il soit possible de les détecter, les
éviter et les rectifier ; ceci est rendu possible par des mécanismes internes des langages de programmation.
8
Des vérifications implicites sont parfois effectuées en vue de déceler des problèmes .
Les programmeurs apprécient qu'un langage de programmation soit en ligne avec les bonnes pratiques de
programmation et d'ingénierie, qu'il encourage la structuration du programme, facilite la maintenance des
8
programmes et qu'il dissuade, voire interdise les mauvaises pratiques . L'utilisation de l'instruction goto,
par exemple, qui existe depuis les premiers langages de programmation, est considérée comme une
mauvaise pratique. Son utilisation est déconseillée, voire impossible dans les langages de programmation
9
récents .
L'alignement sur les standards industriels, la possibilité d'utiliser des fonctionnalités écrites dans un autre
langage de programmation et l'exécution simultanée de plusieurs threads sont des possibilités appréciées des
8
langages de programmation .
Notions courantes
Un langage de programmation repose sur un ensemble de notions telles que les instructions, les variables,
les types et les procédures ou fonctions, qui peuvent être utilisées comme primitives pour développer des
10
algorithmes .
Une instruction
11
Un ordre donné à un ordinateur .
Une variable
Un nom utilisé dans un programme pour faire référence à une donnée manipulée par programme.
Une constante
Un nom utilisé pour faire référence à une valeur permanente.
Un type
Chaque donnée a une classification, celle-ci influe sur la plage de valeurs possibles, les opérations qui
10
peuvent être effectuées et la représentation de la donnée sous forme de bits . Chaque langage de
programmation offre une gamme de types primitifs, incorporés dans le langage. Certains langages offrent la
possibilité de créer des nouveaux types.
Les types de données primitifs courants sont les nombres entiers, les nombres réels, le booléen, les chaînes
de caractères et les pointeurs.
Plus précisément, le type booléen est un type qui n'a que deux valeurs, vrai et faux, tandis que le type
10
pointeur fait référence à une donnée qui se trouve quelque part en mémoire .
Une manière caractéristique d'organiser un ensemble de données en mémoire, qui influe sur les algorithmes
utilisés pour les manipuler. Les structures courantes sont les tableaux, les enregistrements, les listes, les piles,
12
les files et les arbres .
Une déclaration
Une phrase de programme qui sert à renseigner au traducteur (compilateur, interpréteur...) les noms et les
3
caractéristiques des éléments du programme tels que des variables, des procédures, de types , etc.
Des vérifications sont effectuées au moment de la compilation ou lors de l'exécution du programme, pour
assurer que les opérations du programme sont possibles avec les types de données qui sont utilisés. Dans un
langage fortement typé, chaque élément du programme a un type unique, connu et vérifié au moment de la
3
compilation, ce qui permet de déceler des erreurs avant d'exécuter le programme .
Divers langages de programmation offrent la possibilité d'isoler un fragment de programme et d'en faire une
opération générale, paramétrable, susceptible d'être utilisée de façon répétée. Ces fragments sont appelés
procédures, fonctions ou méthodes, selon le paradigme.
Les modules
Paradigmes
13
Un paradigme est une façon d'approcher la programmation . 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,
14
un langage de programmation qui suit ce paradigme permettra de l'exprimer . Impératif, déclaratif,
fonctionnel, logique, orienté objet, concurrent, visuel, événementiel et basé web sont des paradigmes de
13
programmation . Chaque langage de programmation reflète un ou plusieurs paradigmes, apportant un
ensemble de notions qui peuvent être utilisées pour exprimer une solution à un problème de
14
programmation . Au cours de l'histoire, les scientifiques et les programmeurs ont identifié les avantages et
13
les limitations d'un style de programmation et apporté de nouveaux styles . La plupart des langages de
13
programmation contemporains permettent d'adopter plusieurs paradigmes de programmation à condition
que ceux-ci soient compatibles.
Le paradigme impératif ou procédural est basé sur le principe de l'exécution étape par étape des instructions
15
tout comme on réalise une recette de cuisine. Il est basé sur le principe de la machine de Von Neumann .
Un ensemble d'instructions de contrôle de flux d'exécution permet de contrôler l'ordre dans lequel sont
exécutées les instructions qui décrivent les étapes. Le C, le Pascal, le Fortran et le Cobol sont des exemples
14
de langage de programmation qui implémentent le paradigme impératif .
Déclaratif
Fonctionnel
Le paradigme fonctionnel a pour principe l'évaluation de formules, afin d'utiliser le résultat pour d'autres
calculs ; il s'appuie sur la récursivité et il a pour modèle le lambda-calcul, plus précisément la réduction en
forme normale de tête. Tous les calculs évaluent des expressions ou font appel à des fonctions. Pour
18
simplifier , le résultat d'un calcul sert pour le calcul ou les calculs qui ont besoin de son résultat jusqu'à ce
14
que la fonction qui produit le résultat du programme ait été évaluée . Le paradigme fonctionnel a été
introduit par les langages Lisp et ISWIM ainsi qu'en ce qui concerne les fonctions récursives par Algol 60,
dans les années 1960. Des langages tels que Ruby et Scala supportent plusieurs paradigmes dont le
13
paradigme fonctionnel , tandis qu'Haskell ne supporte que le paradigme fonctionnel et OCaml privilégie le
paradigme fonctionnel qu'il partage avec le paradigme objet et une petite dose d'impératif.
Logique
Le paradigme logique vise à répondre à une question par des recherches dans un ensemble, en utilisant des
axiomes, des requêtes et des règles de déduction. L'exécution d'un programme est une cascade de
recherches de faits dans un ensemble, en invoquant des règles de déduction. Les données obtenues, peuvent
être associées à un autre ensemble de règles et peuvent alors être utilisées dans le cadre d'une autre
recherche. L'exécution du programme se fait par évaluation : le système effectue une recherche de toutes les
affirmations qui, par déduction, correspondent à au moins un élément de l'ensemble. Le programmeur
14
exprime les règles, et le système pilote le processus . Le paradigme logique a été introduit par le langage
13
Prolog en 1970 .
Orienté objet
Le paradigme orienté objet est destiné à faciliter le découpage d'un grand programme en plusieurs modules
isolés les uns des autres. Il introduit les notions d'objet et d'héritage. Un objet contient les variables et les
fonctions en rapport avec un sujet. Les variables peuvent être privées, c'est-à-dire qu'elles peuvent être
manipulées uniquement par l'objet qui les contient. Un objet contient implicitement les variables et les
13
fonctions de ses ancêtres, et cet héritage aide à réutiliser du code . Le paradigme orienté objet permet
14
d'associer fortement les données avec les procédures . Il a été introduit par le langage Simula dans les
années 1960 et est devenu populaire dans les années 1980, quand l'augmentation de la puissance de calcul
13
des ordinateurs a permis d'exécuter des grands programmes . Divers langages de programmation ont été
13
enrichis en vue de permettre la programmation orientée objet ; c'est le cas de C++ (dérivé du langage C ),
14
Simula, Smalltalk, Swift et Java sont des langages de programmation en paradigme orienté objet .
Concurrent
En paradigme concurrent un programme peut effectuer plusieurs tâches en même temps. Ce paradigme
13
introduit les notions de thread, d'attente active et d'appel de fonction à distance . Ces notions ont été
introduites dans les années 1980 lorsque, à la suite de l'évolution technologique, un ordinateur est devenu
une machine comportant plusieurs processeurs et capable d'effectuer plusieurs tâches simultanément. Les
langages de programmation contemporains de 2013 tels que C++ et Java sont adaptés aux microprocesseurs
13
multi-cœur et permettent de créer et manipuler des threads . Plus récemment, on a vu apparaître des
langages intégralement orientés vers la gestion de la concurrence, comme le langage Go.
Visuel
Dans la grande majorité des langages de programmation, le code source est un texte, ce qui rend difficile
13
l'expression des objets bidimensionnels . Un langage de programmation tel que Delphi ou C# permet de
manipuler des objets par glisser-déposer et le dessin ainsi obtenu est ensuite traduit en une représentation
textuelle orientée objet et événementielle. Le paradigme visuel a été introduit à la fin des années 1980 par
13
Alan Kay dans le langage Smalltalk, dans le but de faciliter la programmation des interfaces graphiques .
Événementiel
Alors qu'un programme interactif pose une question et effectue des actions en fonction de la réponse, en
13
style événementiel le programme n'attend rien et est exécuté lorsque quelque chose s'est passé . Par
exemple, l'utilisateur déplace la souris ou presse sur un bouton. Dans ce paradigme, la programmation
consiste à décrire les actions à prendre en réponse aux événements. Et une action peut en cascade
13
déclencher une autre action correspondant à un autre événement . Le paradigme événementiel a été
introduit par le langage Simula dans les années 1970. Il est devenu populaire à la suite de l'avènement des
13
interfaces graphiques et des applications web .
Basé web
Avec l’avènement de l'Internet dans les années 1990, les données, les images ainsi que le code s'échangent
entre ordinateurs. Si un résultat est demandé à un ordinateur, celui-ci peut exécuter le programme nécessaire
et envoyer le résultat. Il peut également envoyer le code nécessaire à l'ordinateur client pour qu'il calcule le
13
résultat lui-même . Le programme est rarement traduit en langage machine, mais plutôt interprété ou
traduit en une forme intermédiaire, le bytecode, qui sera exécuté par une machine virtuelle, ou traduit en
langage machine au moment de l'exécution (just-in-time). Java, PHP et Javascript sont des langages de
13
programmation basée web .
Mise en œuvre
L'utilisation d'un langage est rendue possible par un traducteur automatique. Un programme qui prend un
texte écrit dans ce langage pour en faire quelque chose, en général soit :
Un compilateur
Un programme qui traduit le texte dans un langage qui permettra son exécution, tel le langage machine, le
bytecode ou le langage assembleur.
Un interpréteur
Un programme qui exécute les instructions demandées. Il joue le même rôle qu'une machine qui
reconnaîtrait ce langage.
Langage machine
Chaque appareil informatique a un ensemble d'instructions qui peuvent être utilisées pour effectuer des
opérations. Les instructions permettent d'effectuer des calculs arithmétiques ou logiques, déplacer ou copier
des données, ou bifurquer vers l'exécution d'autres instructions. Ces instructions sont enregistrées sous
forme de séquences de bits, où chaque séquence correspond au code de l'opération à effectuer et aux
19
opérandes, c'est-à-dire aux données concernées ; c'est le langage machine .
La traduction s'effectue en plusieurs étapes. En premier lieu, le traducteur effectue une analyse lexicale où il
identifie les éléments du langage utilisés dans le programme. Dans l'étape suivante, l'analyse syntaxique, le
traducteur construit un diagramme en arbre qui reflète la manière dont les éléments du langage ont été
combinés dans le programme, pour former des instructions. Puis, lors de l'analyse sémantique, le traducteur
détermine s'il est possible de réaliser l'opération et les instructions qui seront nécessaires dans le langage
20
cible .
Dans le langage de programmation assembleur, des mots aide-mémoire (mnémonique) sont utilisés pour
référer aux instructions de la machine. Les instructions diffèrent en fonction des constructeurs et il en va de
même pour les mnémoniques. Un programme assembleur traduit chaque mnémonique en la séquence de
21
bits correspondante .
Un runtime
Un runtime (traduction : exécuteur) est un ensemble de bibliothèques logicielles qui mettent en œuvre le
langage de programmation, permettant d'effectuer des opérations simples, telles que copier des données,
22
mais aussi des opérations beaucoup plus complexes .
Lors de la traduction d'un programme vers le langage machine, les opérations simples sont traduites en les
instructions correspondantes en langage machine tandis que les opérations complexes sont traduites en des
utilisations des fonctions du runtime. Dans certains langages de programmation, la totalité des instructions
22
sont traduites en des utilisations du runtime qui sert alors d'intermédiaire entre les possibilités offertes par
23
la plateforme informatique et les constructions propres au langage de programmation .
Les langages de programmation sont couramment auto-implémentés, c'est-à-dire que le compilateur pour ce
langage de programmation est mis en œuvre dans le langage lui-même. Exemple : un compilateur pour le
25
langage Pascal peut être écrit en langage Pascal .
Fonctionnalités avancées
Les fonctionnalités avancées telles que le ramasse-miettes (anglais garbage collector), la manipulation des
exceptions, des événements ou des threads, ainsi que la liaison tardive et la réflexion sont mises en œuvre
22
par les runtime des langages de programmation .
Un ramasse-miettes
26
Un mécanisme qui supprime les variables inutilisées et libère l'espace mémoire qui leur avait été réservé .
Une exception
Un fait inattendu, souvent accidentel, entraîne l'échec du déroulement normal du programme, et ce fait
exceptionnel doit être pris en charge par le programme avant de pouvoir continuer. Certains langages de
27
programmation permettent de provoquer délibérément l'arrêt du déroulement normal du programme .
Un événement
Une procédure qui va être exécutée lorsqu'une condition particulière est rencontrée. Les événements sont
28
notamment utilisés pour mettre en œuvre les interfaces graphiques .
Un thread
Une suite d'instructions en train d'être exécutée. Les langages de programmation qui manipulent les threads
permettent d'effectuer plusieurs tâches simultanément. Cette possibilité d'exécution simultanée, offerte par
les systèmes d'exploitation, est également offerte en allégé par les runtime des langages de
29
programmation .
La liaison tardive
Le procédé de liaison (anglais late binding ou dynamic binding) consiste à associer chaque identifiant d'un
programme avec l'emplacement de mémoire concerné. Cette opération peut être effectuée lors de la
30
traduction du programme, au cours de l'exécution du programme ou juste avant , elle est dite tardive
31
lorsque l'opération de liaison est effectuée très tard, juste avant que l'emplacement concerné ne soit utilisé .
La réflexion
La possibilité pour un programme d'obtenir des informations concernant ses propres caractéristiques. Des
instructions du langage de programmation permettent à un programme d'obtenir des informations sur lui-
32
même et de les manipuler comme des données .
Une monade
Une structure permettant de manipuler des traits impératifs dans des langages fonctionnels purs.
Historique
Bien que la notion de programme apparaisse progressivement au cours de la deuxième moitié du xixe siècle,
les premiers langages de programmation n'apparaissent qu'autour de 1950. Chacun pouvant créer son
propre langage, il est impossible de déterminer le nombre total de langages existant à l'heure actuelle.
Utilisations
On peut aussi classer les langages de programmation en fonction de leur utilisation car beaucoup de
langages sont spécialisés à une application ou à un domaine particulier.
Ce type de langage est utilisé pour une plus grande interaction entre un client et un serveur.
Du côté du serveur web, cela permet de produire des pages dont le contenu est généré à chaque affichage.
Ces langages sont par ailleurs souvent couplés avec un langage pour communiquer avec des bases de
données (exemples : PHP, LiveCode).
Côté client (en général le navigateur web), ces langages offrent la possibilité de réagir à certaines actions de
l'utilisateur sans avoir à questionner le serveur. Par exemple, le JavaScript d'une page Web peut réagir aux
saisies de l'utilisateur dans un formulaire (et vérifier le format des données).
Certains langages permettent de développer à la fois les aspects client et serveur. C'est le cas d'Ocsigen, de
Hop, de Dart ou bien encore du Server-Side JavaScript.
On désigne parfois par langage de programmation théorique les systèmes formels utilisés pour décrire de
façon théorique le fonctionnement des ordinateurs. Ils ne servent pas à développer des applications mais à
représenter des modèles et démontrer certaines de leurs propriétés.
On peut citer la machine de Turing et le λ-calcul de Church, qui datent tous les deux des années 1930, et
donc antérieurs à l'invention de l'ordinateur. Le λ-calcul a par la suite servi de base théorique à la famille des
langages de programmation fonctionnelle. Dans les années 1980, Robin Milner a mis au point le π-calcul
pour modéliser les systèmes concurrents.
Langages exotiques
Les langages exotiques ont pour but de créer des grammaires complètes et fonctionnelles mais dans un
paradigme éloigné des conventions. Beaucoup sont d'ailleurs considérés comme des blagues.
Ces langages sont généralement difficiles à mettre en pratique et donc rarement utilisés.
Langages spécialisés
ABEL, langage pour la programmation électronique des PLD
CDuce, langage fonctionnel d'ordre supérieur pour la manipulation de documents au
format XML.
Forme de Backus-Naur (BNF), formalisation des langages de programmation
PROMELA, langage de spécification de systèmes asynchrones
VRML, description de scènes en trois dimensions
Langages synchrones
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 ou de fraisage…
Nyquist est un langage de synthèse et d'analyse sonore. Pure Data est un logiciel de création musicale
graphique qui repose sur un langage de programmation procédural.
Performances
Six chercheurs de trois universités portugaises ont mené une étude comparative de 27 langages de
programmation, intitulée « Energy Efficiency Across Programming Languages ». Ils ont étudié la
consommation d'énergie, le temps d'exécution et l'utilisation de la mémoire. Pour obtenir un ensemble de
programmes comparables, les chercheurs ont exploré le Computer Language Benchmarks Game (CLBG).
Le tableau obtenu présente les résultats globaux (en moyenne) pour la consommation d'énergie (Energy), le
temps d'exécution (Time) et la consommation maximale de la mémoire (Mb) normalisés par rapport au
langage le plus efficace pour le critère mesuré.
33
33
Les cinq meilleurs langages sont :
Popularité
La popularité de chaque langage est difficilement quantifiable ; néanmoins, il existe l'index TIOBE, calculé
mensuellement, qui se base sur le nombre de formations/cours destinée aux ingénieurs et le nombre de
revendeurs/free-lance spécialisés dans un langage de programmation. C'est une information parcellaire mais
qui peut donner un ordre d'idée sur les tendances en matière de préférence des programmeurs.
Langage machine
Chaque appareil informatique a un ensemble d'instructions qui peuvent être utilisées pour effectuer des
opérations. Les instructions permettent d'effectuer des calculs arithmétiques ou logiques, déplacer ou copier
des données, ou bifurquer vers l'exécution d'autres instructions. Ces instructions sont enregistrées sous
forme de séquences de bits, où chaque séquence correspond au code de l'opération à effectuer et aux
19
opérandes, c'est-à-dire aux données concernées ; c'est le langage machine .
La traduction s'effectue en plusieurs étapes. En premier lieu, le traducteur effectue une analyse lexicale où il
identifie les éléments du langage utilisés dans le programme. Dans l'étape suivante, l'analyse syntaxique, le
traducteur construit un diagramme en arbre qui reflète la manière dont les éléments du langage ont été
combinés dans le programme, pour former des instructions. Puis, lors de l'analyse sémantique, le traducteur
détermine s'il est possible de réaliser l'opération et les instructions qui seront nécessaires dans le langage
20
cible .
Dans le langage de programmation assembleur, des mots aide-mémoire (mnémonique) sont utilisés pour
référer aux instructions de la machine. Les instructions diffèrent en fonction des constructeurs et il en va de
même pour les mnémoniques. Un programme assembleur traduit chaque mnémonique en la séquence de
21
bits correspondante .
Notes et références
1. (en) Maurizio Gabbrielli et Simone Martini, Programming Languages: Principles and
Paradigms, Springer, 2010 [détail des éditions] (ISBN 9781848829138)
2. (en) Kenneth C. Louden et Kenneth A. Lambert, Programming Languages: Principles and
Practices, Cengage Learning, 2011 [détail des éditions] (ISBN 9781111529413)
3. (en) William Sims Bainbridge, Berkshire Encyclopedia of Human-computer Interaction, vol. 2,
Berkshire Publishing Group LLC, 1994 [détail des éditions] (lire en ligne (http://www.interacti
on-design.org/printerfriendly/encyclopedia/human_computer_interaction_hci.html))
4. (en) David Anthony Watt et William Findlay, Programming Language Design Concepts, John
Wiley & Sons, 2004 (ISBN 9780470853207)
5. Marcel Cori et Jean-Marie Marandin, « La linguistique au contact de l'informatique : de la
construction des grammaires aux grammaires de construction », Histoire Épistémologie
Langage, vol. 23, no 1,2001, p. 49–79
(DOI 10.3406/hel.2001.2817 (https://dx.doi.org/10.3406/hel.2001.2817), lire en ligne (https://w
ww.persee.fr/doc/hel_0750-8069_2001_num_23_1_2817), consulté le 13 octobre 2020)
6. Premiers pas vers une ontologie générale des programmes informatiques, Pascal Lando,
Frédéric Fürst, Gilles Kassel et Anne Lapujade, "18es Journées Francophones d'Ingénierie
des Connaissances, Grenoble : France (2007)", voir section 3.2 (http://hal.archives-ouvertes.f
r/docs/00/51/02/81/PDF/Lando_FA_rst_Kassel_Lapujade.pdf) La première catégorie de
langages informatiques est celle des langages informatiques généralistes (anglais : general
purpose computer languages), c’est-à-dire les langages Turing-complets... Les langages de
programmation (anglais : programming languages), ou langages de haut niveau, sont tous
les langages généralistes
7. (en) Seema Kedar, Programming Paradigms And Methodology, Technical Publications, 2002
[détail des éditions] (ISBN 9788184312966)
8. (en)I. T. L. Education Solutions Limited, Introduction To Information Technology, Pearson
Education India, 2005 (ISBN 9788177581188)
9. (en)R. J. Barlow et A. R. Barnett, Computing for Scientists: Principles of Programming with
Fortran 90 and C++, John Wiley and Sons, 1998 (ISBN 9780471955962)
10. (en) Seema Kedar et Sanjay Thakare, Principles of Programming Languages, Technical
Publications, 2009 [détail des éditions] (ISBN 9788184315776)
11. (en)ADA Programming, Tyrarex Press (ISBN 9781449991999)
12. (en)Krishnamurthy, Data Structures Using C, Tata McGraw-Hill Education, 2008
(ISBN 9780070669192)
13. ,Arvind Kumar Bansal, Introduction to Programming Languages, CRC Press - 2013
(ISBN 9781466565142)
14. (en) Jana, Java And Object-Oriented Programming Paradigm, PHI Learning Pvt. Ltd., 2008
[détail des éditions] (ISBN 9788120327757)
15. « Le modèle d’architecture de von Neumann (https://interstices.info/le-modele-darchitecture-d
e-von-neumann/) », sur interstices.info (consulté le 13 octobre 2020)
16. Une machine abstraite pour le paradigme fonctionnel peut être la machine de Krivine.
17. Si l'on est dans du fonctionnel pur ou dans du logique pur.
18. Dans le cadre de l'appel par nécessité, l'explication qui suit est sommaire.
19. (en) D.A. Godse et A.P. Godse, Computer Architecture & Organisation, Technical
Publications, 2007 (ISBN 8184317719)
20. Dhamdhere, Systems Programming and Operating Systems, Tata McGraw-Hill Education,
2011 (ISBN 9780074635797)
21. (en)Tmh, Computer Science Vii (Tn), Tata McGraw-Hill Education, 2007
(ISBN 9780070668034)
22. (en)Michael L. Scott, Programming Language Pragmatics, Morgan Kaufmann, 2009
(ISBN 9780123745149)
23. (en)Ian Griffiths, Matthew Adams, .Net Windows Forms in a Nutshell, O'Reilly Media, Inc.,
2003 (ISBN 9780596003388)
24. (en)Raghavan, Prin Of Compiler Design, Tata McGraw-Hill Education, 2010
(ISBN 9780070144712)
25. (en)Diomidis Spinellis et Georgios Gousios, Beautiful Architecture: Leading Thinkers Reveal
the Hidden Beauty in Software Design, O'Reilly Media Inc., 2009 (ISBN 9780596517984)
26. (en)Chris Smith, Programming F#, O'Reilly Media, Inc., 2009 (ISBN 9780596153649)
27. (en)Jeff Friesen, Geoff Friesen, Java 2 by Example, Que Publishing, 2002
(ISBN 9780789725936)
28. (en)Harold Davis, Visual Basic 6 Secrets, Harold Davis, 1998 (ISBN 9780764532238)
29. (en)Brent B. Welch, Ken Jones, Jeffrey Hobbs, Practical Programming in Tcl and Tk, Prentice
Hall Professional, 2003 (ISBN 9780130385604)
30. (en)Sibsankar Haldar, Alex A. Aravind, Operating Systems,Pearson Education India - 2010,
(ISBN 9788131730225)
31. (en)Amit Singh, Mac OS X Internals: A Systems Approach, Addison-Wesley Professional,
2007 (ISBN 9780321278548)
32. (en)Kishori Sharan, Harnessing Java 7: A Comprehensive Approach to Learning Java 7,
Kishori Sharan, 2011 (ISBN 9781466244641)
33. Programmation : une étude révèle les langages les plus voraces en énergie (https://program
mation.developpez.com/actu/253829/Programmation-une-etude-revele-les-langages-les-plu
s-voraces-en-energie-Perl-Python-et-Ruby-en-tete-C-Rust-et-Cplusplus-les-langages-les-plu
s-verts/)
Voir aussi
Sur les autres projets Wikimedia :
langage de programmation,
sur le Wiktionnaire (thésaurus)
Langage de programmation,
sur Wikiversity
Langage de programmation,
sur Wikibooks
Articles connexes Il existe une catégorie consacrée à ce
sujet : Langage de programmation.
Liste de langages de programmation
Identificateur
Turing-complet
Liens externes
(en)Chronologie des langages de programmation (http://oreilly.com/news/graphics/prog_l
ang_poster.pdf)