Quais são os benefícios da programação funcional? [fechado]
9 answers
O estilo de programação funcional é descrever o que você quer, em vez de como obtê-lo. ie: em vez de criar um for-loop com uma variável iterator e marchar através de um array fazendo algo para cada célula, você diria 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 mais básicas de programação para o compilador, ideias como as compreensões de listas 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 iterator para ser o centro de um loop, então este e outros tipos de sobrecarga são eliminados do seu código.O outro grande benefício é a concorrência, que é mais fácil de fazer com a programação funcional porque o compilador está a cuidar da maior parte das operações que costumavam requerer a configuração manual de variáveis de Estado (como a iterator in a loop).
Alguns benefícios de desempenho podem ser vistos no contexto de um único processador também, dependendo da forma como o programa é escrito, porque a maioria das linguagens funcionais e extensões suportam avaliação preguiçosa. Em Haskell você pode dizer "esta etiqueta representa um array contendo todos os números pares". Tal array é infinitamente grande, mas você pode pedir o elemento 100,000 desse array a qualquer momento sem ter que saber--no tempo de inicialização de array--apenas o que o o maior valor é que vais precisar. O valor será calculado apenas quando você precisar, e não mais.
Por Que a programação funcional é importante
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
Um bom ponto de partida, portanto, seria tentar compreender algumas coisas que não são possíveis em línguas imperativas, mas possíveis em línguas funcionais.Se você está falando de computabilidade, não há nada que seja possível em programação funcional mas não imperativa (ou vice-versa). O objectivo dos diferentes paradigmas de programação não é tornar as coisas possíveis que não eram possíveis antes, é facilitar as coisas que eram difíceis. antes.
A programação funcional tem como objetivo permitir que você escreva mais facilmente programas que sejam concisos, livres de bugs e parallelizáveis.
Não tem de ser um ou outro: usar uma linguagem como o C#3.0 permite misturar os melhores elementos de cada um. OO pode ser usado para a estrutura de grande escala a nível de classe e acima, estilo funcional para a estrutura de pequena escala a nível de método.
Usar o estilo funcional permite que o código seja escrito que declara claramente a sua intenção, sem ser misturado com declarações de fluxo de controle, etc. Devido aos princípios como a programação livre de efeito colateral, é muito mais fácil razão sobre o código, e verificar a sua correção.
Eu acho que o exemplo mais prático da necessidade de programação funcional é que programas funcionais de concorrência são naturalmente seguros de thread e dada a ascensão de hardware multi - core isso é de extrema importância.
A programação funcional também aumenta a modularidade - você pode ver muitas vezes métodos/funções em imperativos que são muito longos - você quase nunca verá uma função mais do que um par de linhas de comprimento. E como tudo é dissociado-reutilizabilidade é muito melhoria e teste de unidade é muito fácil.
Uma vez que o programa cresce, o número de comandos no nosso vocabulário torna-se demasiado elevado, 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 forma melhor. Podemos associar todos os comandos que envolvem o cliente com 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 deve proceder.
Funcional a programação fornece uma maneira completamente diferente de estender o vocabulário. Não se limitando a adicionar novos comandos primitivos; nós também podemos adicionar novas estruturas de controle-primitivos que especificam como podemos colocar comandos juntos para criar um programa. Em linguagens imperativas, nós fomos capazes de compor comandos em uma seqüência ou usando um número limitado de construções construídas, como loops, mas se você olhar para programas típicos, você ainda vai ver muitas estruturas recorrentes; maneiras comuns de combinar comandos
Se você ainda não conhece programação funcional, então aprender isso lhe dá mais maneiras de resolver problemas.
FP é uma generalização simples que promove funções para valores de primeira classe, enquanto o OOP é para estruturação em larga escala de código. 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.
Muitas línguas fornecem tanto FP como OOP, incluindo OCaml, C # 3.0 e F#.
Saúde., Jon Harrop.Não pense em programação funcional em termos de"necessidade". Em vez disso, pense nisso como outra técnica de programação que irá abrir a sua mente assim como OOP, modelos, linguagem de montagem, etc pode ter mudado completamente a sua maneira de pensar quando (se) você aprendeu-os. Em última análise, aprender programação funcional fará de você um melhor programador.