Certamente, eu concordo com o principal impulso da resposta aceita e, como você basicamente está mergulhando nas coisas de uma vez por todas, tentando Erlang, parece que você provavelmente tem um bom entendimento de como aprende e só precisava de um empurrãozinho no caminho certo. direção, tão claramente foi uma boa resposta para você ... Mas acho que abordaria a questão de maneira um pouco diferente, pois vejo que essa resposta não teria me ajudado muito; Eu sempre código para aprender! Então, aqui estão meus pensamentos ...
(BTW, eu continuo detalhando mais adequado para, digamos, capítulos de um livro, e tenho certeza de que não posso reprimir completamente meus instintos aqui, mas vou tentar uma abordagem diferente; resumindo meus pensamentos aqui e, caso alguém queira mais detalhes sobre alguma coisa ou pense que algo que eu digo é enganoso nesse formato, farei o possível para lembrar de passar por lembretes de resposta ...)
Para tentar me manter na tarefa, eis o meu entendimento das perguntas de impulso feitas no OP; Vou manter as margens ao mínimo, conforme necessário, para explicar ...
Primeiro as respostas rápidas:
eu estava em uma situação semelhante? Era pelo menos semelhante; Eu estava em uma posição de liderança realizando muitos projetos variados que ainda estavam relacionados ... (CRM / Web / DB / Integração de Dados / etc.)
como / por que eu pulei para o funcional? " Vi alguns exemplos de LINQ e, embora definitivamente tivesse sonhado com algum tipo de linguagem de consulta integrada e tipicamente estatizada [como eu havia usado principalmente linguagens estaticamente tipadas (principalmente C ++ e C # posterior) )] ao longo da minha carreira ... Mas, era um ambiente relativamente rápido em que eu estava, e apesar de muitas vezes ter conseguido ver o que estava por vir no passado, nunca havia pensado nisso, então nunca previ que fosse. poderia / permitiria operações em objetos antigos simples (risos!) com a mesma facilidade; quando eu vi, sabia que tinha que ter ... então, esse é o porquê e o começo do como: concentrei-me em aprender a entender o LINQ .
Quatro pensamentos ... errr, não, isso não está certo ...
Quando leio a resposta de Martijn Verburg , a menção da funcionalidade do negócio me chama a atenção imediatamente para começar a implementar o código para qualquer coisa em que estou trabalhando ... Dependendo de quão superficial era a experiência inicial, eu poderia responder de maneira diferente, mas assumindo que era apenas mergulhando o dedão do pé, não tenho certeza se tinha algo diretamente para o trabalho (ou trabalho em breve) que me proporcionaria a emoção / paixão que acho que você provavelmente deveria ter pelos primeiros problemas que começa a enfrentar ...
Eu me baseei quase inteiramente em linguagens de tipo estatístico + metáforas e padrões de OOP + o que quer que eu tenha acabado envolvendo meu cérebro acidentalmente enquanto resolvia meus problemas reais ao longo dos anos ... Aponte que, se você é como eu, você provavelmente tem muito cérebro dedicado a coisas que não o ajudarão muito com o LINQ / FP.
Eu penso nisso meio que como programação procedural pura versus programação OO: há muitas coisas processuais que você acabará usando no OOP, mas aqueles que acessam o C ++ a partir do C sem priorizar o grok / ken / "get" OO acabam sendo muito, muito ruins em C ++. Na verdade, entrevistei muitos (15+) desenvolvedores de longo prazo de firmware e drivers de dispositivo que realmente pensavam conhecer C ++, mas que, no máximo , tinham uma compreensão básica / didática do C ++, praticamente sem entender ou experiência em OOP - porque eles nunca fizeram o OOP ... Eles escreveram classes multiuso singleton com membros estáticos e funções estáticas com alguma quantidade de classes não estáticas / não singleton que foram usadas como estruturas.
E o FP tem alguns conceitos igualmente alucinantes (para aqueles que não foram levantados sobre o paradigma) e outras coisas que o acompanham, e (embora eu tenha achado a hibridação de muitas técnicas ideal para mim) eu entendo mais e mais com o passar do tempo, exatamente quão limitado meu pensamento era antes de obter habilidades funcionais reais no meu conjunto de ferramentas; Eu havia conseguido implementar muitas coisas no passado de uma maneira um pouco mais criativa que talvez a maioria dos programadores de OO, mas como eu uso os conceitos de como meu pensamento era atrofiado antes ... Há classes inteiras de problemas que podem ser resolvidos em algumas linhas que costumavam ser muito complicadas em C ++ / C #.
de repente você se encontra ...
Em uma postagem "muito longa"
Você está em um labirinto de "não lidos" sinuosos, todos iguais.
Você vê uma teleconferência em um futuro próximo, se aproximando rapidamente.
> conciso
Uhhuh. Certo. Ok, diremos que o modo "conciso" está "ativado".
Você vê uma teleconferência em um futuro próximo, se aproximando rapidamente.
> o que isso quer dizer?
Apenas dizendo'. Você não teve que fazer algo esta manhã?
Você vê uma teleconferência em um futuro próximo, se aproximando rapidamente.
> ei, isso é uma tristeza atrás de você?
O que!? ONDE?! [foge gritando]
> Desculpe, eu não entendi O QUE ONDE, reformular?
[continuou correndo e gritando, sarcasmo despercebido]
Então ... O que devo aprender, querido PSE, querido PSE?
Eu, pessoalmente, comecei em C # com o LINQ. Isso me permitiu introduzir alguns conceitos de cada vez, e enquanto eu lia constantemente sobre FP e seus conceitos, e mais LINQ e o relacionamento entre os dois, ele me deu um caminho a seguir enquanto ainda fazia um trabalho produtivo. Eu adicionei algumas coisas ao mesmo tempo, as consultas de dados rapidamente se tornaram uma ferramenta útil para mim sem ter que entender muito.
Agora, olhando para trás, eu meio que gostaria de poder fazer meu próximo projeto (abordado cerca de um ano depois) primeiro; Eu me familiarizei moderadamente com o F # (que, aliás, me deu um grande avanço no aprendizado de ML (metalinguagem) e de outros derivados (por exemplo, OCaml também).
Basicamente, acho que uma resposta decente para 'o que' depende de encontrar um bom pareamento de algum problema de programação que lhe interesse, mas é claro que deve emparelhar com um pouco de FP que você deseja aprender ... (e você pode enxaguar / repita / ensaboe depois de tirar algo da lista ...) E, é claro, você sempre acaba aprendendo um pouco mais do que a principal coisa que se propõe a fazer; No começo, dei alguns passos de bebê, mas depois acabei fazendo coisas maiores e deixando as coisas menores se encaixarem enquanto as fazia.
Primeiro, o que flutua no seu barco? Especialmente no início, é melhor ter algo divertido e emocionante (para você) e que mantenha seu interesse suficiente para que valha a pena. Portanto, problemas de IOW para trabalhar e técnicas que resolvam esses problemas ... LINQ e consulta de dados em linha para mim primeiro. A recursão foi outra para mim, incluindo a recursão da cauda. Eu gosto muito da GodelEscherBach-ness; e eu estava lendo sobre recursão da cauda. Por volta dessa época, as coisas em que eu estava trabalhando foram suspensas e acabei tendo um grande período de tempo, para que eu pudesse continuar por um bom tempo. Foi mais fácil com menos interrupções, mas como escolhi coisas que achei divertidas, não foi tão difícil, mesmo com a interrupção do trabalho. :)
E, embora eu não tenha inventado nada legal, posso falar sobre o Programa de Caranguejo autoconsciente, eu consegui ficar muito bom nisso.
E ... Com o que aprenderei, querido PSE, querido PSE, com quê?
Para isso, usei vários algoritmos nos quais, de qualquer forma, eu estava interessado, além de várias coisas que eu imaginava se você poderia fazer em F #, e quando eu ficava sem ideias, lidava com coisas como 99 garrafas de cerveja e o Project Euler problemas ...
Tenho certeza que você pode encontrar muitas coisas que lhe interessam para as quais o FP é relevante; oferece tudo, desde aprimoramentos até OOP, que ajudam a declarar as coisas de maneira um pouco mais sucinta, até distorcer a maneira como você pensaria antes em uma forma que você não reconhece e provavelmente nem tinha o modelo mental para expressar antes.
Mas ... Há um buraco no meu modelo, querido PSE, um buraco ...
E é por isso que é importante que, especialmente no começo, mas realmente durante todo o seu tempo aprendendo (e nem sempre é verdade quando você está aprendendo alguma coisa?), Você pelo menos gaste um tempo entre os problemas para ler coisas não relacionadas, mas ainda FP e tempo para ler o código fonte escrito por especialistas, resolvendo preferencialmente os mesmos problemas ou problemas semelhantes; bem como suas explicações sobre as coisas ...
E o tempo todo, você precisa esforçar seu cérebro para entender tudo, não da sua antiga perspectiva, mas de dentro do próprio FP ... to está se tornando mais ou menos fluente em holandês; em algum momento eu consegui me colocar o suficiente na mentalidade (eu fiz isso por imersão, que é basicamente o que eu descrevi aqui; mergulhando no FP, em vez de tentar aprendê-lo apenas através do "livro larnin '" ...
E, eventualmente, eu fiz; Consegui internalizar tudo e girar meu cérebro até que comecei a usar o FP / LINQ sem que eu tivesse que fazer um esforço para traduzi-lo novamente em OOP. (Sim, eu fiz isso; eu tinha que ter algo para pendurar minha saia. Chapéu. Tanto faz.)
Pensamentos finais...
Meu Deus, parece que você está perdendo sua capacidade de pensar em sua assinatura inteligente
títulos de seção. Que pena.
A teleconferência ainda está se aproximando rapidamente. Parece muito maior agora.
> sim, sim, bem .. conciso e tudo. Eu vejo que você conseguiu perder essa tristeza.
por um triz, que ... bem, sim, eu estou sendo ... OH NÃO VOLTA!
AAAAAAAHHHHHH !! [foge gritando, mais uma vez]
A teleconferência ainda está se aproximando rapidamente.
De alguma forma, lembra Sir Lancyjohn Cleezewiz.
Está quase em cima de você.
> ei, volte depressa! Eu tenho um experimento para tentar com você! (e um po-ta-to)
Você pode encontrar muitas informações on-line sobre o FP, naturalmente. O principal é entender os conceitos básicos e aprender a aplicá-los. Por exemplo, aprenda sobre imutabilidade e por que é importante / útil para o FP. Eu recomendo aprender um pouco de teoria para acompanhar tudo, como o FP puro pode ser muito mais passível de prova formal. Esta foi uma força motriz por trás do progenitor do F #, ML. YMMV, é claro, você pode ser alguém entediado às lágrimas; nesse caso, muitos exemplos, muitas tentativas e erros para ver exatamente por que as técnicas usadas são o que são, o ajudarão a ter esse 'Aha!' momento da lâmpada.
Então, vou deixar por agora. Espero que isso seja útil para alguém. Eu queria me aprofundar um pouco mais em coisas específicas, mas estou sem tempo no momento. Espero encontrar algum tempo para voltar logo, embora pareça uma semana longa para mim, então provavelmente será pelo menos o fim de semana.
<3 "Apresentando o GRUEBOL, uma piada; apenas até o SnozzML terminar. Deve ser em breve; tenho um comitê enorme me ajudando desta vez." - Grace Hopperwit Egghead, Últimas Palavras Famosas, XX97 GUE <3