Quelle alternative à C++

Quel langage est le meilleur candidat pour remplacer C++ après 35 ans d'existence et des millions de crashes dus à sa syntaxe peu sûre?

Un successeur à C++ doit produire des applications très rapides et du code fonctionnant sur toutes les plateformes. Mais on peut aussi parler de succession pour un langage qui reprend exactement la syntaxe de C, ajoute des classes et apporte des fonctions plus évoluées. Un C++ moderne donc, même s'il n'est pas destiné à le remplacer partout.

Vala (2002)

Disponible sur le site de Gnome, ressemble à une démonstration de GObject, écrit par la même équipe. Vala remplace C++ sur la plateforme Gnome.

Caractéristiques:

Exemple simple:

int main () {      
   print ("Hello World\n");         
   return 0;  
}

Classe:

class Hello : Object {      
    void bye () {          
          stdout.printf ("Hello World\n");     
    }  
} 
   
var example = new Hello ();
example.bye(); 

De nombreux programmes ont été écrit en Vala, mais même s'il peut s'utiliser en dehors de l'environnement Gnome, il l'est essentiellement en combinaison avec GTK. Leprojet est toujours actif en 2022 avec un nouveau site web, vala.dev.

D (2001)

Conçu comme alternative à C++ avec des simplifications, notamment les tableaux dynamiques.

Exemple simple:

import std.stdio;     

void main()  {     
    writeln("Hello World!);
}

Classe:

class Hello  {
  char[] content;
  this(char[] str)   {        // constructeur 
    content = str;
  }

 void display()  { 
   writeln(content);      
 }
}

Hello hello = new Hello("Hello World!");

C# (2000)

Depuis la plateforme Roslyn, disponible sur GitHub, C# peut être compilé en langage machine plutôt qu'en bytecode, et il peut accéder aux ressources systèmes, donc même si à l'origine c'était une alternative à Java, il devient un remplaçant possible à C++ pour les applications ou le garbage collector n'est pas un inconvénient.

Caractéristiques:

Exemple simple:

void Main() {
    Console.WriteLine("Hello, World!");     
}

Classe:

public Class Point : Shape {
   public int x, y;
   Point(int x, int y) {
      this.x = x; 
      this.y = y;
   }
   public void move(int w, int h) {
      this.x += x;
      this.y += h;
   }
}

Point p = new Point(0,0);
p.move(100,50);

Dart (2013)

Conçu comme alternative à JavaScript avec la syntaxe de C, ce n'est pas un langage système, mais il remplace C++ pour la création de scripts sur le serveur ou le bureau avec une vitesse d'exécution proche de celle d'Asm.js.

Exemple simple:

void main() {    
   print('Hello World!');  
}

Classe:

class Point {
   num x, y;
   Point(this.x, this.y);   // constructeur
   void move(num xo, num yo) {     
     x += xo;
     y += yo;
  }
}

var p = new Point(0, 0);
p.move(100, 50);

Autres langages

D'autres langages sont aussi dérivés de C ou ont une vocation de remplacer C++ comme langage système.

Finalement, quel successeur pour C ou C++? Si l'on se base sur le classement des langages par popularité, aucun pour le moment! C reste le langage le plus utilisé et C++ se tient en troisième place, après Java et avant C#.
La tendance qui se dessine est qu'un ensemble de langages, chacun dans un domaine spécifique, jeu, application Web, scripting, etc... peuvent très bien ensemble remplacer C++, un langage universel que l'on ne peut remplacer partout par un unique langage. Cela donne son seul réel avantage à la syntaxe dérivée de C: le programmeur peut passer plus facilement d'un langage à l'autre pour réaliser des types d'applications différentes.

Langages de programmation et de données Asm.js - Basic - C - C++ - C# - Dart - Eiffel - Go - Java - JavaScript - Julia - Pascal - PHP - Python - Prolog - Ruby - Scala - Scriptol - Swift - TypeScript - HTML - Wasm - XML - XAML - SQL