Apprendre la scala, découragé [fermé]

9

Je viens d'un arrière-plan Java et j'essaie d'apprendre Scala. En ce moment, je me sens assez dépassé, il semble qu'il y ait tellement plus à apprendre avec Scala, tant de façons différentes de faire la même chose.

Je me demandais si quelqu'un avait des conseils sur où commencer et combien de temps il leur a fallu pour se sentir raisonnablement compétent dans la langue?

Même de petites choses comme les compréhensions de boucles semblent vraiment puissantes, mais ce n'est qu'un autre élément de syntaxe dont vous devez vous souvenir!

jcm
la source
Scala est par la plupart des comptes un langage complexe, alors ne vous découragez pas! Pour l'anecdote, je suis un programmeur Haskell assez compétent et je pensais que Scala était beaucoup plus complexe :) La meilleure façon que j'ai trouvée d'apprendre quoi que ce soit, c'est d'alterner entre un livre et un projet. Pour Scala, je suggérerais un compilateur et les livres de l'escalier, mais à chacun le leur
Daniel Gratzer
Merci pour l'encouragement! Quel est le livre d'escalier?
jcm
lecture recommandée: par où commencer?
gnat
J'ai essayé Scala il y a quelques années du point de vue Java et je ne l'ai pas vraiment compris. Récemment, j'ai commencé un cours à coursera.org sur la programmation fonctionnelle en Scala. C'est une approche suffisamment différente pour que mon expérience Java ne me gêne pas. Au lieu de cela, j'apprends (ré) à penser dans des structures de données immuables, à raisonner sur les algorithmes, la théorie des ensembles, la théorie des types et toutes les autres choses amusantes que je n'ai pas à pratiquer dans un vrai travail. Ne vous inquiétez pas; il y a encore une réelle utilité de Scala dans le monde réel.
BobDalgleish
2
Scala est un grand nouvel écosystème pour aller chercher (la langue de base est lui - même pas grand - c'est surtout les bibliothèques et les concepts). Si vous vous en tenez à la fin la moins profonde des choses pendant un certain temps et que vous choisissez un concept à la fois, les choses commenceront vraiment à se rejoindre. Les trucs qui ressemblent à une syntaxe spéciale bizarre intégrée se révéleront généralement dans une catégorie de choses plus générique qui peut être abstraite dans l'ensemble du langage. Mais il faut certainement jouer et lire pour comprendre ce que ces choses sont.
KChaloux

Réponses:

11

J'ai été là où tu es et j'ai failli abandonner à quelques reprises. Bien que je ne sois pas du tout un développeur expert de Scala, je sens que j'ai maintenant une solide compréhension du langage - certainement assez pour qu'il ait complètement empoisonné ma relation avec Java.

La première chose que j'ai faite a été de passer quelques semaines à jouer, à lire divers blogs et des introductions à la langue. C'était une erreur, je n'ai pas appris (ou du moins compris) beaucoup de choses utiles, et je me sentais complètement hors de mes profondeurs.

La deuxième chose était de passer du temps à résoudre des problèmes qui étaient techniquement simples mais m'ont forcé à explorer par moi-même des aspects spécifiques de la syntaxe Scala:

Bien que cela ne m'ait pas transformé en expert du jour au lendemain, cela m'a donné suffisamment de familiarité avec le langage pour qu'il ne me semble plus aussi impossible.

Avec ce regain de confiance, j'ai finalement fait ce que j'aurais dû commencer: obtenir la programmation en Scala par Martin Odersky, et essayer de lire un chapitre entier tous les deux jours. C'est un livre bien écrit et complet, et si vous avez déjà une solide expérience en programmation, cela ne devrait pas être trop intimidant. Il n'est pas nécessaire de rendre votre première lecture trop pénible: sautez les parties marquées comme facultatives, assurez-vous de comprendre les concepts mais ne vous embourbez pas dans les détails (en particulier, je pense que les chapitres sur les collections sont exagérés et peuvent être écrémé). Savoir qu'un concept existe et où lire une explication détaillée de son fonctionnement est une aide précieuse.

Une alternative à la lecture du livre est d'assister à la classe Coursera - elle est beaucoup moins complète, mais couvre la plupart des points cruciaux et se décompose en unités logiques gérables. D'un autre côté, je ne sais pas s'il est possible d'accéder aux cours une fois le cours terminé, et j'ai également constaté que j'étais beaucoup moins engagé en écoutant quelqu'un (même quelqu'un aussi évidemment intelligent et compétent que Martin Ordesky) que lors de la lecture d'un livre.

Un autre problème avec Scala est la quantité de vocabulaire que vous devez ingérer - paramètres par nom? pour la compréhension? fermeture? Si vous vous sentez dépassé par cela, j'ai trouvé qu'un bon mélange du glossaire Scala et des recherches ciblées de débordement de pile m'a beaucoup aidé (recherchez les réponses de Daniel Sobral et Travis Brown). En fait, je suis allé jusqu'à créer un deck Anki avec le glossaire, et je pense que cela m'a été d'une grande aide.

Enfin, c'est probablement évident, mais du code, du code, du code. Trouvez un projet parallèle sur lequel vous pouvez travailler, même si c'est quelque chose de trivial. Ce que j'ai fait, c'est écrire un robot d'exploration Amazon très simple qui m'enverrait un tweet chaque fois qu'un auteur qui m'intéressait publie un nouveau livre. Cela a pris plus de temps que prévu, mais c'est à ce moment que je suis tombé amoureux de la langue.

Si vous arrivez jusque-là, vous n'aurez probablement besoin d'aucune aide supplémentaire, mais une bonne suggestion, une fois que vous aurez compris le langage, consiste à approfondir les concepts sous-jacents. Vous connaissez bien la POO, essayez de lire sur la programmation fonctionnelle - je peux dire avec une certitude absolue que cela vous épatera. La programmation fonctionnelle dans Scala devrait être publiée prochainement (ish), mais l'édition à accès anticipé est déjà excellente. Une autre réponse suggère la programmation fonctionnelle pour les développeurs Java , que je ne connais pas, mais qui a tendance à croire que c'est bon (quand un livre O'Reilly ne vaut-il pas au moins le coup d'œil?).

J'espère que cela n'a pas été trop long et évident, et je vous souhaite sincèrement le meilleur. Scala a ses défauts, mais c'est une langue merveilleuse et emmènera votre cerveau dans des directions dont vous ignoriez l'existence. Et je vais chercher ton "Learning Haskell, découragé" dans un an :)

Nicolas Rinaudo
la source
3

Scala est une façon de penser très différente de Java, alors ne vous découragez pas! Je commencerais probablement par la programmation fonctionnelle pour les développeurs Java afin que vous puissiez entrer dans la façon fonctionnelle de penser.

Y a-t-il un groupe d'utilisateurs Java et / ou Scala à proximité? Il est toujours plus facile d'apprendre une nouvelle langue avec un collègue.

Bonne chance et persévérez!.

Martijn Verburg
la source
De plus, je recommanderais de jeter un œil aux cadres Scala ou aux boîtes à outils concernant les domaines qui vous intéressent. D'après mon expérience, avoir un projet sur lequel vous aimez travailler facilite les choses. Consultez Lift ou Play Framework par exemple lorsque vous êtes dans le développement Web ou Akka si les applications simultanées ou distribuées sont votre truc.
juwi