On Wed, Nov 11, 2009 at 02:44:02PM -0200, Mateus Linhares wrote:
> E ae!
>
> Vejo muitas discussões hoje sobre linguagens funcionais, ou novas linguagens
> baseadas nas funcionais.
> Algum de vocês já usou, ou melhor, alguem sabe me dizer *quando* optar por
> uma linguagem funcional ao invés de outro paradigma?
>
> Um abraço!
Estou estudando Haskell há aproximadamente 1 ano; não estudo outras
linguagens funcionais além desta, portanto minha experiência é limitada.
Além disso meu histórico até então era 100% imperativo. Atualmente estou
maravilhado por Haskell. Leve em consideração também que sou /hobbista/
[anglicismo?], não uso Haskell profissionalmente, nem nunca usei em
projetos de grande/médio porte [ainda].
Eu diria que o critério de decisão é igual ao de qualquer outra
linguagem. O que faria você optar por Ruby ou Python para determinado
projeto é bem provável que haja intersecção com os argumentos que faria
você escolher por uma linguagem funcional (ex: plataformas suportadas,
stdlib etc.).
No caso particular de Haskell algumas características interessantes:
+ código geralmente fica menor e mais /legível/;
Acredito que isso de deva ao fato de poder reusar estruturas
básicas de código como /for/, /while/, e facilidades para criação
de funções a partir de outras [citando alguém que não lembro o
nome agora];
+ compilador é bem eficiente, produz código em geral não mais que
~2-3x mais lento que C [de uma olhada no shootout];
+ tipagem forte/estática e inferência;
O sistema de tipos de Haskell é algo incrível, mas não vem ao caso
aqui;
+ comunidade grande, pessoas sempre dispostas a ajudar (e ajudam
mesmo). Mas por algum motivo, é fechada em si mesma, no sentido que
os membros são provavelmente os mesmos de 5/10 anos atrás;
+ FFI (foreign language interface) decente (ABI level, entretanto);
+ Há bastante pesquisa acadêmica ainda sendo feita;
E dos problemas, e isto é muito subjetivo, eu diria a curva de
aprendizado e uso comercial reduzido. Entretanto, se você muda p/ Erlang
por exemplo, o cenário muda completamente: comunidade maior, mais usada
comercialmente etc etc.
Bom, então quando optar? Se você está nesta posição confortável de poder
escolher, mude agora. 8-)
--
~dsouza
yahoo!im: paravinicius
gpg key fingerprint: 71B8 CE21 3A6E F894 5B1B 9ECE F88E 067F E891 651E
gpg pub key:
http://bitforest.org/~dsouza/pub/gpg-pubkey.txt