Cours
Il existe de très nombreux langages de programmation différents. Chaque langage a ses particularités propres, mais certaines ressemblances peuvent également être observées.
Voici un arbre généalogique des principaux langages, tiré des documents d’accompagnement du programme de première :
1. Popularité des principaux langages
L’entreprise néerlandaise TIOBE propose un indice de popularité des principaux langages de programmation. Voici comment cet indice est présenté sur son site :
L’indice TIOBE Programming Community est un indicateur de la popularité des langages de programmation. L’indice est mis à jour une fois par mois. Les évaluations sont basées sur le nombre d’ingénieurs qualifiés dans l’utilisation de chaque langage dans le monde entier, de cours et de fournisseurs tiers. Les moteurs de recherche populaires tels que Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube et Baidu sont utilisés pour calculer les évaluations. Il est important de noter que l’indice TIOBE ne concerne pas le meilleur langage de programmation ou le langage dans lequel la plupart des lignes de code ont été écrites.
L’indice peut être utilisé pour vérifier si vos compétences en programmation sont toujours à jour ou pour prendre une décision stratégique sur le langage de programmation à adopter lorsque vous commencez à construire un nouveau système logiciel. La définition de l’indice TIOBE peut être trouvée ici.
Voici le classement des dix premiers langages selon l’indice TIOBE en septembre 2023 et le graphique de son évolution :
2. Différentes implémentations d’un même algorithme
Pour découvrir et comparer quelques langages de programmation, nous allons nous intéresser à l’algorithme suivant dont l’objet est de tester si un nombre entier positif \(n\) donné en argument est premier ou non. On procède pour cela en testant la divisibilité par les entiers inférieurs ou égaux à \(\sqrt{n}\). Si \(n\) ne possède aucun diviseur (autre que 1) inférieur ou égal à \(\sqrt{n}\), alors \(n\) est premier.
L’algorithme représenté ci dessous (on traite directement le cas \(n=2\) et on élimine tous les multiples de 2):
Fonction is_prime(n)
Début
Si n = 2, Alors
Retourne Vrai
FinSi
Si n < 2 ou 2 divise n, Alors
Retourne Faux
FinSi
Pour k variant de 3 à la partie entière de racine_carrée(n), avec un pas de 2, Faire
Si k divise n, alors
Retourne Faux
FinSi
FinPour
Retourne Vrai
Fin
Voici maintenant sa traduction dans quelques langages de programmation. À chaque fois, nous avons essayé de suivre au plus près la structure de programmation de l’algorithme en pseudo-code. Dans chaque exemple, une fonction est définie, puis elle est exécutée pour vérifier que le nombre 37 est premier. Le résultat est affiché à l’écran.
Python
Langage Python
from math import sqrt
def is_prime(n):
if n == 2:
return True
if n < 2 or n % 2 == 0:
return False
for k in range(3, int(sqrt(n))+1, 2):
if n % k == 0:
return False
return True
print(is_prime(37)
C, C++
Dans le script ci-dessous, écrit en C, on retrouve le même algorithme. Le code fonctionne en C ou en C++ (on peut considérer que C est un sous-ensemble de C++). Cliquer ici pour tester ce code en ligne :
Langage C
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool is_prime(unsigned int n)
{
unsigned int k;
if (n == 2) return true;
if (n < 2 || n % 2 == 0) return false;
for (k = 3; k <= sqrt(n) + 1; k += 2)
if (n % k == 0) return false;
return true;
}
int main()
{
unsigned int number = 91;
bool result = is_prime(number);
if (result)
("%u est un nombre premier.\n", number);
printfelse
("%u n'est pas un nombre premier.\n", number);
printf
return 0;
}
C#
La même chose en C# Cliquer ici pour tester ce code en ligne :
Langage C#
using System;
class Program
{
static bool is_Prime(int n)
{
if (n == 2) return true;
if (n < 2 || n % 2 == 0) return false;
for (int k = 3; k <= Math.Sqrt(n) + 1; k += 2)
if (n % k == 0) return false;
return true;
}
static void Main()
{
int number = 91;
bool result = is_Prime(number);
if (result)
.WriteLine($"{number} est un nombre premier.");
Consoleelse
.WriteLine($"{number} n'est pas un nombre premier.");
Console
// Attendre une saisie pour que la console ne se ferme pas immédiatement
.ReadLine();
Console}
}
Java
Passons à Java Cliquer ici pour tester ce code en ligne :
Langage Java
class PrimeTest {
static boolean isPrime(int n) {
if (n == 2) return true;
if (n < 2 || n % 2 == 0) return false;
for (int k = 3; k <= Math.sqrt(n) + 1; k += 2)
if (n % k == 0) return false;
return true;
}
public static void main(String[] args) {
int number = 37;
boolean result = isPrime(number);
if (result)
System.out.println(number + " est un nombre premier.");
else
System.out.println(number + " n'est pas un nombre premier.");
}
}
Javascript
Voici maintenant un peu de Javascript Cliquer ici pour tester ce code en ligne :
Langage Javascript
function is_prime(n) {
if (n == 2) {
return true;
else if ((n < 2) || (n % 2 == 0)) {
} return false;
else {
} for (var k = 3; k <= Math.sqrt(n); k += 2) {
if (n % k == 0)
return false;
}return true;
}
}
console.log(is_prime(37))
Basic
En Basic (version visual Basic) Cliquer ici pour tester ce code en ligne :
Langage Visual Basic
Module MainModule
Function is_prime(n As Integer) As Boolean
If n = 2 Then
True
is_prime = Or n Mod 2 = 0 Then
ElseIf n < 2 False
is_prime = Else
True
is_prime = For k = 3 To CInt(Math.Sqrt(n)) + 1 Step 2
If n Mod k = 0 Then
False
is_prime = For
Exit End If
Next
End If
End Function
Sub Main()
Dim number As Integer = 37
Dim result As Boolean = is_prime(number)
If result Then
" est un nombre premier.")
Console.WriteLine(number & Else
" n'est pas un nombre premier.")
Console.WriteLine(number & End If
' Attendre une saisie pour que la console ne se ferme pas immédiatement
Console.ReadLine()End Sub
End Module
Fortran
En Fortran Cliquer ici pour tester ce code en ligne :
Langage Fortran
PROGRAM Main
IMPLICIT NONE
LOGICAL :: result
INTEGER :: number
= 91
number result = is_prime(number)
IF (result) THEN
WRITE(*, *) number, " est un nombre premier."
ELSE
WRITE(*, *) number, " n'est pas un nombre premier."
END IF
CONTAINS
FUNCTION is_prime(n)
LOGICAL :: is_prime
INTEGER, INTENT(IN) :: n
INTEGER :: k
IF (n == 2) THEN
= .TRUE.
is_prime ELSE IF (n < 2 .OR. MOD(n, 2) == 0) THEN
= .FALSE.
is_prime ELSE
= .TRUE.
is_prime DO k = 3, INT(SQRT(REAL(n))) + 1, 2
IF (MOD(n, k) == 0) THEN
= .FALSE.
is_prime EXIT
END IF
END DO
END IF
END FUNCTION is_prime
END PROGRAM Main
Pascal
En Pascal Cliquer ici pour tester ce code en ligne :
Langage Pascal
program PrimeTest;
function is_prime(n: integer): boolean;
var
integer;
k: begin
if n = 2 then
true
is_prime := else if (n < 2) or (n mod 2 = 0) then
false
is_prime := else begin
true;
is_prime := 3;
k := while k <= trunc(sqrt(n)) + 1 do begin
if n mod k = 0 then begin
false;
is_prime := exit;
end;
2;
k := k + end;
end;
end;
var
integer;
number: boolean;
result: begin
91;
number :=
result := is_prime(number);
if result then
' est un nombre premier.')
writeln(number, else
' n''est pas un nombre premier.');
writeln(number,
readln;end.
OCaml
Pour finir, en OCaml Cliquer ici pour tester ce code en ligne :
Langage OCaml
let is_prime n =
if n = 2 then true
else if n < 2 || n mod 2 = 0 then false
else begin
let reponse = ref true in
for k = 3 to 1 + int_of_float (sqrt (float_of_int n)) do
if n mod k = 0 then
false
reponse := done;
!reponseend
;;
let () =
let number = 91 in
let result = is_prime number in
if result then
Printf.printf "%d est un nombre premier.\n" number
else
Printf.printf "%d n'est pas un nombre premier.\n" number
;;
Notre langage d’étude est Python. Repérer, dans les dix programmes ci-dessous des points communs et des différences. Vous présenterez vos résultats dans un tableau et vous effectuerez ce travail en présentant brièvement chacun des langages cités (date de création, domaine d’application, …).
Compléments
- Le site RosettaCode.org propose un très grand nombre d’algorithmes traduits dans un très grand nombre de langages. Les programmes présentés ici en sont inspirés, avec quelques modifications.
- La page Wikipedia “Hello, World!” program présente le fameux programme affichant la phrase “Hello, World!” à l’écran dans de très nombreux langages de programmation.