C'est sûr ! En termes de jeu, il suffit de regarder Minecraft et de le comparer à Doom3 pour se rendre compte que la perf, ça sert à rien ou alors, c'est juste pour faire joli (ce que n'est pas franchement Minecraft).
D'ailleurs, il y a encore des gens que ça intéresse les perfs dans le domaine des jeux (cf. ce très bon document sur les pièges de la POO).
Je pense que le jeux vidéo est le seule domaine où le C++ a encore un peu sa place. Mais beaucoup de développeurs migrent vert le C#, plus de libraries, plus simple, plus Java-teux.
Doom3 est un très bon moteur. Mais id Tech 3 était écris en C, et ça ne l'a pas empêcher de fonctionner très bien.
Qui plus est, il est difficile de faire monter C++ à l'échelle comparé à Java ou Python. En revanche, pour ce qui est d'une application serveur qui va prendre 100 coup à la seconde, la performance est importante. Mais dans ce cas, il devient difficile de faire monter à l'échelle n'importe quelle application C++.
Tu entends quoi par là ? Références ? Exemples ?
L'exemple que j'ai en tête serait un très gros serveur de messagerie instantanée qui va se prendre des centaines de coup par seconde. Voilà les problème
Je ne peux pas me permettre de mettre ça que sur un seul serveur. Très peu de datacenter peuvent ce permettent de se prendre ce débit en entrée.
Je met donc plusieurs IP dans l'entrée DNS de mon site. Ainsi, vu que les clients vont prendre une entrée au hasard, et donc faire une sorte de round robin.
Met serveurs ont besoin de communiquer entre eux parceque Alice peux se connecter au serveur A pour envoyer un message à bob sur le serveur B.
Ce qui est le plus cher c'est l'attente. Le serveur attend que la requête soit entièrement reçu, ensuite il répond attend que le client réponde qu'il a bien reçu la requete, etc... Utiliser un thread par client est une mauvaise approche ici, il faut utiliser une boucle à évènement. (C'est pour ça que Nginx est beaucoup plus performant qu'Apache)
Bref dans ce cas. Tu va galérer, il te faut de la communication entre tes instance, une approche « asynchrone » au lieu des threads.
Tu peux essayer de t'amuser avec asio. Mais je te souhaite bonne chance, si c'est un projet perso ça peux être fun. En entreprise, utilise Erlang ou Python, l'un le supporte directement dans le langage, l'autre a des librairies très puissantes pour le faire.
Tu vas me dire, ceci est un cas spécifique. C'est vrai, mais c'est l'exemple que j'avais en tête, qui montre que c'est difficile de faire monter à l'échelle C++.
Du coup, si je te comprends, si on veut des perfs pour notre serveur, il faut du C++ mais on ne pourra plus "monter" à l'échelle ? Il n'y a pas de solution alors ? On est condamnés à avoir des serveurs qui gèrent des milliers de connexions mais qui seront lents ?
Non. La solution pour avoir des perfs sur un serveur, c'est de faire monter à l'échelle l'architecture, pas le langage. Même si je n'aime pas Ruby et Java; Python, Erlang, Java et Ruby sont des bonne solutions pour ça. (Python a Tornado et Twisted, Erlang a son système de processus léger, je connais très mal les solutions Java, Ruby a Unicorn que je considère plutôt mauvais tout comme Gunicorn en python.)
Ruby est le résultat d'un gamin qui apprend le Java, puis jette un œil à Perl et se dit « je peux le réparer! »
[^] # Re: nosql embarqué ?
Posté par Ife . En réponse à la dépêche SQLite 3.8.0 : n'ayez pas peur du zéro. Évalué à 0.
Je pense que le jeux vidéo est le seule domaine où le C++ a encore un peu sa place. Mais beaucoup de développeurs migrent vert le C#, plus de libraries, plus simple, plus Java-teux.
Doom3 est un très bon moteur. Mais id Tech 3 était écris en C, et ça ne l'a pas empêcher de fonctionner très bien.
L'exemple que j'ai en tête serait un très gros serveur de messagerie instantanée qui va se prendre des centaines de coup par seconde. Voilà les problème
Bref dans ce cas. Tu va galérer, il te faut de la communication entre tes instance, une approche « asynchrone » au lieu des threads.
Tu peux essayer de t'amuser avec asio. Mais je te souhaite bonne chance, si c'est un projet perso ça peux être fun. En entreprise, utilise Erlang ou Python, l'un le supporte directement dans le langage, l'autre a des librairies très puissantes pour le faire.
Tu vas me dire, ceci est un cas spécifique. C'est vrai, mais c'est l'exemple que j'avais en tête, qui montre que c'est difficile de faire monter à l'échelle C++.
Non. La solution pour avoir des perfs sur un serveur, c'est de faire monter à l'échelle l'architecture, pas le langage. Même si je n'aime pas Ruby et Java; Python, Erlang, Java et Ruby sont des bonne solutions pour ça. (Python a Tornado et Twisted, Erlang a son système de processus léger, je connais très mal les solutions Java, Ruby a Unicorn que je considère plutôt mauvais tout comme Gunicorn en python.)
Ruby est le résultat d'un gamin qui apprend le Java, puis jette un œil à Perl et se dit « je peux le réparer! »