Paradigma Funcional
Bem vindo de volta a mais uma postagem educativa sobre paradigmas da programação e suas características, hoje iremos abordar um paradigma muito potente porem subutilizado no mercado, esse sendo o paradigma funcional. Veremos o que é como funciona e quais as linguagem mais utilizadas, então vamos lá.
O que é:
A programação funcional, como o nome já diz, é a maneira de programar utilizando apenas funções matemáticas, simples assim. Porém sua aplicação não segue os padrões dos outros paradigmas, veremos mais a frente alguns exemplos de codificação.
Como funciona:
Assim como todos os outros paradigmas, o funcional trabalha com valores de tipagem idêntica (Bool, Int,Float , Char e String), porem diferente dos outros paradigmas, as funções não possuem variáveis, elas possuem parâmetros. “Mas qual a diferença entre variável e parâmetro?” você deve estar se perguntando, a diferença é simples, variáveis como o próprio nome já diz variam ao decorrer do algoritmo e podem alterar de valores, já os parâmetros permanecem imutáveis durante toda a execução. Com a imutabilidade é impossível utilizar laços de repetição de maneira otimizada, porem ao invés disso utilizamos um atributo muito poderoso chamado recursividade.
A recursividade é a capacidade de uma função chamar ela mesma durante sua execução. “Como assim chamar ela mesma?”, aposto que você deve ter pensando isso, vou lhe demonstrar utilizando um exemplo fácil, vamos utilizar a função Fatorial:
Fat x =
if x== 0 them 1;
eles if x==0 them 1;
eles x* fatorial(x-1);
Basicamente o código acima vai lhe retornar o fatorial de qualquer numero de forma recursiva. A recursividade funciona através de dois casos, sendo esses o caso base e o caso recursivo. O caso base é o caso mais simples que a função possa ser aplicada, no nosso exemplo seria o fatorial de 0 e 1, que em ambos os casos é 1. Agora o caso recursivo é onde a função irá entrar em loop, porem reduzindo o valor até chegar em seus caso mais simples.
Outra coisa que PF tem de diferente a PI, seriam as listas. Na programação imperativa utilizamos alocação de memoria e dados através de vetores, matrizes e variáveis, já na Programação funcional utiliza-se as listas. Listas funcionam de maneira similar a um vetor, porém sem a alocação de memoria. Listas são obrigatoriamente homogenias, isso quer dizer que listas só podem possuir um tipo de tipagem.
Exemplos de linguagens funcionais:
1- Haskell : sem sombra de duvidas a linguagem mais utilizadas deste paradigma, sendo fortemente aplicada ao meio acadêmico e cientifico.
2- Javascript : ela pode ser utilizada de maneira funcional, mas em sua maioria é utilizada de maneria Imperativa.
3- ELM: uma linguagem ainda em desenvolvimento que está ganhando espaço no mercado por unir o melhor do Haskell e a portabilidade do Javascript.
Bom, isso é tudo por hoje. Espero ter ajudado nos seus estudos, e fiquem atentos que nos próximos dias teremos mais postagens. Tchau.
Referencias:
https://www.youtube.com/watch?v=BxbHGPivjdc
livro: Haskell the craft of the funcional thinking.
O que é:
A programação funcional, como o nome já diz, é a maneira de programar utilizando apenas funções matemáticas, simples assim. Porém sua aplicação não segue os padrões dos outros paradigmas, veremos mais a frente alguns exemplos de codificação.
Como funciona:
Assim como todos os outros paradigmas, o funcional trabalha com valores de tipagem idêntica (Bool, Int,Float , Char e String), porem diferente dos outros paradigmas, as funções não possuem variáveis, elas possuem parâmetros. “Mas qual a diferença entre variável e parâmetro?” você deve estar se perguntando, a diferença é simples, variáveis como o próprio nome já diz variam ao decorrer do algoritmo e podem alterar de valores, já os parâmetros permanecem imutáveis durante toda a execução. Com a imutabilidade é impossível utilizar laços de repetição de maneira otimizada, porem ao invés disso utilizamos um atributo muito poderoso chamado recursividade.
A recursividade é a capacidade de uma função chamar ela mesma durante sua execução. “Como assim chamar ela mesma?”, aposto que você deve ter pensando isso, vou lhe demonstrar utilizando um exemplo fácil, vamos utilizar a função Fatorial:
Fat x =
if x== 0 them 1;
eles if x==0 them 1;
eles x* fatorial(x-1);
Basicamente o código acima vai lhe retornar o fatorial de qualquer numero de forma recursiva. A recursividade funciona através de dois casos, sendo esses o caso base e o caso recursivo. O caso base é o caso mais simples que a função possa ser aplicada, no nosso exemplo seria o fatorial de 0 e 1, que em ambos os casos é 1. Agora o caso recursivo é onde a função irá entrar em loop, porem reduzindo o valor até chegar em seus caso mais simples.
Outra coisa que PF tem de diferente a PI, seriam as listas. Na programação imperativa utilizamos alocação de memoria e dados através de vetores, matrizes e variáveis, já na Programação funcional utiliza-se as listas. Listas funcionam de maneira similar a um vetor, porém sem a alocação de memoria. Listas são obrigatoriamente homogenias, isso quer dizer que listas só podem possuir um tipo de tipagem.
Exemplos de linguagens funcionais:
1- Haskell : sem sombra de duvidas a linguagem mais utilizadas deste paradigma, sendo fortemente aplicada ao meio acadêmico e cientifico.
2- Javascript : ela pode ser utilizada de maneira funcional, mas em sua maioria é utilizada de maneria Imperativa.
3- ELM: uma linguagem ainda em desenvolvimento que está ganhando espaço no mercado por unir o melhor do Haskell e a portabilidade do Javascript.
Bom, isso é tudo por hoje. Espero ter ajudado nos seus estudos, e fiquem atentos que nos próximos dias teremos mais postagens. Tchau.
Referencias:
https://www.youtube.com/watch?v=BxbHGPivjdc
livro: Haskell the craft of the funcional thinking.
Entre Haskell e Elm, já que não podemos comparar as duas atualmente, você acha q Elm terá um espaço no mercado, assim que tiver melhor datação e fama ?
ReplyDeleteCreio que sim, infelizmente o ELM ainda esta muito instável, pois a cada atualização muita coisa de sua sintaxe ate mesmo de sua funcionalidade muda. Mas com o tempo e com boas atualizaçoes creio que ELM se torne uma linguagem bem útil.
DeleteQuais seriam os usos principais de linguagens funcionais no mercado atual, e qual seriam essas linguagens utilizadas?
ReplyDeleteSe não me engano, o javascript trabalha com algo chamado array. Isso não seria diferente das listas e, consequentemente, desconsiderar o javascript como funcional?
ReplyDelete