Quais são os benefícios da programação funcional? E como eles se aplicam aos programadores hoje?
Quais são as maiores diferenças entre a programação funcional e OOP?
functional-programming
Rayne
fonte
fonte
Respostas:
O estilo de programação funcional é descrever o que você deseja, em vez de como obtê-lo. ie: em vez de criar um loop for com uma variável iteradora e marchar através de um array fazendo algo em cada célula, você diria que o equivalente a "este rótulo se refere a uma versão deste array onde esta função foi feita em todos os elementos. "
A programação funcional move ideias de programação mais básicas para o compilador, ideias como compreensões de lista e cache.
O maior benefício da programação funcional é a brevidade, porque o código pode ser mais conciso. Um programa funcional não cria uma variável iterativa para ser o centro de um loop, portanto, esse e outros tipos de sobrecarga são eliminados de seu código.
O outro benefício principal é a simultaneidade, que é mais fácil de fazer com a programação funcional porque o compilador está cuidando da maioria das operações que costumavam exigir a configuração manual de variáveis de estado (como o iterador em um loop).
Alguns benefícios de desempenho também podem ser vistos no contexto de um processador único, dependendo da maneira como o programa é escrito, porque a maioria das linguagens funcionais e extensões oferecem suporte a avaliação lenta. Em Haskell, você pode dizer "este rótulo representa uma matriz contendo todos os números pares". Esse array é infinitamente grande, mas você pode solicitar o 100.000º elemento desse array a qualquer momento, sem precisar saber - no momento da inicialização do array - qual é o maior valor de que você precisará. O valor será calculado apenas quando você precisar dele e não mais.
fonte
O maior benefício é que não é o que você está acostumado. Escolha uma linguagem como Scheme e aprenda a resolver problemas com ela, e você se tornará um programador melhor em linguagens que já conhece. É como aprender uma segunda língua humana. Você supõe que os outros são basicamente uma variação em si mesmo, porque você não tem nada para compará-los. A exposição a outras pessoas, em particular aquelas que não estão relacionadas com o que você já sabe, é instrutiva.
fonte
Por que a programação funcional é importante
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
fonte
Se você está falando sobre computabilidade, é claro que não há nada que seja possível na programação funcional, mas não imperativa (ou vice-versa).
O objetivo dos diferentes paradigmas de programação não é tornar possíveis coisas que não eram possíveis antes, mas sim tornar fáceis as coisas que antes eram difíceis.
A programação funcional visa permitir que você escreva mais facilmente programas concisos, sem bugs e passíveis de paralelização.
fonte
Não precisa ser um ou outro: usar uma linguagem como C # 3.0 permite que você combine os melhores elementos de cada um. OO pode ser usado para a estrutura de grande escala no nível de classe e acima. Estilo funcional para a estrutura de pequena escala no nível de método.
Usar o estilo Funcional permite que o código seja escrito que declare sua intenção claramente, sem ser misturado com instruções de fluxo de controle, etc. Por causa dos princípios como programação livre de efeitos colaterais, é muito mais fácil raciocinar sobre o código e verificar sua exatidão .
fonte
Acho que o exemplo mais prático da necessidade de programação funcional é a simultaneidade - os programas funcionais são naturalmente thread-safe e, devido ao surgimento do hardware de vários núcleos, isso é de extrema importância.
A programação funcional também aumenta a modularidade - muitas vezes você pode ver métodos / funções imperativos que são muito longos - você quase nunca verá uma função com mais do que algumas linhas. E como tudo está desacoplado - a reutilização é muito melhorada e o teste de unidade é muito, muito fácil.
fonte
Uma vez que o programa cresce, o número de comandos em nosso vocabulário torna-se muito alto, tornando-o muito difícil de usar. É aqui que a programação orientada a objetos torna nossa vida mais fácil, porque nos permite organizar nossos comandos de uma maneira melhor. Podemos associar todos os comandos que envolvem cliente a alguma entidade cliente (uma classe), o que torna a descrição muito mais clara. No entanto, o programa ainda é uma sequência de comandos que especifica como deve proceder.
A programação funcional oferece uma maneira completamente diferente de estender o vocabulário. Não limitado a adicionar novos comandos primitivos; também podemos adicionar novas estruturas de controle - primitivas que especificam como podemos colocar comandos juntos para criar um programa. Em linguagens imperativas, fomos capazes de compor comandos em uma sequência ou usando um número limitado de construções embutidas, como loops, mas se você olhar para programas típicos, ainda verá muitas estruturas recorrentes; formas comuns de combinar comandos
fonte
Não pense na programação funcional em termos de uma "necessidade". Em vez disso, pense nisso como outra técnica de programação que abrirá sua mente, assim como OOP, modelos, linguagem assembly, etc. podem ter mudado completamente sua maneira de pensar quando (se) você os aprendeu. Em última análise, aprender programação funcional o tornará um programador melhor.
fonte
Se você ainda não conhece a programação funcional, aprendê-la oferece mais maneiras de resolver problemas.
FP é uma generalização simples que promove funções para valores de primeira classe, enquanto OOP é para estruturação de código em larga escala. Há alguma sobreposição, no entanto, onde os padrões de projeto OOP podem ser representados diretamente e muito mais sucintamente usando funções de primeira classe.
Muitas linguagens fornecem FP e OOP, incluindo OCaml, C # 3.0 e F #.
Saúde, Jon Harrop.
fonte