Linguagens Funcionais

7 views
Skip to first unread message

Mateus Linhares

unread,
Nov 11, 2009, 11:44:02 AM11/11/09
to programm...@googlegroups.com
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!

--
Mateus

Diego Souza

unread,
Nov 11, 2009, 6:15:42 PM11/11/09
to programm...@googlegroups.com, Mateus Linhares
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

caio ariede

unread,
Nov 12, 2009, 6:06:19 AM11/12/09
to programm...@googlegroups.com
Dependendo da sua necessidade, é difícil optar por uma só linguagem, pois cada linguagem tem seu mérito e demérito.

Veja por exemplo o Facebook, que optou em utilizar Erlang no "Facebook Chat" devido a uma série de fatores, tais como: concorrência, distribuição, hot swapping...

Mas teve que utilizar também, no caso, a linguagem C, para fazer o que em Erlang não é muito "performático": operações i/o.

* performático - essa palavra existe?

Caio Ariede
http://caioariede.com/


2009/11/11 Diego Souza <dso...@bitforest.org>

Tonny Dourado

unread,
Nov 13, 2009, 4:34:32 AM11/13/09
to programm...@googlegroups.com
Até existe, mas se é aplicável no contexto e sentido que você utilizou, não sei não ...

2009/11/12 caio ariede <caio....@gmail.com>

Carlos Brando

unread,
Nov 13, 2009, 7:22:29 AM11/13/09
to programm...@googlegroups.com
Embora Ruby não seja uma linguagem funcional, acabamos de publicar no Ruby Inside Brasil um artigo interessante sobre o tema: http://www.rubyinside.com.br/pensando-funcionalmente-em-ruby-2468

[]'s
Carlos Brando

2009/11/13 Tonny Dourado <tonnyd...@gmail.com>

Ronaldo Ferraz

unread,
Nov 13, 2009, 10:58:36 AM11/13/09
to programm...@googlegroups.com
Complementando o que o resto do pessoal já disse, o quando é mais uma
decisão de negócio do que uma decisão de design propriamente dita. No
limite, todas as linguages Turing-complete são equivalentes, a
dificuldade sendo o seu conforto com uma ou outra.

Hoje em dia, essencialmente todas as linguagens funcionais de grande
porte (Erlang, Haskell, OCaml, Scala) possuem amplos suporte e uso
comercial, com compiladores de qualidade e velocidade excelentes.

As características funcionais em si são apropriadas para tarefas
específicas mas não influenciam grandes escolhas de projeto como uso
de banco de dados, memória, etc.

Abraços,

R.

2009/11/11 Mateus Linhares <mateusl...@gmail.com>:

caio ariede

unread,
Nov 13, 2009, 11:10:12 AM11/13/09
to programm...@googlegroups.com
Só aproveitando que o Carlos Brando comentou sobre Ruby, e o tópico é sobre linguagens funcionais.

Hi,

In message "Re: Maximum stack depth"
    on Fri, 18 Mar 2005 00:44:01 +0900, "B. K. Oxley (binkley)" <bink...@alumni.rice.edu> writes:

|Does Ruby not do tail recursion optimization?  That would remove any
|limit to the stack depth for functions such as Ackerman.

Not yet, but planned.



Alguém sabe dizer se Ruby possui tail recursion optimization?

Caio Ariede
http://caioariede.com/


2009/11/13 Ronaldo Ferraz <ronald...@gmail.com>

Tony Fabeen

unread,
Nov 13, 2009, 11:39:38 AM11/13/09
to programm...@googlegroups.com
Tem uns vídeos bacanas aqui:

Commercial Users of Functional Programming
http://www.vimeo.com/album/128851

[]s

2009/11/13 caio ariede <caio....@gmail.com>



--
Tony Fabeen.
http://www.keeponrightway.com
"All the average think Gauss although all the innovators think Pareto".
(Unknown)
Reply all
Reply to author
Forward
0 new messages