Je suis certainement d'accord avec l'essentiel de la réponse acceptée, et étant donné que vous plongez fondamentalement dans les choses en essayant Erlang, il semble que vous compreniez probablement assez bien comment vous apprenez et que vous aviez juste besoin d'un petit coup de pouce dans la bonne direction, donc clairement c'était une bonne réponse pour vous ... Mais, je pense que j'aborderais la question un peu différemment, car je vois que cette réponse ne m'aurait pas beaucoup aidé du tout; Je code toujours pour apprendre! Alors, voici mes pensées ...
(BTW, j'ai tendance à continuer en détail plus adapté, par exemple, aux chapitres d'un livre, et je suis sûr que je ne peux pas étouffer complètement mon instinct ici, mais je vais essayer une approche différente; je suis Je vais simplement résumer mes pensées ici, et au cas où quelqu'un voudrait plus de détails sur quelque chose, ou pense que quelque chose que je dis est trompeur dans ce format, je ferai de mon mieux pour me rappeler de passer par des rappels de réponse ...)
Pour essayer de me maintenir sur la tâche, voici ma compréhension des questions fondamentales posées dans le PO; Je garderai les lignes de côté au minimum nécessaire pour expliquer ...
D'abord les réponses rapides:
étais-je dans une situation similaire? C'était au moins similaire; J'étais en position de leader sur de nombreux projets variés mais néanmoins liés ... (CRM / Web / DB / Intégration de données / etc.)
comment / pourquoi ai-je fait le saut au fonctionnel? " J'ai vu quelques exemples LINQ et bien que j'aie définitivement rêvé d'une sorte de langage de requête intégré, typé statiquement [car j'avais principalement utilisé des langages typés statiquement (principalement C ++, et plus tard C # )] tout au long de ma carrière ... Mais, c'était un environnement de tir assez rapide dans lequel j'étais, et même si j'avais souvent réussi à voir ce qui se passait dans le passé, je n'avais jamais vraiment réfléchi, donc je n'ai jamais prévu qu'il pourrait / permettrait des opérations sur Plain Old Objects (lol!) tout aussi facilement; quand je l'ai vu, je savais que je devais l'avoir ... alors, c'est le pourquoi et le début du comment: je me suis concentré sur l'apprentissage de la compréhension de LINQ .
Quatre pensées ... euh, non, ce n'est pas juste ...
Quand j'ai lu la réponse de Martijn Verburg , la mention de la fonctionnalité métier me fait immédiatement penser à commencer à implémenter du code pour tout ce sur quoi je travaille ... En fonction de la profondeur de cette expérimentation initiale, je pourrais répondre différemment, mais en supposant que c'était juste en plongeant votre gros orteil, je ne suis pas sûr d'avoir eu quoi que ce soit directement pour le travail (ou un travail futur) qui m'aurait procuré l'excitation / passion que je pense que vous devriez probablement avoir pour les premiers problèmes que vous commencez à résoudre ...
J'étais presque entièrement basé sur des langages typés statiquement + des métaphores et des modèles OOP + tout ce que j'ai fini par enrouler mon cerveau accidentellement tout en résolvant mes problèmes réels au fil des ans ... Le fait étant que, si vous êtes comme moi, vous avez probablement beaucoup de cerveau dédié à des choses qui ne vous aideront pas beaucoup avec LINQ / FP.
Je pense que c'est un peu comme une programmation purement procédurale vs OO: il y a beaucoup de choses procédurales que vous finirez par utiliser dans OOP, mais ceux qui viennent en C ++ de C sans en faire une priorité pour grok / ken / "get" OO finissent par être très très mauvais en C ++. En fait, j'ai interviewé beaucoup de développeurs de pilotes de microprogrammes et de périphériques de longue date (15+) qui pensaient vraiment connaître le C ++, mais qui, tout au plus , avaient une compréhension terriblement basique / classique du C ++, avec pratiquement aucune compréhension de ou expérience en POO - parce qu'ils n'ont jamais fait de POO ... Ils ont écrit des classes polyvalentes singleton avec des membres statiques et des fonctions statiques avec une certaine quantité de classes non statiques / non singleton qui ont été utilisées comme structures.
Et FP a des concepts tout aussi hallucinants (pour ceux qui ne sont pas élevés sur le paradigme) et d'autres choses qui vont avec, et (bien que j'ai trouvé l'hybridation de nombreuses techniques idéale pour moi), je comprends de plus en plus et au fur et à mesure que le temps passe, à quel point ma réflexion était limitée avant d'intégrer de réelles capacités fonctionnelles dans mon ensemble d'outils; J'avais réussi à implémenter beaucoup de choses dans le passé d'une manière un peu plus créative que peut-être la plupart des programmeurs OO, mais comme j'utilise les concepts à quel point ma pensée était retardée avant ... Il y a des classes entières de problèmes qui peuvent être résolus en quelques lignes qui prenaient beaucoup de contorsion à faire en C ++ / C #.
tout à coup vous vous retrouvez ...
Dans un message "trop long"
Vous êtes dans un labyrinthe de "ne lisez pas" sinueux, tous pareils.
Vous voyez une téléconférence dans un avenir proche, qui approche rapidement.
> laconique
Uhhuh. Sûr. D'accord, nous dirons que le mode "laconique" est "activé".
Vous voyez une téléconférence dans un avenir proche, qui approche rapidement.
> qu'est-ce que ça veut dire?
Je dis juste. N'as-tu pas dû faire quelque chose ce matin?
Vous voyez une téléconférence dans un avenir proche, qui approche rapidement.
> hé, est-ce une grue derrière toi?
Quoi!? OÙ?! [s'enfuit en hurlant]
> Désolé, je n'ai pas compris QUOI OERE, reformuler?
[a continué à courir et à crier, le sarcasme inaperçu]
Alors ... Que dois-je apprendre, cher PSE, cher PSE?
J'ai personnellement commencé en C # avec LINQ. Cela m'a permis d'introduire quelques concepts à la fois, et pendant que je lisais constamment sur la PF et ses concepts, et plus de LINQ, et la relation entre les deux, cela m'a donné une voie à suivre tout en faisant un travail productif. J'ai ajouté quelques petites choses à la fois, les requêtes de données sont rapidement devenues un outil utile sans avoir à comprendre une tonne.
Maintenant, en y repensant, j'aimerais en quelque sorte avoir pu réaliser mon prochain projet (abordé environ un an plus tard); Je me suis moyennement familiarisé avec F # (qui, soit dit en passant, m'a donné une bonne longueur d'avance sur l'apprentissage du ML (métalangage) et de ses autres dérivés (par exemple, OCaml également).)
Fondamentalement, je pense qu'une réponse décente à `` ce qui '' dépend de trouver un bon appariement d'un problème de programmation qui vous intéresse, mais bien sûr, il doit être associé à un peu de FP que vous souhaitez apprendre ... (et vous pouvez rincer / répéter / faire mousser après avoir retiré quelque chose de la liste ...) Et, bien sûr, vous finissez toujours par en apprendre un peu plus que la chose principale que vous vous apprêtez à faire; au début, j'ai fait quelques pas, mais j'ai fini par faire de plus grandes choses et laisser les petites choses se mettre en place pendant que je les faisais.
D'abord, qu'est-ce qui fait flotter votre bateau? Surtout au début, il est préférable d'avoir quelque chose d'amusant et d'excitant (pour vous) et qui gardera suffisamment votre intérêt pour que cela en vaille la peine. Donc, les problèmes IOW sur lesquels travailler et les techniques qui résolvent ces problèmes ... LINQ et les requêtes de données en ligne pour moi au début. La récursivité était une autre pour moi, y compris la récursivité de la queue, j'en creuse le GodelEscherBach-ness; et j'avais lu sur la récursivité de la queue. À cette époque, les choses sur lesquelles je travaillais ont été suspendues, et j'ai fini par avoir un gros bloc de temps, donc j'ai pu y rester longtemps. C'était plus facile avec moins d'interruptions, mais parce que j'ai choisi des choses que je pensais amusantes, ce n'était pas si difficile, même avec l'interruption du travail. :)
Et même si je n'ai rien trouvé de cool dont je puisse vous parler, comme le programme de crabe conscient de soi, j'ai réussi à être assez bon dans ce domaine.
Et ... Avec quoi vais-je l'apprendre, cher PSE, cher PSE, avec quoi?
Pour cela, j'ai utilisé divers algorithmes qui m'intéressaient de toute façon, ainsi que diverses choses que je me demandais si vous pouviez faire en F #, et quand je manquais d'idées, je m'attaquais à des choses comme 99 bouteilles de bière et le Project Euler problèmes ...
Je suis sûr que vous pouvez trouver beaucoup de choses qui vous intéressent et qui concernent la PF; il offre tout, des améliorations à la POO, qui vous aident à énoncer les choses de manière un peu plus succincte jusqu'à tordre la façon dont vous auriez pensé auparavant dans une forme que vous ne reconnaissez pas et qui n'avait probablement même pas le modèle mental à exprimer avant.
Mais ... Il y a un trou dans mon modèle, cher PSE un trou ...
Et c'est pourquoi il est important que, surtout au début, mais vraiment tout au long de votre apprentissage (et n'est-ce pas toujours vrai lorsque vous apprenez quelque chose?), Vous prenez au moins un peu de temps entre les problèmes pour lire des choses sans rapport, mais encore FP et le temps de lire le code source écrit par des experts, de préférence résoudre les mêmes problèmes ou des problèmes similaires; ainsi que leurs explications sur les choses ...
Et pendant tout ce temps, vous devez forcer votre cerveau pour tout comprendre, pas de votre ancienne perspective mais de l'intérieur de FP lui-même ... À un moment donné pour moi, il a cliqué, et ... la chose que je peux le mieux relier to devient plus ou moins couramment le néerlandais; à un moment donné, j'ai réussi à me mettre assez dans l'état d'esprit (je l'ai fait par immersion, ce qui est essentiellement ce que j'ai décrit ici; vous immerger dans la PF plutôt que d'essayer de l'apprendre uniquement par le biais de "livre larnin '" ...)
Et, finalement, je l'ai fait; J'ai réussi à tout internaliser et à tordre mon cerveau jusqu'à ce que je commence à faire éclater FP / LINQ sans même que je doive faire un effort pour le traduire de nouveau en POO. (Oui, je l'ai fait; je devais avoir quelque chose pour accrocher ma jupe. Chapeau. Peu importe.)
Dernières pensées...
Mon, mon, il semble que vous perdiez votre capacité à penser à votre signature intelligente
titres des sections. C'est dommage.
La téléconférence approche à grands pas. Il semble beaucoup plus grand maintenant.
> oui, oui, eh bien .. laconique et tout. Je vois que vous avez réussi à perdre cette grue.
fermer appel, que ... eh bien, oui, je suis ter ... OH NON, IL EST DE RETOUR!
AAAAAAAHHHHHH !! [s'enfuit en hurlant, encore une fois]
La téléconférence approche à grands pas.
Cela ressemble en quelque sorte à Sir Lancyjohn Cleezewiz.
C'est presque sur vous.
> hé, dépêchez-vous! J'ai une expérience à essayer avec toi! (et un po-ta-to)
Vous pouvez trouver une multitude d'informations en ligne sur la PF, naturellement. L'essentiel est de comprendre les concepts de base, puis d'apprendre à les appliquer. Par exemple, découvrez l'immuabilité et pourquoi elle est importante / utile pour la PF. Je recommande fortement d'apprendre un peu de théorie pour aller avec tout, comme la façon dont la PF pure peut être beaucoup plus adaptée à la preuve formelle. C'était une force motrice derrière l'ancêtre de F #, ML. YMMV bien sûr, vous pouvez être quelqu'un qui s'ennuie aux larmes, auquel cas, beaucoup d'exemples, beaucoup d'essais et d'erreurs pour voir exactement pourquoi les techniques utilisées sont ce qu'elles vous aideront à avoir ce 'Aha!' moment de l'ampoule.
Donc, je vais en rester là pour l'instant. J'espère que cela peut être utile à quelqu'un. Je voulais approfondir un peu les choses spécifiques à apprendre, mais je n'ai plus de temps pour le moment. J'espère que je trouverai un peu de temps pour y revenir bientôt, même si cela semble être une longue semaine pour moi, donc ce sera probablement au moins le week-end.
<3 "Présentation de GRUEBOL, un point d'arrêt; juste jusqu'à la fin de SnozzML. Ce devrait être bientôt; j'ai un énorme comité qui m'aide cette fois." --Grace Hopperwit Egghead, Famous Last Words , XX97 GUE <3