42 votes

Apprendre Haskell en vue d'apprendre Scala

J'ai lu quelques questions telles que Scala vs Haskell discutant des mérites des deux langages ou de celui qu'il faut apprendre, mais je sais déjà que j'aimerais apprendre Scala. J'étais un programmeur Java à l'université et j'utilise maintenant principalement PHP.

Je veux apprendre Scala car il semble être une amélioration de Java pour des projets personnels et j'aimerais aussi apprendre un langage fonctionnel pour améliorer mes connaissances en tant que programmeur.

Je me demande si ce serait une bonne idée d'apprendre le Haskell comme introduction à la programmation fonctionnelle, car il est purement fonctionnel et je l'apprendrai donc correctement plutôt que d'utiliser au hasard des morceaux de fonctionnel dans Scala sans savoir pourquoi ?

J'aimerais aussi utiliser Haskell pour des projets personnels, etc. car il a l'air génial, mais je n'en vois pas beaucoup d'applications dans le monde réel, il semble plus utilisé pour des trucs académiques, d'où l'envie de l'apprendre pour avoir une compréhension fonctionnelle, puis de passer à Scala.

85voto

pelotom Points 14817

En tant que personne venant de Java, et pour qui Scala a été une passerelle vers Haskell, je pense que c'est une excellente idée (apprendre Haskell d'abord) !

Haskell est conceptuellement un langage beaucoup plus simple que Scala, et si votre objectif est d'apprendre à programmer de manière fonctionnelle, vous ne pourrez qu'y parvenir si vous commencez avec Haskell. De par sa conception, Scala prend en charge une sorte de "mode patrimonial" de codage dans lequel vous n'avez pas vraiment à changer vos habitudes Java (ou PHP) si vous ne le souhaitez pas. Je pense qu'il s'agit d'une décision stratégique - et d'une bonne décision - destinée à accroître l'adoption de Scala par les vétérans de Java.

Mais ce n'est pas toi ! En fait, vous êtes intéressé d'apprendre quelque chose de nouveau... alors pourquoi ne pas y aller à fond ? Apprendre la programmation fonctionnelle dans un cadre pur, sans le désordre et la tentation de revenir à de vieilles habitudes, cristallisera les concepts dans votre cerveau.

Alors, revenez à Scala et apprenez en quoi il diffère de Haskell ; il est à la fois plus faible à certains égards et plus fort à d'autres, mais vous disposerez alors de bien meilleures bases pour apprécier ces différences.

17voto

Pere Villega Points 13565

Je ne ferais pas ça. Si vous passez directement à Scala (votre objectif final), vous gagnez du temps. Vous apprendrez la programmation fonctionnelle de toute façon, mais comme Scala est "moins pur", vous pourrez commencer à écrire des programmes en Scala en utilisant des constructions similaires à Java, ce qui rendra la transition plus simple.

Même si vous vous lancez dans Haskell, vos premiers programmes seront de moins bonne "qualité fonctionnelle" que les suivants, car seule la pratique améliore cela. En commençant Scala, vos premiers programmes seront de "moins bonne qualité" que vos premiers programmes en Java ou PHP, mais avec la pratique, vous vous améliorerez. Passer du temps dans des tâches sans rapport en espérant qu'elles PEUVENT aider, cela peut vous faire perdre ce temps.

Concentrez-vous sur votre objectif. Si c'est Scala, foncez.

UPDATE : Je crois este peuvent être pertinents pour la question. Il soulève un point sur la productivité (fournir des logiciels) par rapport à la recherche de "connaissances pures".

17voto

Chris Turner Points 225

Je suis arrivé à Scala en venant de Java. Au départ, je me suis contenté de considérer Scala comme un meilleur Java. Au fil du temps, j'ai commencé à utiliser de plus en plus de concepts fonctionnels en Scala. Finalement, j'ai atteint un point où je sentais que j'avais besoin d'une compréhension plus pure de la programmation fonctionnelle. C'est à ce moment-là que je suis parti apprendre Haskell.

Lorsque je suis revenu à Scala, j'ai trouvé qu'il était beaucoup plus facile d'utiliser un style fonctionnel et certains des concepts avec lesquels je me débattais auparavant avaient beaucoup plus de sens.

Il n'est pas nécessaire d'apprendre Haskell pour devenir un bon développeur Scala, mais je pense qu'une fois que l'on a atteint un certain niveau dans Scala, avoir une compréhension plus approfondie des concepts de programmation fonctionnelle aide vraiment.

7voto

cbrandolino Points 2983

Le risque de commencer directement à partir de Scala, sans avoir joué d'abord avec un langage de programmation purement fonctionnel, est que vous serez probablement attiré un peu trop souvent par les solutions procédurales.

Je n'essaierais pas Haskell comme introduction à la programmation fonctionnelle, cependant : non pas qu'il soit particulièrement difficile - sa syntaxe est étonnamment laconique - mais il est définitivement très particulier (même dans le monde particulier de la programmation fonctionnelle) et je pense que vous devriez essayer avec un langage que vous pouvez porter plus facilement vers Scala, comme Racket ou Scheme.

Pour mieux comprendre ce que je veux dire, regardez les compréhensions de listes en Haskell, Scala et Scheme.

4voto

Eric Points 1010

J'ai d'abord appris Haskell, puis Scala, et je ne l'ai jamais regretté. Vous apprécierez beaucoup plus la FP si vous apprenez d'abord Haskell. Votre compréhension des concepts derrière la PF et pourquoi ils sont importants sera gravée dans votre mémoire. Une grande partie de Scala est tirée de Haskell (IMHO). Il aura plus de sens si vous avez l'expérience de Haskell. N'ayez pas peur ! Vos efforts seront récompensés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X