Recentemente, tenho me preocupado mais com a maneira como escrevo meu código. Depois de ler alguns livros sobre padrões de design (e a implementação excessivamente zelosa deles, tenho certeza), mudei muito meu pensamento para encapsular aquilo que muda. Costumo notar que escrevo menos interfaces e mais código orientado a métodos, onde adoro transformar a vida em classes antigas com predicados, ações e outras tarefas delegadas. Costumo pensar que muitas vezes são as ações que mudam, então as encapsulo. Mesmo que muitas vezes, embora nem sempre, quebre as interfaces para um único método, prefiro usar um delegado para a tarefa em vez de forçar o código do cliente a criar uma nova classe.
Então eu acho que isso me atingiu. Eu deveria estar fazendo programação funcional?
Edit: Eu posso ter um equívoco sobre programação funcional.
Atualmente, minha linguagem de escolha é C #, e eu venho de um background em C ++. Eu trabalho como desenvolvedor de jogos, mas atualmente estou desempregado.
Eu tenho uma grande paixão pela arquitetura. Minhas virtudes são códigos limpos, flexíveis, reutilizáveis e de manutenção. Não sei se fui envenenado por esses caminhos ou se é para melhor. Estou com febre de refatoração ou devo seguir em frente? Entendo que isso possa ser uma pergunta sobre "use a ferramenta certa para o trabalho" , mas gostaria de ouvir seus pensamentos.
Devo escolher uma linguagem funcional? Um dos meus fatores de medo é deixar o conforto do Visual Studio.
Respostas:
SIM
Aprender coisas novas deve ser divertido. E aprender uma nova maneira de programar deve torná-lo um programador melhor. Verifique um dos Haskell ou Erlang, ambos são funcionais, mas são muito diferentes. Se você escolher Haskell, encontre algumas palestras de "Simon Payton Jones" no youtube ou podcasts. O cara é um ótimo orador.
fonte
Piedosos * * * *. Não há bala de prata. Se afasta. Relaxe, respire fundo.
Só porque você tem uma ferramenta na sua caixa de ferramentas, isso não significa que você é obrigado a usá-la. Concentre-se na tarefa em questão, ou seja, escrever um programa que funcione e refatorar quando o código cheirar mal. Não encapsule e abstraia todos os pequenos detalhes, apenas porque podem mudar em algum dia no futuro. Na IMO, é realmente muito melhor começar direto, KISS & YAGNI, e reagir às mudanças nos requisitos quando elas realmente mudam .
Não acho que alguém aqui possa lhe dizer se uma linguagem funcional é ou não mais adequada às suas necessidades. Porque você não nos disse no que está trabalhando.
fonte
Você pode pegar F # . É a linguagem funcional do .NET, que permitirá que você use o Visual Studio e reutilize grande parte do seu conhecimento do .NET. É claro que seus assemblies integram-se aos assemblies de C # sem problemas (permitindo combinar facilmente C #, C ++ / CLI e F # em um projeto). O suporte ao F # vem com o VS Pro ou melhor, mas não tenho certeza se ele está ativado por padrão.
fonte
Na OMI, vale a pena experimentar uma linguagem funcional. Mesmo que você nunca o use diretamente em um produto liberado, aprendê-lo quase certamente ajudará a fornecer uma perspectiva / ponto de vista um pouco diferente da programação. Mesmo se você continuar fazendo toda a sua codificação "real" em C #, é bem provável que isso ajude a melhorar o código que você escreve em C #.
Como outros já mencionaram, a escolha óbvia para alguém acostumado ao Visual Studio é o F #, que é basicamente um derivado do Ocaml / Caml / ML. A IMO foi uma boa escolha da Microsoft para apresentar às pessoas a programação funcional - é uma linguagem funcional completa, mas não possui uma sintaxe tão estranha quanto a de alguns (por exemplo, enquanto as linguagens baseadas em Lisp têm têm vantagens reais, os iniciantes quase sempre acham difícil ler).
fonte
Sim você deveria.
Se você escolher um idioma puro, como Haskell, aprenderá não apenas um novo idioma, mas uma nova maneira de pensar. Isso também pode ajudá-lo posteriormente em seu trabalho proceural / OO.
O F #, por outro lado, não é puro e, portanto, você pode facilmente perder o que é importante na programação funcional. Você pode, por assim dizer, continuar escrevendo programas procedimentais que modificam uma variável aqui, realizam alguns efeitos colaterais, apenas na sintaxe F #.
fonte
Se você já está usando c #, não precisa de um novo idioma - com a combinação de métodos de extensão, lambdas e os tipos genéricos de Func / Action, é bastante fácil escrever código funcional em C # - para que você possa usar um estilo funcional em os algoritmos nos quais faz mais sentido sem a necessidade de alterar o aplicativo inteiro.
fonte