Sous ce titre, qui pourrait provoquer le courroux de certains utilisateurs du langage, Jussi Pakkanen apporte une analyse objective, qui n’est pas dénuée de tout sens. « Avec la sortie de C++ 11, quelque chose d’extraordinaire s’est produit. L’accent mis sur les bibliothèques utilisables, les types et autres subtilités ont transformé conceptuellement C++ en un langage de script », introduit celui-ci.
Pour se situer dans le contexte, Pakkanen estime qu’un langage de script diffère d’un langage compilé comme C par les critères suivants :
- pas de gestion manuelle de la mémoire ;
- la syntaxe et les fonctionnalités complexes expressives peuvent être mises en œuvre en seulement quelques lignes de code ;
- des puissantes fonctions de manipulation de chaines ;
- une grande bibliothèque standard.
Avec C++ 11, toutes ces exigences deviennent réelles pour C++. Pour appuyer ses propos, Pakkanen présente un bout de code permettant de lire toutes les lignes d’un fichier pour les enregistrer dans un fichier différent (cas concret où se démarquent les langages de script).
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include<string> #include<vector> #include<algorithm> #include<fstream> using namespace std; int main(int argc, char **argv) { ifstream ifile(argv[1]); ofstream ofile(argv[2]); string line; vector<string> data; while(getline(ifile, line)) { data.push_back(line); } sort(data.begin(), data.end()); for(const auto &i : data) { ofile << i << std::endl; } return 0; } |
S’il fallait faire la même chose en C, cela devrait prendre beaucoup plus de lignes de code et il serait difficile d’obtenir un résultat pareil, selon Pakkanen. De plus :
- chaque ligne de code est claire, compréhensible et expressive ;
- pas de fuites de mémoire ;
- compilation avec optimisation –O3 proche des performances de Python VM ;
- meilleures performances que n’importe quel langage de script « non-JITted ».
Ces changements n’ont pas pour objectif de faire disparaître les langages de script, ironise Jussi Pakkanen, avant de conclure que « C++ peut désormais être utilisé dans les scénarios pour lesquels le langage n’était pas prévu à la base ».
Source : blog de Jussi Pakkanen
Et vous ?
Qu’en pensez-vous ? C++ 11 fait-il de C++ un langage de script ? Pourquoi ?