À quoi Haskell est-il réellement utile?

Haskell est utile pour résoudre des problèmes réels . Il est utilisé par de nombreuses entreprises à travers le monde, notamment Facebook, Samsung, diverses sociétés financières et de nombreuses startups, dont celle dans laquelle je travaille – Luna. Langage de programmation fonctionnel textuel hybride-visuel (nous écrivons dans Haskell à la fois le compilateur, le back-end ainsi que l’interface graphique WebGL).

Haskell est si génial en raison de son système de type robuste , permettant d’exprimer des relations de données avec un détail très fin. Il est par exemple possible dans Haskell d’exprimer le nombre d’éléments d’une liste en utilisant le système de type et les opérations associées, ce qui garantit de toujours fonctionner en prouvant que les contraintes nécessaires seront respectées. Un bon exemple est d’accéder au premier élément de la liste non vide – nous pouvons facilement créer des fonctions Haskell qui échoueront s’il n’est pas garanti que la liste n’est pas vide au moment de la compilation. En fait, le nouveau GHC-8.0 (le compilateur Haskell le plus populaire) sorti ce mois-ci pousse la norme encore plus loin en permettant une programmation de type dépendante très complexe.

De plus, Haskell est un langage de programmation purement fonctionnel , ce qui signifie essentiellement que son système de type permet un contrôle très explicite et à grain fin des effets secondaires. Un bon exemple est l’accès IO. Dans Haskell, il est simple de définir une API qui interdit les fonctions qui communiquent avec le «monde extérieur», permettant un certain parallélisme CPU ou GPU automatique (accélération: un langage intégré pour le traitement accéléré des tableaux) ou une implémentation efficace et robuste de la mémoire transactionnelle logicielle (stm: logiciel Mémoire transactionnelle).

La dernière chose à noter ici est que Haskell n’est pas orienté objet. Il utilise à la place des classes de types. Les classes de types ne sont que des interfaces décrivant les propriétés des objets. Par exemple – Les foncteurs sont tous les objets sur lesquels vous pouvez mapper, les objets transversaux sont tous les objets que vous pouvez parcourir et faire quelque chose avec leurs éléments. De cette façon, le code Haskell est TRÈS générique et TRÈS réutilisable . Il est également très simple de créer des bibliothèques utiles qui sont de 100 lignes courtes et peuvent être utiles par de nombreux types de données, qui implémentent simplement certaines fonctionnalités. Un exemple: `foldr (mappend. Return) mempty` – c’est une fonction qui, étant donné une liste, peut la transformer en arbre, étant donné qu’un arbre peut la transformer en liste. En fait, il peut transfrom de deux types de données, où le premier implémente Foldable (vous pouvez regarder ses éléments) dans un type de données qui peut être construit à partir d’un seul élément, a une valeur vide et peut être concaténé.

Pour résumer cela, Haskell en tant que langage de programmation purement fonctionnel fournit une syntaxe très facile à lire (après l’avoir appris), est très expressif, réutilisable et fournit un système de type de pointe, qui empêche de faire des erreurs et permet d’écrire du code réutilisable éprouvé pour fonctionner dans toutes les conditions.

Il y a aussi un grand discours sur Haskell et d’autres langues par Erik Meijer:

Vous devriez définitivement le voir!

Haskell a une gamme variée d’utilisation commerciale, de l’aérospatiale et de la défense, à la finance, aux startups Web, aux entreprises de conception de matériel et au fabricant de tondeuses à gazon. Cette page recueille des ressources sur l’utilisation industrielle de Haskell.

  • La principale conférence des utilisateurs pour l’utilisation industrielle de Haskell est CUFP – l’atelier des utilisateurs commerciaux de la programmation fonctionnelle.
  • Le groupe Industrial Haskell soutient les utilisateurs commerciaux.
  • FP Complete est dédié à l’adoption généralisée de la technologie de programmation fonctionnelle moderne, en mettant l’accent sur le système Haskell. Voir leur collection d’études de cas de succès en utilisation commerciale.

1 Haskell dans l’industrie
De nombreuses entreprises ont utilisé Haskell pour une gamme de projets, notamment:

  • ABN AMRO Amsterdam, Pays-Bas

ABN AMRO est une banque internationale dont le siège est à Amsterdam. Pour ses activités de banque d’investissement, elle doit mesurer le risque de contrepartie sur les portefeuilles de dérivés financiers.

Conférence CUFP d’ABN AMRO.

  • Aetion Technologies LLC, Columbus, Ohio

Aetion était un entrepreneur de la défense en activité de 1999 à 2011, dont les applications utilisent l’intelligence artificielle. Les priorités changeant rapidement, il est important de minimiser l’impact du code sur les modifications, ce qui convient bien à Haskell. Aetion a développé trois projets principaux à Haskell, tous réussis. Le code concis de Haskell était peut-être le plus important pour la réécriture: il était possible de jeter le vieux code de temps en temps. Les DSEL ont permis de spécifier l’IA de manière très déclarative.

Conférence CUFP d’Aetion.

  • Alcatel-Lucent

Un consortium de groupes, dont Alcatel-Lucent, a utilisé Haskell pour prototyper des systèmes radio logiciels à bande étroite, fonctionnant en temps réel (doux).

Conférence CUFP d’Alcatel-Lucent

  • Allston Trading

Basée à Chicago, dans l’Illinois, Allston Trading, LLC est un leader du marché des fréquences élevées dans plus de 40 bourses financières, dans 20 pays et dans presque toutes les catégories de produits imaginables. Allston utilise Haskell pour son infrastructure commerciale.

  • Alpha Heavy Industries

Alpha Heavy Industries est un gestionnaire d’actifs alternatif dédié à produire des rendements supérieurs grâce à des méthodes quantitatives. Ils utilisent Haskell comme langage d’implémentation principal.

  • Amgen Thousand Oaks, Californie

Amgen est une société de thérapeutique humaine dans l’industrie des biotechnologies. Amgen a été le pionnier du développement de nouveaux produits basés sur les progrès de l’ADN recombinant et de la biologie moléculaire et a lancé les premiers médicaments à succès de l’industrie des biotechnologies. Amgen utilise Haskell;

  • Construire rapidement des logiciels pour implémenter des modèles mathématiques et d’autres applications complexes à orientation mathématique
  • Fournir une validation mathématique plus rigoureuse des logiciels
  • Pour sortir les développeurs de leur ornière de développement de logiciels en leur donnant une nouvelle façon de penser les logiciels.

Conférence CUFP d’Amgen.

J’espère que cela t’aides!!!

Haskell est utile pour écrire des logiciels robustes, de haute qualité et fiables . Vous pouvez écrire la même chose dans n’importe quelle autre langue. Mais Haskell est conçu sur la base de solides principes mathématiques. Il est typé statiquement, ce qui permet au compilateur de détecter certaines classes de bogues impossibles à détecter pour les compilateurs pour C ++, Java, Python, etc. Le compilateur Haskell peut également effectuer des optimisations qui ne peuvent pas être effectuées pour d’autres langages traditionnels. Haskell se concentre sur la modularité et la composabilité grâce à des fonctions pures sans changement d’état. Le code avec des changements d’état est soigneusement séparé du code sans changement d’état, ce qui vous permet de vous concentrer facilement sur les bogues. Haskell met l’accent sur un style de programmation différent avec une syntaxe extrêmement minimaliste et simple (dépourvue de deux-points, accolades, crochets et autres caractères spéciaux à l’aspect laid) faisant de votre code ressembler à un chef-d’œuvre de Mozart ou Beethoven.

C’est un truisme dans la communauté Haskell que si votre code compile, il fera ce que vous voulez qu’il fasse .

Tout et tout ce pour quoi vous souhaitez l’utiliser, sauf peut-être la programmation système (vous pourriez toujours, mais il fonctionnerait probablement aussi bien que la «machine Java» mort-née à l’époque SUN).

Haskell est un langage fonctionnel de haut niveau à typage statique avec un système de type robuste et un garbage collection intégré. Sa merveilleuse prise en charge des ADT (Algebraic Data Types) en fait un très bon outil pour écrire des compilateurs et des interprètes (bien que l’immuabilité le rende un peu plus délicat), il peut être utilisé dans des domaines où la sécurité des types au moment de la compilation est très appréciée – comme dans le domaine financier, il est également utilisé dans le domaine de la programmation web. Pour une liste plus complète, consultez ce wiki – Gabriel439 / post-rfc