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. P>
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). p>
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. P>
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. P>
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? B> p>
5 Réponses :
Apprendre une langue fonctionnelle a définitivement un sens. Comme Eric Raymond dit, si vous apprenez une langue fonctionnelle, 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. P>
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. p>
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). p>
Vous voudrez peut-être consulter les prochaines références p>
buff, j'espère que ce n'était pas trop ennuyé, -) p>
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. P>
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: p>
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! P>
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). P>
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. P>
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. P>
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. P>
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.