Après avoir participé et suivi le concours Google Code Jam de cette année , je n'ai pas pu m'empêcher de remarquer le nombre incroyable de candidats [réussis] qui utilisaient C / C ++ et Java. La répartition des langues utilisées tout au long du concours peut être vue ici .
Après avoir programmé en C / C ++ pendant plusieurs années, je suis récemment tombé amoureux de Python pour sa nature lisible / simple. Plus récemment, j'ai appris des langages fonctionnels comme OCaml, Scheme et même des langages logiques comme Prolog. Ces langages ont certainement leurs mérites et, à mon avis, peuvent être appliqués plus facilement que C ++ et Java dans certaines situations. Par exemple, l'utilisation de l'appel / cc par Scheme simplifie le retour en arrière (un outil nécessaire pour répondre à plusieurs problèmes) et la spécification logique de Prolog, bien qu'inefficace en raison de sa nature de force brute, peut considérablement simplifier (et même résoudre automatiquement) certains problèmes difficiles à résoudre. envelopper son cerveau.
Il est clair qu'un concurrent doit utiliser les outils les mieux adaptés pour relever le défi. Même l'assemblage x86 est Turing complet - cela ne justifie pas de résoudre les problèmes avec lui. Dans ce cas, pourquoi les concurrents qui utilisent des langages moins courants comme Scheme / Lisp, Prolog et même Python ont-ils beaucoup moins de succès que les concurrents qui utilisent C / C ++ et Java? En d'autres termes, pourquoi les candidats retenus n'utilisent-ils pas des langues qui, bien que moins courantes, sont sans doute de meilleurs outils pour le travail?
Il y a plusieurs motivations à ma question. Plus important encore, j'aimerais devenir un meilleur programmeur - à la fois dans l'aspect pratique et dans l'aspect compétition. Après avoir été initié à de si beaux paradigmes comme la programmation fonctionnelle et logique, il est décourageant de voir autant de gens les rejeter au profit de C / C ++ et Java. Cela me fait même remettre en question mon admiration pour ces paradigmes, craignant de ne pas réussir en tant que programmeur Lisp / Scheme / Prolog dans un concours de programmation.