Mise en œuvre réelle de la programmation fonctionnelle? [fermé]

9

J'essaie de me familiariser avec différents types de langues pour comprendre les domaines dans lesquels chacun d'eux est extrêmement bon. Jusqu'à présent, j'ai essayé C - un langage procédural, C ++ et java - des langages orientés objet de type statique et groovy - un langage orienté objet typé dynamique.

Chaque langage de programmation a probablement été lancé pour répondre à un besoin. Et je suppose que chaque langue est extrêmement bonne dans au moins une chose à cause de laquelle elle devient une norme dans un domaine ou un domaine spécifique. Comme C, C ++ est devenu standard dans des domaines comme le développement de navigateur ou de jeux. Python dans le monde Linux pour sa capacité de script facile, Java dans le monde de l'entreprise, etc.

Maintenant, je suis intéressé à apprendre un langage de programmation fonctionnel comme Clojure ou Lisp. Alors, où les langages de programmation fonctionnels sont-ils utilisés dans des scénarios du monde réel? Je ne pense pas que l'on utiliserait Clojure ou Lisp pour développer des applications ou des interfaces utilisateur. Alors, sur quel type de projets dois-je me lancer après avoir suivi les tutoriels de base et les ressources d'apprentissage pour obtenir une brève compréhension de la mise en œuvre de la programmation fonctionnelle? Et recommandez-vous fortement une langue en particulier, comme disons clojure?

Vamsi Emani
la source
5
"Et je suppose que chaque langue est extrêmement bonne dans au moins une chose à cause de laquelle elle devient une norme dans un domaine ou un domaine spécifique" Ce n'est généralement pas vrai. C'est une hypothèse dangereuse de penser que les langues sont en quelque sorte "spécialisées". Quelques langues ont des niches, mais ce n'est pas vrai en général.
S.Lott
6
"Je ne sais pas comment ni par où commencer." Qu'est-ce qui vous empêche de commencer avec les tutoriels? Pouvez-vous expliquer pourquoi les didacticiels pour ces langues ne sont ni utiles ni utiles?
S.Lott
"C ++ & java" ont très, très peu à voir les uns avec les autres.
DeadMG
Puis-je vous dire ce qui vous a vraiment intrigué pour apprendre Clojure ou Lisp en dehors de la raison pour laquelle ils suivent le paradigme de la programmation fonctionnelle?
Maxood
3
Quand vous dites «en temps réel», voulez-vous dire «monde réel» par hasard? Cela semblerait plus logique dans le contexte de cette question.
sepp2k

Réponses:

13

Vous dites la programmation fonctionnelle du monde réel, je pense que Erlang.

Erlang est un langage de programmation utilisé pour construire des systèmes temps réel doux massivement évolutifs avec des exigences de haute disponibilité. Certaines de ses utilisations concernent les télécommunications, la banque, le commerce électronique, la téléphonie informatique et la messagerie instantanée.

http://www.erlang.org/

Robert Harvey
la source
3
+1 Korrecto! Aussi, j'aimerais ajouter que pour les débutants en terre fonctionnelle, le langage fonctionnel le plus "pur" serait Haskell :)
yati sagade
5

Il existe une excellente série de conférences sur la programmation fonctionnelle par l'Université de Stanford, que vous pouvez consulter sur YouTube.

Je vous conseille de vous pencher sur Scheme plutôt que LISP. Le schéma est une version modifiée de Lisp avec d'autres améliorations. Le programme est principalement utilisé à des fins académiques et de formation. C'est un excellent langage si vous aimez faire de la recherche en science informatique thoracique.

Applications :

Google App Inventor pour Android utilise Scheme, où Kawa est utilisé pour compiler le code Scheme en octets pour la machine virtuelle Java exécutée sur les appareils Android. Elk Scheme est utilisé par Synopsys comme langage de script pour ses outils de technologie CAD (TCAD).

FYI: Utilisation du schéma

Maxood
la source
Je me demande si cette question peut vous aider: programmers.stackexchange.com/questions/25056/…
Maxood
1
Et il y a ce livre LISP (gratuit! Et en ligne!): Gigamonkeys.com/book Il couvre des projets "pratiques" tels qu'un analyseur de balises ID3, la programmation Web et le filtrage des spams.
FrustratedWithFormsDesigner
5

Bryan O'Sullivan, fondateur de mailrank.com (qui a été acquis par Facebook) a construit tout le côté serveur de ce logiciel à Haskell. Il en a fait la présentation à Strange Loop 2011, des vidéos et des diapositives sont disponibles en ligne.

Le même gars a écrit un livre intitulé Real World Haskell . Plusieurs personnes ont mentionné des didacticiels de programmation. Celui-ci peut être tout à fait approprié à vos intérêts (j'aime aussi la suggestion Erlang).

Barend
la source
4

Je sais par des amis de la finance que la société de trading quantitatif Jane Street utilise OCaml pour mettre en œuvre ses stratégies de trading. Ils ont une page où ils expliquent pourquoi, ainsi que des liens vers des discussions sur le sujet.

Geoff Oxberry
la source
2

Voici une liste des réussites de Common Lisp:

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

Bien que Common Lisp ne soit que partiellement fonctionnel (il prend également en charge la POO et les procédures, ainsi que tout ce que vous souhaitez implémenter vous-même ou avec une bibliothèque), c'est un langage très pragmatique et extrêmement puissant entre les mains d'un programmeur compétent. Je l'utilise en fait pour écrire des applications Web avec l'excellent cadre RESTAS .

Et le projet commercial python sur lequel je travaille en ce moment sera éventuellement complété par des services écrits en lisp (RESTAS comme son nom l'indique est excellent pour les services RESTful).

Pavel Penev
la source
1

Je suggère de plonger dans les compilateurs (pour les langages à usage général ou les DSL) - c'est là que la programmation fonctionnelle est à son meilleur. Il y aura beaucoup de choses intéressantes et utiles à explorer, des ADT et de la correspondance de motifs d'un côté d'un spectre aux macros Lisp de l'autre côté.

SK-logic
la source
0

Vous voudrez peut-être jeter un œil à Hume .

Depuis la page The Hume Programming Language :

Hume (méta-environnement unifié d'ordre supérieur) est un langage fortement typé, principalement fonctionnel avec un ensemble d'outils intégrés pour développer, prouver et évaluer des systèmes concurrents critiques pour la sécurité. Hume vise à étendre les frontières de la conception de langage pour les systèmes à ressources limitées, y compris les systèmes embarqués en temps réel et critiques pour la sécurité, en introduisant de nouveaux niveaux d'abstraction et de prouvabilité.

De la page wikipedia Hume :

Hume est un langage de programmation basé sur des fonctionnalités développé à l' Université de St Andrews et à l' Université Heriot-Watt en Ecosse, et nommé d'après le philosophe du XVIIIe siècle David Hume. Il cible les systèmes embarqués en temps réel, visant à produire une conception à la fois très abstraite, tout en permettant l'extraction précise des coûts d'exécution de temps et d'espace, permettant ainsi d'écrire des programmes qui s'exécuteront sous des contraintes de temps et d'espace limitées.

Hume est inhabituel en combinant des idées de programmation fonctionnelle avec des idées d' automates à états finis . Les automates sont utilisés pour structurer les programmes communicants en une série de "boîtes", où chaque boîte mappe les entrées aux sorties de manière purement fonctionnelle en utilisant une correspondance de modèle de haut niveau. Il est également inhabituel d'être structuré en une série de niveaux, chacun exposant différentes propriétés de la machine, ce qui est très inhabituel.

Mark Booth
la source