Je suis critiqué par des développeurs Java, C++, Rust, Go par ce que que j’utilise Javascript comme langage de prédilection pour le développement d’applications dans le domaine du jeu vidéo
Ben déjà, change de fréquentations… On parle certes pour ces langages d’écosystèmes très "tour d’ivoire", assez repliés sur eux-mêmes, mais le monde Rust, s’il a beaucoup de transfuges C++, a aussi une cross-pollination énorme avec le monde JS et je suis surpris que les Rustiens tapent sur JS à ce point ; ça ne doit pas être des vieux de la vieille ou des contributeurs majeurs à l’écosystème, à vue de nez. En tout cas, ces discours sont biaisés, toxiques et contre-productifs.
On critique le fait que Javascript à un typage faible, qu’il est mono thread, que l’éco système JS soit une "blague" dont npm serait une mascarade..
- Typage dynamique, pas faible (erreur courante des gens qui ne jurent que par le statiquement typé). Si ça gêne vraiment, on peut faire du TypeScript et avoir le meilleur des deux mondes.
- Mono-thread : oui et non, on a les workers. Le multi-thread est une solution dégueulasse au problème de la parallélisation, et la majorité des codes multi-threads ont une tonne de problèmes. On préfère un système soit multi-threads à forte isolation (ex. workers) soit multi-processus, mais surtout la perf viendra du fait que le code est non-bloquant, en particulier pour les I/O. C’est pas pour rien que Node est allé rouster la majorité des déploiements Java EE du Fortune 500 et de la plupart des "licornes". L’écosystème Java EE a quelques grosses forces bien à lui, mais la perf' n’en est pas une. D’ailleurs, Rust et Go ont une approche de la concurrence qui n’est pas tellement basée sur les bons vieux threads.
- L'écosystème JS est tout sauf une blague, c’est le plus gros écosystème dev du monde et sa croissance est elle aussi sans comparaison. L’industrialisation de la qualité y est aussi très aboutie, même si évidemment le risque zéro n’existe pas. Certes, npm a de temps en temps un couac, mais au global la valeur ajoutée, tout comme les possibilités de blindage existantes, sont sans équivalent. D’ailleurs, le deuxième écosystème le plus gros / croissant reste Java avec Maven Central, et les problèmes y sont encore plus nombreux.
Bref, que des arguments de mauvaise foi classique, par des gens qui ne connaissent en fait pas réellement le dossier mais préfèrent rester dans leurs citadelles. On n’a pas tous la chance d’avoir une grosse expérience de production sur plusieurs stacks et écosystèmes distincts…
Les devs adorent faire leurs rageux, et c’est multiplié par l’ethos franco-français. L’univers du dev de jeux vidéos en rajoute une couche, avec son éternel concours de b* toxique… En somme, tu n’as pas choisi le meilleur spot** pour trouver des retours et conseils bienveillants et mesurés
Je me retrouve un peu dans l’embarra de ne pas savoir quoi répondre, de ne pas savoir si ils n’auraient pas raison et que je serai donc tout simplement entrain de me planter..
Ils n’ont absolument pas raison ; mais rien n’est jamais tout noir ou tout blanc, et JS n’est pas à ce jour la meilleure techno pour faire un moteur de jeu vidéo. On a eu de belles initiatives de portage 100% JS / asm.js / Wasm de moteurs réputés (Unreal, Unity, etc.) mais pour des tas de raison ces projets n’ont pas abouti (en dépit d’excellents résultats). Tu as néanmoins une tonne de gros moteurs de jeux pur-web commerciaux, de très grande qualité. Et quand on voit la gueule des SDK de la plupart des consoles, on comprend qu’on ne veuille pas y toucher ! Sans parler du besoin de tout recoder pour chaque plate-forme cible.
Il y aura toujours des soft spots pour du Java, du C++, du Go, du Lua, du Rust… mais aussi du JS (qui en a plein, et de plus en plus), du C#, du Ruby, de l’Elixir, et même du Prolog, du Haskell ou du Reason ! Tous les projets n’ont pas les mêmes contraintes ni les mêmes besoins, et la productivité des devs est un facteur critique, ainsi que la portabilité de leurs compétences.
Mon conseil serait, de toutes façons, de ne pas faire l’impasse sur JS. C’est le langage le plus utilisé, le plus répandu (le moins formellement appris et donc le plus mal compris aussi), et dont le champ d’application ne cesse de grandir. Mais ça ne veut pas dire qu’il constitue forcément le choix le plus adapté pour tous les projets, loin de là. On n’est pas encore au stade où faire du jeu vidéo natif sur console ou PC sera pertinent en 100% JS. Et les bindings Lua sont très installés et éprouvés, alors que les bindings JS pour du scripting interne le sont moins.
Ça n’empêche pas Minecraft d’avoir refait toute son UI en React et d’en être extrêmement contents, par exemple.