Pergunta

Quais você acha que 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 programação funcional e OOP?

Foi útil?

Solução

O estilo da programação funcional é descrever o que você deseja, e não como consegui-lo.ou seja:em vez de criar um loop for com uma variável iteradora e percorrer um array fazendo algo em cada célula, você diria o equivalente a "este rótulo se refere a uma versão deste array onde esta função foi executada em todos os elementos. "

A programação funcional move ideias de programação mais básicas para o compilador, ideias como compreensão de lista e armazenamento em 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 iteradora para ser o centro de um loop; portanto, esse e outros tipos de sobrecarga são eliminados do seu código.

O outro grande benefício é a simultaneidade, que é mais fácil de fazer com a programação funcional porque o compilador cuida 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 forma como o programa é escrito, porque a maioria das linguagens funcionais e extensões suportam avaliação lenta.Em Haskell você pode dizer "este rótulo representa um array 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 que você vai precisar.O valor será calculado somente quando você precisar e nada mais.

Outras dicas

O maior benefício é que não é o que você está acostumado. Escolha um idioma como esquema e aprenda a resolver problemas com ele, e você se tornará um programador melhor em idiomas que você já conhece. É como aprender uma segunda língua humana. Você assume que outros são basicamente uma variação por conta própria, porque você não tem nada com que compará -lo. A exposição a outras pessoas, específicas que não está relacionada ao que você já conhece, é instrutiva.

Por que a programação funcional é importante
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf

Portanto, um bom ponto de partida seria tentar entender algumas coisas que não são possíveis em idiomas imperativos, mas possíveis em idiomas funcionais.

Se você está falando sobre computabilidade, é claro que não há nada possível na programação funcional, mas não imperativa (ou vice -versa).

O objetivo de diferentes paradigmas de programação não é possível tornar as coisas que não eram possíveis antes, é facilitar as coisas antes.

A programação funcional visa permitir que você escreva mais facilmente programas concisos, sem erros e paralelizáveis.

Não precisa ser um ou outro: usar um idioma como C#3.0 permite misturar os melhores elementos de cada um. OO pode ser usado para a estrutura em larga escala no nível da classe e acima, estilo funcional para a estrutura de pequena escala no nível do método.

O uso do estilo funcional permite que o código seja escrito que declara sua intenção claramente, sem ser misturada com declarações de fluxo de controle, etc. Devido aos princípios como programação livre de efeitos colaterais, é muito mais fácil raciocinar o código e verificar sua correção .

Eu acho que o exemplo mais prático da necessidade de programação funcional é a simultaneidade - os programas funcionais são naturalmente seguros e, dada a ascensão do hardware multi -núcleo, isso é de total importância.

A programação funcional também aumenta a modularidade - muitas vezes você pode ver métodos/funções em imperativos que são muito longos - quase nunca verá uma função mais do que algumas linhas de comprimento. E como tudo é dissociado - a reutilização é muito aprimorada e o teste de unidade é muito fácil.

Quando o programa cresce, o número de comandos em nosso vocabulário se torna muito alto, dificultando o uso. É aqui que a programação orientada a objetos facilita nossa vida, porque nos permite organizar nossos comandos de uma maneira melhor. Podemos associar todos os comandos que envolvem o cliente a alguma entidade do cliente (uma classe), o que torna a descrição muito mais clara. No entanto, o programa ainda é uma sequência de comandos especificando como ele deve prosseguir.

A programação funcional fornece 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 montar comandos para criar um programa. Em idiomas imperativos, 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; maneiras comuns de combinar comandos

Não pense na programação funcional em termos de "necessidade". Em vez disso, pense nisso como outra técnica de programação que abrirá sua mente como OOP, modelos, linguagem de montagem, etc. pode ter mudado completamente sua maneira de pensar quando (se) você os aprendeu. Por fim, o aprendizado de programação funcional fará de você um programador melhor.

Se você ainda não conhece a programação funcional, aprender, ele oferece mais maneiras de resolver problemas.

O FP é uma generalização simples que promove funções para valores de primeira classe, enquanto o OOP é para a estruturação de código em larga escala. Há alguma sobreposição, no entanto, onde os padrões de design OOP podem ser representados diretamente e muito mais sucintamente usando funções de primeira classe.

Muitos idiomas fornecem FP e OOP, incluindo OCAML, C# 3.0 e F#.

Saúde, Jon Harrop.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top