Histoire de la programmation 3/4 : Performance et polyvalence

Dans les années 70 avec la troisième génération de grands ordinateurs, il fallait inventer un langage de programmation adapté aux nouveaux volumes de donnés, et aux nouvelles performances des machines.

Différents langages de programmation ont été conçus, d’ont un qui a connu un grand succès jusqu’à aujourd’hui, sous sa forme originale le langage C, ou sous ses formes améliorées, dont C++, et dans une certaine manière Java.  

Le langage C 

Le langage C est apparu au cours de l’année 1972 dans les laboratoires de l’entreprise  

Bell . Il était développé par Dennis Ritchie et Ken Thompson pour permettre de créer et de maintenir le système d’exploitation UNIX car, à l’époque, aucun autre langage que l’assembleur (qui n’est pas pratique du tout) n’était capable de cela. 

C’est aujourd’hui l’un des langages les plus utilisés par les programmeurs : on le retrouve en quantité dans LinuxWindows et de très nombreux autres logiciels. 

Deux caractéristiques intéressantes du C : la variable i (celle qui contient le nombre) doit être déclarée à l’avance ; enfin, un bloc d’instructions (ici une boucle for) est délimité par des crochets. Le point-virgule, lui, sert à terminer une instruction.
Dans la boucle, printf sert à insérer du texte, ici le traditionnel « Hello, world ! » ; y a été ajouté un \n pour faire un retour à la ligne. 

Voici un exemple de C: 

#include <stdio.h>  

main()  
  int n, c;  
   printf("Enter a number\n"); 
   scanf("%d", &n);  
   if ( n == 2 ) 
     printf("Prime number.\n"); 
   else    
  {        
    for ( c = 2 ; c <= n - 1 ; c++ ) 
    {            
       if ( n % c == 0 ) 
         break; 
    } 
    if ( c != n )           
       printf("Not prime.\n");   
    else 
       printf("Prime number.\n"); 
  } 
  return 0; 
} 

 

Ici les variables n, c sont avec un type : ce sont des nombres entiers (int). 

Retour à l’histoire familiale : ma mère a commencé à travailler à la banque en programmant des logiciels en C.  

C++: 

Le langage C++ est une version modifiée du langage C. Il a été inventé par Bjarne Stroustrup entre 1979 et 1983. Comme les inventeurs du C, Bjarne Stroustrup travaillait chez Bell. 

Un code en langage C est très souvent valide en C++. On peut par contre utiliser des constructions en C++ qui n’existent pas en C. 

Le C++ est utilisé par beaucoup de programmeurs. Cependant, il est très compliqué d’apprendre tout ce qu’il permet de faire de plus que le C, même avec plusieurs années d’expérience. 

#include <iostream> 
using namespace std; 
class Rectangle { 
     int width;  
     int height; 
  public: 
     void set_values (int x, int y) { 
        width = x; 
        height = y;     
     } 
     int area() { 
       return width*height; 
     } 
}; 
int main () { 
   Rectangle rectOne; 
   Rectangle rectTwo;
   rectOne.set_values (3,4); 
   cout << "area rectangle one: " << rectOne.area(); 
   rectTwo.set_values (5,7); 
   cout << "area rectangle two: " << rectTwo.area(); 
   return 0; 
} 

Ce programme calcule l’aire d’un rectangle en multipliant les deux côtés. 

On peut voir un nouveau type d’information défini par ce programme : la forme rectangle.  Puis le programme principal crée deux rectangles et indique leurs dimensions (le premier rectangle mesure 3-4 cm et le second 5-7cm). Puis il leur demande à chacun leur surface.  

Ça permet de concevoir facilement des programmes complexes : dans des jeux compliqués (comme GTA, Minecraft), il y aurait beaucoup de types d’informations (cubes, rectangle, personnage, etc.), et des millions de cubes, de personnages et de rectangles différents  manipulés dans le jeu. 

Retour à l’histoire familiale : mon père a commencé sa carrière en programmant en C++. 

Java: 

Le langage Java est apparu en 1995. Il a été inventé par James Gosling et Patrick Naughton, qui travaillaient alors pour l’entreprise Sun Microsystems. 

À première vue, il ressemble beaucoup au langage C++ (et donc au langage C), ce qui est normal car il s’en inspire. En fait, il y a énormément de différences entre les deux. 

Un des objectifs de Java était de permettre de créer des programmes qui fonctionnent sur tous les ordinateurs. C’est quelque chose qui n’est pas facile à faire avec du C++, par exemple. Pour cela, les programmes écrits en Java ne sont pas traduits directement en langage machine. Un logiciel, la machine virtuelle, se charge d’exécuter le programme à la place de l’ordinateur. Comme cela ralentit l’exécution, Java ne peut pas être utilisé lorsque la vitesse est très importante. 

Le Java est utilisé par de très nombreux programmeurs et dans beaucoup d’entreprises. 

Un jeu très connu codé en Java est Minecraft ! 

Attention, Java et JavaScript, dont je parlerai dans la partie suivante, sont deux langages différents, qui ne se ressemblent que par leur nom ! 

Voici un exemple de code Java : 

public class PrimeEx { 
    public static void main(String[] args) { 
        System.out.println("54161329 : " + isPrime(54161329) + " (expect false)"); 
        System.out.println("1882341361 : " + isPrime(1882341361) + " (expect true)"); 
        System.out.println("2 : " + isPrime(2) + " (expect true)"); 
    } 
    // pre: num >= 2 
    public static boolean isPrime(int num) { 
        assert num >= 2 : "failed precondition. num must be >= 2. num: " + num; 
        final double LIMIT = Math.sqrt(num); 
        boolean isNumPrime = (num == 2) ? true : num % 2 != 0; 
        int div = 3; 
        while(div <= LIMIT && isNumPrime ) { 
            isNumPrime = num % div != 0; 
            div += 2; 
        } 
        return isNumPrime ; 
    } 
} 

On voit bien avec cet exemple que ça ressemble beaucoup à C++. 

Mes deux parents ont participé à des projets Java et je suis déjà allé deux fois à la fête du Java User Group de Luxembourg avec mon père. On y a présenté en 2015 la programmation de, et dans, Minecraft en Java comme j’en ai parlé dans mon Blog (http://wollef.org/fr/minecraft_luxembourg_yajug/).