terça-feira, 14 de janeiro de 2014

Haskell: O HelloWorld Matemático

E aí galera, vou me apresentando aos poucos. 
Me chamo Abner Terribili, atualmente tenho 22 anos, estou planejando iniciar este blog há algum tempo (+/- 2 anos) Sou programador há aproximadamente 3 anos, já trabalhei com Delphi, Java, HTML5, JS, Obj-C, C++, Android, e por aí vai. Tenho como maior objetivo salvar o mundo, ainda mais se for codando :). Meu objetivo aqui é deixar minhas experiências e ajudar aqueles que precisam de ajuda. Não possuo vasta experiência na área, e com esse blog, além de ajudar quem precisar, possivelmente aprenderei muito. Vou escrever a cada nova experiência que eu participar. E tentarei ao máximo que isso seja frequente.

Bom, com o tempo eu melhoro essa apresentação, estou empolgado para começar a codar com vocês. 

Hoje comecei a estudar algo novo, mais voltado para a Matemática, do que para programação. Estava procurando algum livro bacana em uma loja e acabei encontrando esse: Haskell : Uma abordagem prática de Claudio C. de Sá e Márcio F. da Silva. Cara, que coisa legal essa história de paradigma funcional. Não entrarei em extensos detalhes, para não ficar complicado para mim e para vocês.

O que é paradigma funcional ?
- É um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa. (Wikipédia: Paradigma Funcional)

Depois de dar uma passadinha aí por cima do texto do Wikipédia (que é pequeno), vamos a instalação do interpretador Hugs. Escolhi o Haskell, justamente por ouvir falar bem a respeito (Jean Baro). Clique no link caso tenha interesse em maiores informações a respeito.


O interpretador Hugs é uma implementação de Haskell, foi escrito na linguagem C e não compila código algum, somente interpreta. Após a instalação, que é bem simples, só acessar a guia “Downloading” do site acima e seguir os passos descritos.

Testei em um ambiente Unix/Mac, foi bem simples, fiz a instalação via Terminal, utilizei o Homebrew, que é um gerenciador de pacotes (Homebrew).

Comando para instalação do Hugs no Mac, via Terminal:
brew install hugs

Ele acabou pedindo um complemento (GCC):
brew install apple-gcc42

Para instalar no Linux:
apt-get install hugs

Aqui tem uma discussão legal a respeito da Instalação do Hugs no Windows:
Interpretador Haskell Windows e Online

E tudo certo!

Para escrever programas em Haskell, basta qualquer editor compatível com ASCII. Atualmente utilizo o Sublime Text 2 (Sublime Text 2).

Finalizando com exemplo:
Imagine que você tem que calcular a área de uma circunferência, então para iniciarmos nosso exercício vamos definir: 




- Área da circunferência = π * r ², onde π = 3.14159 e r = distância do centro da circunferência até alguma extremidade (raio).

Para iniciar o exercício, crie um diretório em algum local de sua preferência, no Desktop fica mais fácil acessar.

Após criar o diretório, crie, também, um novo arquivo chamado area_circunferencia.hs. (Arquivos com extensão .hs são aplicativos Haskell) 

Abra o seu arquivo area_circunferencia.hs com o seu editor de texto favorito.

Insira as seguintes linhas:
p = 3.14159
area_circunferencia r = p * r * r

Ou utilize o valor do pi da própria biblioteca Prelude:
area_circunferencia r = pi * r * r

Caminhe, via Terminal/CMD, até o diretório do arquivo area_circunferencia.hs.

Execute o comando :
hugs area_circunferencia.hs

Verá algo como:



Pronto sua aplicação está pronta para receber entradas, teste a sua função: 
Main> area_circunferencia 2

Deverá ver algo como:
12.5663706143592

Se sentir alguma dificuldade, baixe o arquivo do meu repositório GitHub: github.com/aterribili/Haskell/blob/master/area_circunferencia.hs

Nota: Na prática descobri que a biblioteca do Hugs, Prelude, já armazena um valor para o π (pi). Basta colocar pi no código. (Hugs.Prelude.pi)

O Haskell passou seu valor para o raio e fez o cálculo para você. Essa é a principal diferença do paradigma funcional, ele executa funções, como na matemática, você não precisa “mandar” ele fazer algo, precisa apenas informar os valores. Bom, espero que isso ajude quem tem interesse em Haskell e quem ainda não tem também. :) Vou melhorando e estou aqui para maiores dúvidas. 





Nenhum comentário:

Postar um comentário