Le RAII c'est bien mais ça ne résout pas tout, comme les références par ailleurs.
Le soucis en C++ c'est qu'il est facile d'écrire du C++ salement, à la C with class. Tu n'as aucun moyen de garantir que dans telle partie du code tout est écrit parfaitement. Cela demande une grande rigueur d'écriture et de conception.
Rust te force à faire ce travail car le compilateur te prévient quand ce n'est pas sûr.
De la même manière que Rust qui est vendu comme panacée si souvent, mais en dehors du multi-thread
Sachant que 50-70% des problèmes de sécurité et beaucoup de bogues par ailleurs dans les grands projets sont liés à des classes d'erreur que Rust peut détecter à la compilation, ce n'est pas un détail comme amélioration.
Ce n'est pas parfait, ne conviendra pas forcément à tout les cas d'usage, mais on ne peut nier son intérêt.
et que C, C++, ADA, pascal... étaient rapides mais inutilisables pour écrire du code correct (clairement faux, bien que C (et peut-être pascal? qui garde l'avantage d'avoir des chaînes de caractères à la taille connue dès le début, contrairement au C) requiert effectivement un plus grande concentration pour ce résultat.
Mais en pratique on voit qu'aucun projet d'envergure n'arrive à avoir 0 problèmes de mémoire avec du code en C ou C++, malgré les années, malgré des développeurs expérimentés. Ce n'est pas un problème de compétence ou de concentration, c'est un problème de conception : c'est inhumain d'être parfait tout le temps dans des projets si complexes.
Quand je vois le nombre de crash par memory leak & oom-killer de firefox sur mon système, ça me laisse vraiment, vraiment songeur. Rust a été inventé littéralement pour firefox, et pourtant?
Sauf que le C++ et JavaScript représentent au moins 75% du code de Gecko (le moteur de rendu de Firefox), Rust n'est utilisé que sur une petite partie pour l'instant.
Firefox entièrement en Rust ce ne sera pas avant très longtemps et d'ici là les problèmes de mémoire auront toujours lieu.
[^] # Re: Mouais...
Posté par Renault (site web personnel) . En réponse au lien [The Register] To kill memory safety bugs in C code, try the TrapC fork. Évalué à 6.
Le RAII c'est bien mais ça ne résout pas tout, comme les références par ailleurs.
Le soucis en C++ c'est qu'il est facile d'écrire du C++ salement, à la C with class. Tu n'as aucun moyen de garantir que dans telle partie du code tout est écrit parfaitement. Cela demande une grande rigueur d'écriture et de conception.
Rust te force à faire ce travail car le compilateur te prévient quand ce n'est pas sûr.
Sachant que 50-70% des problèmes de sécurité et beaucoup de bogues par ailleurs dans les grands projets sont liés à des classes d'erreur que Rust peut détecter à la compilation, ce n'est pas un détail comme amélioration.
Ce n'est pas parfait, ne conviendra pas forcément à tout les cas d'usage, mais on ne peut nier son intérêt.
Mais en pratique on voit qu'aucun projet d'envergure n'arrive à avoir 0 problèmes de mémoire avec du code en C ou C++, malgré les années, malgré des développeurs expérimentés. Ce n'est pas un problème de compétence ou de concentration, c'est un problème de conception : c'est inhumain d'être parfait tout le temps dans des projets si complexes.
Sauf que le C++ et JavaScript représentent au moins 75% du code de Gecko (le moteur de rendu de Firefox), Rust n'est utilisé que sur une petite partie pour l'instant.
Firefox entièrement en Rust ce ne sera pas avant très longtemps et d'ici là les problèmes de mémoire auront toujours lieu.