Exposé / Recherches - Diversité et unité des langages de programmation
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 :
- Choisissez un des treize langages de programmation en tête du classement TIOBE ci-dessous (chaque groupe doit choisir un langage différent !).
- En utilisant les informations de cette page, que vous pouvez compléter par des recherches personnelles, préparez un court exposé sur le langage choisi :
- Présentation générale du langage (historique, utilisation, etc.)
- Points forts et faiblesses
- Exemples de code + comparaison avec Python
- Présentez votre exposé à la classe (5 min).
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 fin août 2025 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)
printf("%u est un nombre premier.\n", number);
else
printf("%u n'est pas un nombre premier.\n", number);
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)
Console.WriteLine($"{number} est un nombre premier.");
else
Console.WriteLine($"{number} n'est pas un nombre premier.");
// Attendre une saisie pour que la console ne se ferme pas immédiatement
Console.ReadLine();
}
}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
is_prime = True
ElseIf n < 2 Or n Mod 2 = 0 Then
is_prime = False
Else
is_prime = True
For k = 3 To CInt(Math.Sqrt(n)) + 1 Step 2
If n Mod k = 0 Then
is_prime = False
Exit For
End If
Next
End If
End Function
Sub Main()
Dim number As Integer = 37
Dim result As Boolean = is_prime(number)
If result Then
Console.WriteLine(number & " est un nombre premier.")
Else
Console.WriteLine(number & " n'est pas un nombre premier.")
End If
' Attendre une saisie pour que la console ne se ferme pas immédiatement
Console.ReadLine()
End Sub
End ModuleFortran
En Fortran Cliquer ici pour tester ce code en ligne :
Langage Fortran
PROGRAM Main
IMPLICIT NONE
LOGICAL :: result
INTEGER :: number
number = 91
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
is_prime = .TRUE.
ELSE IF (n < 2 .OR. MOD(n, 2) == 0) THEN
is_prime = .FALSE.
ELSE
is_prime = .TRUE.
DO k = 3, INT(SQRT(REAL(n))) + 1, 2
IF (MOD(n, k) == 0) THEN
is_prime = .FALSE.
EXIT
END IF
END DO
END IF
END FUNCTION is_prime
END PROGRAM MainPascal
En Pascal Cliquer ici pour tester ce code en ligne :
Langage Pascal
program PrimeTest;
function is_prime(n: integer): boolean;
var
k: integer;
begin
if n = 2 then
is_prime := true
else if (n < 2) or (n mod 2 = 0) then
is_prime := false
else begin
is_prime := true;
k := 3;
while k <= trunc(sqrt(n)) + 1 do begin
if n mod k = 0 then begin
is_prime := false;
exit;
end;
k := k + 2;
end;
end;
end;
var
number: integer;
result: boolean;
begin
number := 91;
result := is_prime(number);
if result then
writeln(number, ' est un nombre premier.')
else
writeln(number, ' n''est pas un nombre premier.');
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
reponse := false
done;
!reponse
end
;;
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
;;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.
- On y trouve notamment le fameux programme “Hello, World!” dans de très nombreux langages : Hello, World!.


