Quais são os benefícios da programação funcional? [fechado]

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 programação funcional e OOP?

Author: Bill the Lizard, 2008-09-24

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.

 66
Author: Chris Wenham, 2008-09-24 16:14:36
O maior benefício é que não é aquilo a que estás habituado. Escolha uma linguagem como esquema e aprenda a resolver problemas com ele, e você vai se tornar um programador melhor em línguas que você já conhece. É como aprender uma segunda língua humana. Você assume que os outros são basicamente uma variação em seu próprio país, porque você não tem nada com o que comparar. A exposição a outros, em particular aqueles que não estão relacionados com o que você já sabe, é instrutiva.
 25
Author: Kirk Strauser, 2008-09-24 16:16:53

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

 11
Author: Robert Harvey, 2011-06-29 22:35:59
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.

 8
Author: sepp2k, 2010-05-23 18:31:16

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.

 5
Author: Samuel Jack, 2008-09-24 16:10:46

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.

 3
Author: Bozhidar Batsov, 2010-05-23 18:33:16

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

 2
Author: Soner Gönül, 2011-08-10 20:40:55

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.
 0
Author: Jon Harrop, 2008-10-19 04:59:48

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.

 0
Author: Justin Ethier, 2010-05-23 18:37:33