11
votes

Programmation fonctionnelle appliquée

Je suis intéressé par la programmation de toute ma vie et depuis 6 ans, j'ai travaillé presque exclusivement avec Java. Je viens de terminer avec mes études universitaires et j'ai un emploi de développeur Java pour une entreprise.

Toutes ces années de programmation ont été un passe-temps et un temps passé favori, mais cela avait un effet légèrement négatif dans le sens où je me suis développé si habitué à Java, je ne les ai jamais aventurées au-delà de cela comme langage de programmation. J'ai essayé d'étendre ma connaissance des choses en apprenant des expressions régulières, SQL et d'étudier un peu de XML, mais je ne pouvais jamais vous impliquer assez avec une nouvelle langue pour apprendre à l'utiliser correctement la fête, car ils se ressemblent tous tellement à leur noyau , j'ai trouvé la courbe d'apprentissage de chaque nouvelle langue irritante. Je me sentais comme si je devais traverser tout le processus pour finir par avoir raison, j'ai commencé comme je pensais que d'autres langues impératives n'avaient plus rien à m'offrir (je sais que cette déclaration peut commencer une bagarre, ce n'est pas mon intention).

J'ai donc décidé d'explorer le monde magique de la programmation fonctionnelle. J'ai commencé à lire un livre sur Haskel et je l'ai jugé vraiment intéressant d'un point de vue académique (je me suis spécialisé en mathématiques) mais je ne pouvais pas trouver des applications pratiques pour me faire prendre suffisamment d'apprendre la langue.

Alors maintenant que Java est la partie principale de ma journée depuis que je suis payé au code de celui-ci (et j'apprécie autant que je le faisais quand c'était simplement un passe-temps) J'ai senti le besoin de nouveau pour élargir mes horizons et Encore une fois la programmation fonctionnelle semble être une bonne idée.

Je pensais commencer par Scala depuis que je suis java alphabétisate (rendez-vous la transition plus facile et soyez plus réutilisable car ils peuvent "parler" les uns aux autres) et ma question est donc la suivante: dans votre expérience apprendra une fonctionnalité langue "a du sens"? Y a-t-il des applications de vie réelles où sachant que ce paradigme peut être utile? Non seulement pour des divertissements personnels, mais aussi cela serait un "pro" dans l'industrie?


1 commentaires

Si vous vouliez apprendre une langue fonctionnelle qui fonctionne sur la JVM et peut «parler» à Java, pourquoi ne pas utiliser de clojure? Il est plus proche de Lisp et je pense que Lisp est un excellent exemple de ce qu'est une langue fonctionnelle. Bien que Scala et Clojure soutiennent la programmation fonctionnelle, lorsque je pense à la programmation fonctionnelle sur la JVM, je pense à Clojure.


5 Réponses :


1
votes

Apprendre une langue fonctionnelle a définitivement un sens. Comme Eric Raymond dit, si vous apprenez une langue fonctionnelle, Cela vous fera un meilleur programmeur dans la langue de votre choix.

Dans une perspective de l'industrie, si vous pouvez écrire un bon code dans une langue fonctionnelle, comme Haskell ou Objective Caml, vous serez soudainement à la demande très élevée pour un très petit nombre de postes. Il n'est pas clair si une personne judicible considère que ceci a «Pro», mais il existe certainement quelques entreprises très intéressantes qui ont des ouvertures qui ne sont que pour les programmeurs fonctionnels.


0 commentaires

8
votes

Dans mon avis, apprendre la programmation fonctionnelle C'est non seulement une bonne idée, car cela vous fait un meilleur programmeur (pense que je suis d'accord, bien sûr), mais parce qu'il semble qu'il deviendra très populaire dans un proche avenir.

Beaucoup de "gourus" disent que ce sera le seul moyen de garder la loi de Moore en vie. La vitesse d'horloge informatique a atteint un sommet et le seul moyen d'améliorer la vitesse des processeurs ajoutera de plus en plus de noyaux. Dans ce scénario, la programmation fonctionnelle devient utile car, dans ces langues, les données sont immuables et qui les rend très faciles à paralliser (cela peut être fait automatiquement).

Vous voudrez peut-être consulter les prochaines références


0 commentaires

1
votes

Oui, cela est parfaitement logique et est immédiatement utile dans certaines tâches communes que vous pourriez rencontrer en production (même si vous les écrivez en Java). Par exemple, si vous aurez besoin d'écrire un analyseur (pour un DSL, par exemple), vous constaterez que l'utilisation de techniques fonctionnelles pour le faire conduit à beaucoup plus propre et plus de code concis.


0 commentaires

7
votes

Apprendre une langue fonctionnelle est un gros plus, que vous l'utilisiez ou non dans votre travail de jour. Considérons les éléments suivants:

  1. L'une des plus grandes recommandations pour une programmation concomitante réussie consiste à éviter que l'état mutable dans vos objets filetés autant que possible. La programmation fonctionnelle vous apprend à faire cela.
  2. Les programmeurs la plupart des fonctionnaires, une fois qu'ils ont surmonté la courbe d'apprentissage non insondus, affirment que leurs techniques les rendent beaucoup plus productives qu'elles ne peuvent être dans des langues impératives standard. Leur code est plus exempt de bugs et une fraction de la taille que celle d'autres langues. Pensez à la productivité Boost vous avez eu lorsque vous avez finalement compris des expressions régulières. Maintenant, mettez cela sur les stéroïdes. c'est quel FP peut se sentir comme.
  3. Les techniques fonctionnelles se rendent rapidement en programmation impérative. Pensez la fermeture en C #, et JavaScript, et bientôt (peut-être que nous sommes chanceux) à Java. Il est très probable que les deux mondes vont bientôt venir ensemble.
  4. Enfin, dans les entretiens d'embauche, la connaissance d'une langue fonctionnelle vous aidera à vous démarquer de votre clone J2EE / .NET moyen. Il vous marque comme un démarreur autonome, un apprenant discipliné et un programmeur passionné - que vous soyez ou non une de ces choses. Je ne deviens pas encore un autre fana Scala Slathering Scala, grondant votre bossoir de manière bientôt à son absence sur la façon dont il manque les meilleures techniques de programmation depuis ... vous obtenez l'idée. Il n'est jamais bon d'insulter un employeur potentiel.

    Pour moi, étudier Haskell a fait de la programmation beaucoup plus amusante qu'auparavant. Cela peut faire la même chose pour vous aussi. Bonne chance!


0 commentaires

2
votes

La programmation fonctionnelle a déployé dans le secteur financier. Ce qui n'est pas vraiment tout aussi surprenant, si vous envisagez des analystes financiers "programmation" dans Excel depuis des années et c'est essentiellement un paradigme fonctionnel (plus précisément, réactif fonctionnel).

Donc, oui, connaissant la programmation fonctionnelle peut ouvrir quelques portes seulement OO ne peut pas, et de tels travaux peuvent être très intéressants.

Parler strictement en tant que programmeur Java, vous apprendrez des techniques que vous pouvez employer en Java dans votre quotidien (bien que vous souhaitiez une meilleure bibliothèque de collections). Techniques qui réduiront la quantité de bugs dans ce que vous codez, facilitez le multithread et le multitâteau et apportez votre code plus près des règles d'entreprise qu'il met en œuvre que la mécanique de sa mise en œuvre.

Maintenant, il existe d'autres raisons d'apprendre Scala en particulier. Ceux-ci ci-dessus, cependant, sont mes raisons pour lesquelles vous voudrez peut-être apprendre la programmation fonctionnelle.


0 commentaires