Battledev de RegionJobs : Python vs Java

En mars dernier, j'ai participé à la Battledev de RegionJobs.

Et c'était super fun.

Pour ceux qui ne connaissent pas, c'est une compétition de programmation en ligne, où l'on doit résoudre 5 questions de difficulté croissante en 2 heures.

J'ai eu l'occasion d'y participer avec quelques collègues, et ça a été à la fois un chouette challenge et moment sympa à passer ensemble.

Le 8 novembre prochaine, une nouvelle édition à lieu, alors inscrivez-vous ! J'en serai :)


Toutefois, il y a un petit quelque chose qui m'est resté en travers de la gorge suite à cette battle : pour la dernière question, les solutions étaient de complexité différente selon les langages.

Je m'explique: lors de la BattleDev, chaque participant à le choix de formuler sa réponse dans la langue de son choix. Personnellement, j'ai participé en Python.

En fin de concours, la société Isograd qui a mit en place le challenge révèle des solutions possibles à chaque question. Celles-ci sont disponibles sur cette page: http://www.isograd.com/FR/solutionconcours.php (choisir "Battle Dev RegionsJob - Mars 2016").

Si vous allez y jeter un oeil, vous pourrez constater que selon les langages, la solution de la question 5 est plus ou moins complexe:

Pourquoi ? Je n'ai trouvé aucune justification officielle. Mon hypothèse est la suivante: je pense que les interprêteurs des langages PHP et Python utilisé par Isograd dans son service d'évaluation des réponses sont bien moins performants que ceux pour C# / C++ / Java. Probablement à cause la différence fondamentale entre ces 2 familles de langages : les uns sont compilés, les autres interprétés[1]. Cette limitation impose d'être plus "malin" en terme d'algorithme pour les langages plus lents, d'où le recours à une classe RangeMaxQuery très bien pensée.

Néanmoins, il reste indéniable que les participants étaient fortement favorisés selon le langage choisi.

J'espère sincèrement que la prochaine édition de la BattleDev ne comportera pas ce genre d'inégalités linguistiques.

Animation tirée de The Big Lebowsky


1. Même si en fait un code Python est transcris en bytecode de la même manière qu'en Java.