Playlists
Quando programadores de C, C++, Java, Python, … precisam de uma estrutura de dados específica:
Apesar desses livros se dizerem “independentes da linguagem de programação”, eles são independentes apenas no sentido do Henry Ford:
Programadores podem usar a linguagem que quiserem, contanto que ela seja imperativa1.
Queremos ajudar a resolver este problema!
Nas aulas seguintes, mostraremos como implementar e manipular algumas estruturas de dados clássicas no contexto funcional. Além disto também apresentaremos algumas estruturas nascidas no contexto funcional para lidar com as suas peculiaridades como imutabilidade, persistência, transparência referencial, avaliação preguiçosa, …
Apesar de muitos reconhecerem os benefícios das linguagens funcionais, até recentemente elas eram pouco utilizadas e até mesmo pouco conhecidas.
Isso explica, em parte, porque os códigos existentes atualmente são majoritariamente imperativos.
Além disto, historicamente, linguagens funcionais tinham um desempenho bem inferior ao de linguagens tradicionais. Isso tem mudado bastante com a evolução de compiladores que fazem análises sofisticadas de código.
Então basta usarmos boas estruturas!
Mas porque desenvolver estruturas de dados funcionais é mais difícil que estruturas imperativas?
Atualizações destrutivas exigem cuidado em seu uso, porém podem ser extremamente poderosas e eficientes se bem utilizadas.
Em uma estrutura imperativa, raramente esperamos que ela seja persistente (en: persistent ⬌ ephemeral).
Estruturas de dados persistentes são aquelas que permitem a
existência simultânea de diversas versões da estrutura
(tipicamente com compartilhamento de dados).
Estruturas de dados efêmeras são aquelas que permitem a
existência de apenas uma versão da estrutura de dados
simultaneamente.
Queremos, então:
Não nos ajuda o fato de que é possível mostrar que, em alguns casos, linguagens funcionais são intrinsecamente menos eficientes que suas colegas imperativas.
Ainda há esperança! A verdade é que, na prática, a coisa não é tão assustadora assim!
Estes slides foram preparados para os cursos de Paradigmas de Programação e Desenvolvimento Orientado a Tipos na UFABC.
Este material pode ser usado livremente desde que sejam mantidos, além deste aviso, os créditos aos autores e instituições.
Henry Ford certa vez disse sobre as cores disponíveis para o Ford T: “[Os clientes] podem escolher a cor que quiserem, contanto que seja preta” ↩︎