« Informatique au lycée/Programmation et langages » : différence entre les versions

Contenu supprimé Contenu ajouté
Jcbach (discussion | contributions)
Jcbach (discussion | contributions)
→‎Évolution des langages informatiques : ajout de la parite évolution des langages
Ligne 15 :
 
==Évolution des langages informatiques==
On distingue aujourd'hui cinq générations de langages.
La '''première génération''' est le langage machine, ou code machine. On parle aussi de langage natif. Il est composé d'instructions et de données à traiter codées en binaire. C'est le seul langage qu'un ordinateur peut traiter directement. Voici à quoi peut ressembler un programme en langage machine :
<source lang="bash">
A1 01 10 03 06 01 12 A3 01 14
</source>
 
Il s'agit de la représentation hexadécimale d'un programme permettant d'additionner les valeurs de deux cases mémoire et de stocker le résultat dans une troisième case. On voit immédiatement la difficulté d'un tel langage.
 
La '''deuxième génération''' est le langage assembleur : le code devient lisible et compréhensible par un plus grand nombre d'initiés. Il existe en fait un langage assembleur par type de processeur.
Le programme précédent écrit en assembleur donnerait ceci :
<source lang="asm">
MOV AX, [0110]
ADD AX, [0112]
MOV [0114], AX
</source>
Il reste utilisé dans le cadre d'optimisations, mais a été supplanté en popularité par les langages plus accessibles de troisième génération.
 
La '''troisième génération''' utilise une syntaxe proche de l'anglais. Proposés autour de 1960, ces langages ont permis un gain énorme en lisibilité et en productivité. Ils ne dépendent plus du processeur, comme c'était le cas des générations précédentes, mais d'un compilateur spécifique du processeur. L'idée de portabilité des programmes était lancée.
La plupart des langages de programmation actuels sont de troisième génération. On trouve dans cette catégorie tous les grands langages : [[w:Ada_(langage)|Ada]], [[w:ALGOL|Algol]], [[w:BASIC|Basic]], [[w:COBOL|Cobol]], [[w:Eiffel_(langage)|Eiffel]], [[w:Fortran|Fortran]], [[w:C_(langage)|C]], [[w:C++|C++]], [[w:Java_(langage)|Java]], [[w:Perl_(langage)|Perl]], [[w:Pascal_(langage)|Pascal]], [[w:Python_(langage)|Python]], [[w:Ruby|Ruby]], ... Cette génération couvre d'ailleurs tant de langages qu'elle est souvent subdivisée en catégories, selon le paradigme particulier des langages.
 
Les langages de '''quatrième génération''', abrégés L4G, souvent associée à des bases de données, se situent un niveau au-dessus, en intégrant la gestion de l'interface utilisateur et en proposant un langage moins technique, plus proche de la syntaxe naturelle.
Ils sont conçus pour un travail spécifique : gestion de base de données (Microsoft Access, [[w:SGL|SQL]]), production graphique ([[w:Postscript|Postscript]]), création d'interface (4D).
 
La '''cinquième génération''' de langages sont des langages destinés à résoudre des problèmes à l'aide de contraintes, et non d'algorithmes écrits. Ces langages reposent beaucoup sur la logique et sont particulièrement utilisés en intelligence artificielle. Parmi les plus connus, on trouve [[w:Prolog|Prolog]], dont voici un exemple :
<source lang="prolog">
frère_ou_soeur(X,Y) :- parent(Z,X), parent(Z,Y), X \= Y.
parent(X,Y) :- père(X,Y).
parent(X,Y) :- mère(X,Y).
mère(trude, sally).
père(tom, sally).
père(tom, erica).
père(mike, tom).
</source>
Il en résulte que la demande suivante est évaluée comme vraie :
<source lang="prolog">
?- frère_ou_soeur(sally, erica).
oui.
</source>
Ce qui signifie que Sally et Erica sont sœurs. En effet, Sally et Erica ont le même père (Tom).
 
==Quelques langages courants==