Atenção: esse artigo tem uma palestra complementar. Clique e assista!

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Do que trata o artigo

Como sabemos, a plataforma .Net suporta diversas linguagens de programação, sendo as mais importantes o VB.Net e o C#. Agora temos também o F#, uma linguagem funcional que veio para complementar a plataforma. Neste artigo vamos conhecer as principais funcionalidades do F#, a nova linguagem de primeira linha da plataforma .Net.


Para que serve

O F# é muito mais do que uma linguagem, é uma nova forma de pensar em programação para a plataforma .Net. Sendo capaz de se integrar com outras linguagens, o F# oferece a possibilidade de resolver problemas de alta complexidade de forma fácil e legível, como por exemplo, paralelismo.


Em que situação o tema é útil

Muito mais do que criar classes especializadas em cálculos, o F# pode ser utilizado em áreas como programação paralela, assíncrona e tratamento de dados, por exemplo. O F# também se encaixa perfeitamente em classes de apoio ao negócio, em algoritmos de processamento, jogos, Web Services, ou seja, em praticamente qualquer área podemos encontrar aplicações para o F#.

Resumo do DevMan

O F# é a nova linguagem de primeira linha da plataforma .Net e é sem dúvida uma visão bem diferente do que estamos acostumados com VB.Net e C#. Com alto poder de performance, o F# pode ajudar nos projetos do dia-a-dia para resolver problemas de forma mais simples, segura e legível. Veremos neste artigo alguns princípios básicos do F# e do paradigma funcional, desenvolvendo alguns exemplos simples, mas também criando uma aplicação “do mundo real” utilizando os artifícios de programação paralela que o .NET fornece.

Há alguns anos venho estudando e escrevendo sobre linguagens de programação. A plataforma .Net permite que diferentes linguagens possam ser utilizadas para programar aplicações, sejam elas Web, Mobile, Windows Forms ou até mesmo aplicações embarcadas (embedded), utilizando por exemplo o Micro Framework. Meu primeiro artigo sobre F# foi escrito no final de 2007. A primeira vez que tive contato com esta linguagem foi realmente um espanto. Fiquei com o pensamento de que “isto só serve para a área acadêmica” ou no máximo alguma aplicação que envolva muitos cálculos. Mesmo assim, fiquei intrigado com a forma de pensar, muito diferente da orientação a objetos que estamos acostumados com C#, VB.Net ou Java. A ideia deste artigo é, em poucas páginas, dar uma noção geral da linguagem, iniciando com alguns exemplos simples, desde a introdução do conceito de linguagem funcional até o desenvolvimento de uma aplicação do mundo real com capacidade de processamento paralelo e assíncrono.

Mas afinal, por que F#?

Apesar do F# ser uma nova linguagem funcional criada pela Microsoft, esse conceito não é nada novo. O F# deriva do ML, uma metalinguagem desenvolvida no final dos anos 70 e que possui sua base em conceitos matemáticos. Linguagens funcionais tratam a computação como funções matemáticas evitando estados ou dados mutáveis, enquanto a linguagem convencional (imperativa) baseia-se em mudanças de estados no programa. O F# pode, por exemplo, retornar uma função como resultado de outra função.

Imaginemos uma planilha do Excel, com muitas células interligadas com funções matemáticas e consultas a outras planilhas. Quando mudamos o valor de uma célula, ele reprocessa apenas as células relacionadas com a que mudamos e não a planilha toda (o que levaria muito tempo e nos deixaria extremamente insatisfeitos com a ferramenta). O F# possui um comportamento semelhante, pois ao alterarmos valores ele reprocessa apenas o necessário, sendo extremamente poderoso para o desenvolvimento de aplicações que envolvam um processamento pesado. Apesar de a cada dia os processadores estarem mais potentes, o volume de dados com que trabalhamos e a exigência de performance também crescem.

O F# também é muito poderoso com árvores de dados, podendo achar padrões em textos de uma forma mais eficiente do que a expressão regular, sendo muito bem requisitado em sistemas de datamining por exemplo. Sua contribuição também pode ser valiosa em mercados financeiros, analisando dados e permitindo sempre tomar uma decisão de investimento mais segura ou em áreas biológicas, sendo aplicada em análises estatísticas que auxiliam no descobrimento de novas curas ou até em análises de comportamento animal. Mas é importante ressaltar que praticamente qualquer aplicação, se bem analisada e estruturada, pode beneficiar-se do poder do F#.

Tomando proveito do processamento em matriz, com diversos núcleos de processamento e consequentemente do processamento em paralelo, o F# permite o desenvolvimento de aplicações de alto desempenho, além de poder interagir diretamente com outras linguagens como o C# e VB.Net, tendo acesso direto a todas as APIs do .Net Framework como DirectX, Windows Presentation Foundation, entre outros.

O F# possui um conceito de estrutura de dados imutáveis, sendo muito mais seguro para trabalhar com programação simultânea, utilizando o poder de vários núcleos dos processadores atuais e para trabalhar com diversas threads e máquinas, sem a necessidade de criação de uma grande infraestrutura para tratamento de concorrência. Trabalhar com fluxos assíncronos também é um ponto forte do F#, pois hoje em dia, por mais simples que seja o software, frequentemente podemos executar tarefas assincronamente para aumentar sua performance.

Nota do DevMan

...

Quer ler esse conteúdo completo? Tenha acesso completo