Haskell est-il un langage approprié pour une programmation compétitive?

Toutes les autres réponses ici mal interprètent la question. La programmation compétitive fait référence à un type spécifique de sport où une personne ou une équipe doit résoudre autant de problèmes, de nature algorithmique ou mathématique, de manière opportune et efficace. Les concours tels que le concours ICFP ne relèvent généralement pas de cette catégorie. Cela étant dit, ma réponse serait oui pour 3 raisons principales. Tout d’abord, la vitesse de mise en œuvre de Haskell est assez rapide et c’est un facteur majeur dans ces types de compétitions. Deuxièmement, Haskell vous permet d’effectuer des tâches, en particulier des tâches de nature mathématique, assez succinctement, ce qui est un grand facteur de motivation à utiliser dans ces compétitions. Enfin, des programmeurs compétitifs de classe mondiale, tels que Reid Barton et Tomek Czajka, ont utilisé divers concours de codage de Haskell. Reid s’est classé 3e au monde dans Google Code Jam une fois avec lui, et Tomek l’a utilisé jusqu’au tour 2 de l’édition de cette année, je crois. Donc, en un mot, oui si vous êtes à l’aise avec cela, Haskell convient à une programmation compétitive.

Je dirai non.

Il est facile d’écrire rapidement du code correct dans Haskell, car il a cette élégance élégante. Mais ce code sera probablement trop lent. Vous devrez donc l’optimiser, et cette élégante élégance disparaîtra, et il sera plus difficile à optimiser car tant de détails d’implémentation sont sous le capot, alors qu’ils sont exposés et faciles à modifier en C ++.

C’est un mauvais exemple de ce que Haskell peut faire. Dans le monde réel, vous n’aurez qu’à optimiser fortement une petite fraction de la base de code, qui peut être faite à peu près aussi vite que C ++. Le reste bénéficiera de cette élégance et le projet sera assez grand pour en avoir besoin.

Si vous voulez rivaliser en utilisant un langage fonctionnel, essayez Python, car il est beaucoup plus facile de revenir au style impératif si nécessaire.

Comme il a été noté deux fois, la réponse dépend de la compétition, et je vais m’étendre un peu sur les types de compétitions qui sont bonnes pour Haskell.

Tout d’abord, Haskell n’est toujours pas le meilleur langage pour le calcul des nombres et le calcul haute performance. Si la concurrence porte sur la mise en œuvre la plus rapide d’un algorithme bien connu ou sur la parallélisation de style HPC et la propagation d’un problème numérique, j’irais avec C ++. C’est exactement ce que nous avons fait pour un concours Intel.

Un autre type de concours qui ne convient pas exactement à Haskell est celui où vous avez de nombreuses petites tâches principalement concernées par le traitement de texte ou le web-crowling. Ce n’est pas difficile du tout de faire tout cela dans Haskell mais je le rendrais plus rapide avec un tas de scripts shell, awk et peut-être Python. 🙂

Alors qu’est-ce qui reste? Les compétitions où vous devez développer un programme de taille significative avec une logique ou des algorithmes non simples. Comme pour la programmation commerciale si vous devez vraiment concevoir la chose que vous ne comprenez pas encore, Haskell est une aide très précieuse. Le concours ICFP est généralement de ce type, c’est pourquoi nous choisissons Haskell pour cela depuis environ 4 ans. 🙂

Bon piratage!

Cela dépend du concours. Haskell remporte fréquemment le concours annuel organisé conjointement avec la Conférence internationale sur la programmation fonctionnelle (ICFP). (C ++ et OCaml sont les autres langages qui remportent fréquemment ce concours particulier.)

Comme indiqué, cela dépend. À tout le moins, le concours en question doit autoriser Haskell. Beaucoup ne le font pas. Ceux qui connaissent bien Haskell peuvent probablement très bien réussir dans les compétitions qui permettent son utilisation.