Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Tecnologia de Informação: Programação Funcional
A programação funcional é um paradigma de desenvolvimento de software baseado no uso de funções matemáticas puras,
imutabilidade de dados e ausência de efeitos colaterais. Seu objetivo é criar sistemas mais previsíveis, modulares
e fáceis de testar. Diferente da programação imperativa, onde o foco está na sequência de comandos e mudanças de
estado, a programação funcional concentra-se na avaliação de expressões e composição de funções.
No contexto da tecnologia da informação, a programação funcional ganhou relevância com a crescente complexidade dos
sistemas e a necessidade de maior confiabilidade. Linguagens como Haskell, Erlang, Clojure, F#, Scala e até mesmo
JavaScript (com funções de ordem superior) oferecem suporte a esse paradigma.
Entre os princípios fundamentais, destacam-se:
1. **Funções puras**: sempre retornam o mesmo resultado para as mesmas entradas, sem alterar variáveis externas.
2. **Imutabilidade**: dados não são alterados após serem criados; em vez disso, são geradas novas estruturas.
3. **Funções de ordem superior**: funções que recebem outras funções como parâmetros ou as retornam como resultado.
4. **Recursão**: frequentemente substitui loops, permitindo iteração através de chamadas recursivas.
5. **Avaliação preguiçosa (lazy evaluation)**: adia a execução até que o resultado seja realmente necessário.
A programação funcional é especialmente útil em aplicações que exigem alto grau de paralelismo e processamento
concorrente, pois a ausência de efeitos colaterais minimiza problemas de sincronização.
No desenvolvimento moderno, muitas linguagens multi-paradigma incorporam recursos funcionais. Por exemplo,
o JavaScript, com funções como `map`, `filter` e `reduce`, incentiva a adoção de práticas funcionais, mesmo que
seja originalmente imperativo.
Para adotar a programação funcional de forma eficaz, recomenda-se:
- Evitar variáveis mutáveis.
- Priorizar a composição de funções em vez de instruções sequenciais.
- Utilizar bibliotecas e frameworks que favoreçam a programação declarativa.
- Entender e aplicar funções de ordem superior e currying.
- Praticar a modelagem de problemas como transformações de dados.
O uso desse paradigma não é isento de desafios. A curva de aprendizado pode ser íngreme, especialmente para
desenvolvedores acostumados com linguagens imperativas. Além disso, a recursão, embora elegante, pode gerar problemas
de desempenho se não for utilizada com técnicas como *tail call optimization*.
Ainda assim, a adoção da programação funcional tende a aumentar, impulsionada por demandas de escalabilidade,
manutenibilidade e qualidade de software. Grandes empresas de tecnologia já utilizam esse paradigma para lidar
com sistemas distribuídos e de alta disponibilidade.
Em resumo, a programação funcional não é apenas uma técnica, mas uma filosofia que valoriza a clareza, a
previsibilidade e a ausência de efeitos colaterais. Ao incorporá-la em projetos, é possível reduzir bugs,
melhorar a testabilidade e criar software mais confiável e sustentável.
Perguntas e Respostas
1. Qual o principal foco da programação funcional?
 Sequência de comandos
 Avaliação de expressões e composição de funções (X)
 Alteração de estado global
2. O que caracteriza uma função pura?
 Pode alterar variáveis externas
 Retorna resultados aleatórios
 Retorna o mesmo resultado para as mesmas entradas (X)
3. O que significa imutabilidade de dados?
 Os dados podem ser alterados livremente
 Os dados não mudam após serem criados (X)
 Os dados são sempre deletados
4. Qual paradigma contrasta diretamente com o funcional?
 Imperativo (X)
 Lógico
 Orientado a objetos
5. Qual dessas linguagens é conhecida por ser puramente funcional?
 Java
 Haskell (X)
 Python
6. O que são funções de ordem superior?
 Funções que chamam APIs
 Funções que recebem ou retornam outras funções (X)
 Funções com mais de um parâmetro
7. O que recursão substitui frequentemente?
 Condicionais
 Loops (X)
 Declarações de variáveis
8. O que é avaliação preguiçosa?
 Execução imediata
 Execução somente quando necessário (X)
 Execução em segundo plano
9. Por que a programação funcional é útil para sistemas concorrentes?
 Porque evita sincronização complexa (X)
 Porque é mais lenta
 Porque usa loops infinitos
10. Quais linguagens multi-paradigma adotam recursos funcionais?
 JavaScript (X)
 Assembly
 COBOL
11. O que é currying?
 Transformar funções com múltiplos parâmetros em funções de um parâmetro (X)
 Converter código em bytes
 Criar loops complexos
12. Quais funções JavaScript incentivam o uso funcional?
 map, filter, reduce (X)
 print, input, len
 malloc, free, realloc
13. Qual é um desafio da programação funcional?
 Curva de aprendizado íngreme (X)
 Pouca legibilidade
 Falta de suporte a testes
14. O que é *tail call optimization*?
 Otimização de chamadas recursivas (X)
 Ordenação de listas
 Minimização de código
15. O que é um efeito colateral em programação?
 Alterar estado fora da função (X)
 Executar função rapidamente
 Reutilizar código
16. Por que a imutabilidade ajuda no paralelismo?
 Evita conflitos de estado (X)
 Aumenta o uso de memória
 Reduz a clareza
17. Qual empresa utiliza programação funcional?
 Google (X)
 Empresa fictícia
 Nenhuma
18. Por que funções puras são previsíveis?
 Porque não dependem de variáveis externas (X)
 Porque usam loops
 Porque modificam o ambiente
19. O que é programação declarativa?
 Focar no que deve ser feito (X)
 Focar em como fazer
 Focar em manipulação de estado
20. Qual benefício central da programação funcional?
 Maior previsibilidade e testabilidade (X)
 Maior consumo de memória
 Código mais complexo

Mais conteúdos dessa disciplina