Faria sentido se Java se tornasse uma linguagem de paradigma funcional?

“Object-oriented programming makes code understandable by encapsulating moving parts. Functional programming makes code understandable by minimizing moving parts”

“Michael Feathers, author of Working with Legacy Code”

Não faz sentido embora elas assumam algumas características das linguagens funcionais. Por exemplo c++, c# e java todas terão funções lambda.

Essa questão de paradigma é relativa devido ao tipo de problema que você pretende resolver.

Não pense que irá programar seus device drivers usando uma linguagem funcional. Para isso é melhor que a linguagem seja estrurturada.

No cerne da linguagem está o paradigma (ou paradigmas) que ela adota.

Sendo assim, esta pergunta é sem sentido: se Java da noite pro dia adotasse o paradigma funcional como o seu principal ao invés da orientação a objetos (que é o seu foco), não teríamos um novo Java, mas sim uma nova linguagem completamente diferente.

Uma pergunta mais interessante é: quão árduo é a mudança de nossa mentalidade do paradigma estruturado/orientado a objetos para o funcional? Indo um pouco além, quão difícil é a nossa adequação de pensamento do modo imperativo para o declarativo?

Dado que o maior inimigo do desenvolvedor é o determinismo linguístico (tenho alguns textos publicados sobre o problema aqui http://www.itexto.net/devkico/?page_id=766), depende do caso: se o indivíduo passou anos trabalhando apenas com o paradigma estruturado/orientado a objetos, a curva de aprendizado é muito mais íngreme. A solução para o problema é sempre ficar com as orelhas em pé experimentando tudo (ou ao menos lendo o mínimo a respeito) o que sai, seja paradigma funcional, lógico (que ainda vai pegar), whatever pra evitar cair nesta cilada.

nobres GUJistas … é o Duran …

Eu sei! :smiley:

Mas não é por causa disto que, se ele vier com uma discussão interessante a gente não possa tirar proveito uai :slight_smile:

Ou então, melhor ainda, tentar transformar o que está ruim em algo um pouquinho melhor como este caso. A melhor maneira de acabar com este tipo de problema não é ficar banindo o cara sempre, mesmo porquê ele sempre pode criar uma conta com novo nome como esta, mas sim tentar transformar carvão em diamante. Se no caminho não funcionar, bem: a gente tenta de novo e por ai vai.

sim, mas não custa nada responder.

Eu sei! :smiley:

Mas não é por causa disto que, se ele vier com uma discussão interessante a gente não possa tirar proveito uai :slight_smile:

Ou então, melhor ainda, tentar transformar o que está ruim em algo um pouquinho melhor como este caso. A melhor maneira de acabar com este tipo de problema não é ficar banindo o cara sempre, mesmo porquê ele sempre pode criar uma conta com novo nome como esta, mas sim tentar transformar carvão em diamante. Se no caminho não funcionar, bem: a gente tenta de novo e por ai vai.[/quote]

Pelo jeito eu é que sou discrente com as pessoas mesmo …

Mas enfim, o paradigma funcional é interessante ? Sem dúvida alguma.

Vale a pena tornar Java uma linguagem funcional ? Duvido muito. É mais fácil criar uma linguagem nova que execute na JVM. Enfim, seria algo muito parecido com o que já existe, como a Clojure:

http://clojure.org/

“Acredito que soluções são gerenciáveis, a tecnologia é o emprego da situação”

Essa aí nem o Pasquale entende hein…

uma vírgula aí ajudaria a separar as idéias, mas ainda não faria muito sentido.

Ele deve ter pegado este site

http://www.buzzwords4u.co.uk/

e passado pelo Google Translator. Um exemplo:

If we reallocate our assets to capitalize on the activities of competitors, we can achieve synergy in all business units and benefit from economies of scope

->

Se realocar nossos ativos para capitalizar sobre as atividades dos concorrentes, podemos criar uma sinergia em todas as unidades de negócio e beneficiar de economias de escopo

[quote=entanglement]Ele deve ter pegado este site

http://www.buzzwords4u.co.uk/

e passado pelo Google Translator. Um exemplo:

If we reallocate our assets to capitalize on the activities of competitors, we can achieve synergy in all business units and benefit from economies of scope

->

Se realocar nossos ativos para capitalizar sobre as atividades dos concorrentes, podemos criar uma sinergia em todas as unidades de negócio e beneficiar de economias de escopo[/quote]

Não foi uma observação que um consultor escreveu no site da IBM DeveloperWorks , aliás vou colocar aqui pra elucidar o assunto:
http://www.ibm.com/developerworks/br/java/library/j-ft5/

Entschuldigen sie - mas o Neal Ford não escreveu isso (“Acredito que soluções são gerenciáveis a tecnologia é o emprego da situação”) explicitamente :slight_smile: - ele simplesmente comparou o modo de pensar “funcional” e “estruturado”.

[quote=Jonas backer]Não foi uma observação que um consultor escreveu no site da IBM DeveloperWorks , aliás vou colocar aqui pra elucidar o assunto…
[/quote]
Não to querendo ser chato, mas novamente a ausência da vírgula acabou mudando o sentido da frase.

[quote=entanglement]Entschuldigen sie - mas o Neal Ford não escreveu isso (“Acredito que soluções são gerenciáveis a tecnologia é o emprego da situação”) explicitamente :slight_smile: - ele simplesmente comparou o modo de pensar “funcional” e “estruturado”.
[/quote]

Isso mesmo, e nessa visão procurei explorar o Tema , o que coloca em cheque quando temos tomar decisões ao desenvolvimento.

Boa tarde pessoal.
Não querendo fugir do foco, mas quem é esse tal Duran?
O que ele fez ou faz de errado?

Não, pois o paradigma imperativo resolve alguns problemas mais elegantemente e com melhor performance do que a forma funcional em alguns casos.
O ideal seria ter uma linguagem hibrida, com os dois paradigmas juntos, igual ao C++ e Scala.

Dessa forma, a partir do problema sendo resolvido, se poderia utilizar o melhor paradigma para resolver o problema.

Não, pois o paradigma imperativo resolve alguns problemas mais elegantemente e com melhor performance do que a forma funcional em alguns casos.
O ideal seria ter uma linguagem hibrida, com os dois paradigmas juntos, igual ao C++ e Scala.

Dessa forma, a partir do problema sendo resolvido, se poderia utilizar o melhor paradigma para resolver o problema.

[/quote]

Ora, para que ter 2 paradigmas em uma linguagem se sobre a mesma plataforma podemos ter 2 linguagens interoperáveis, cada uma no seu quadrado ?

[quote=Lucas_Soares]Boa tarde pessoal.
Não querendo fugir do foco, mas quem é esse tal Duran?
O que ele fez ou faz de errado?[/quote]

era um individuo que ja a alguns anos atras (eu participo desse forum a uns 4, 5 anos e desde então ja via seus posts) postava perolas de deixar o enem com inveja…

[quote=Lucas_Soares]Boa tarde pessoal.
Não querendo fugir do foco, mas quem é esse tal Duran?
O que ele fez ou faz de errado?[/quote]

era um individuo que ja a alguns anos atras (eu participo desse forum

Enquanto há gente aqui em discussões bizantinas (se o Java deve ou não adotar também o paradigma funcional), o pessoal do .NET já tem algumas linguagens funcionais que rodam sob .NET (como o F#) e desde o .NET 3.5 você pode usar estilo funcional no C# ( http://www.c-sharpcorner.com/uploadfile/rmcochran/introduction-to-functional-programming-in-C-Sharp/ ) .
Que tal olhar para o outro lado da cerca, hein?
A grama do vizinho pode ser mais verde, e é bom saber por quê.

[quote=entanglement]Enquanto há gente aqui em discussões bizantinas (se o Java deve ou não adotar também o paradigma funcional), o pessoal do .NET já tem algumas linguagens funcionais que rodam sob .NET (como o F#) e desde o .NET 3.5 você pode usar estilo funcional no C# ( http://www.c-sharpcorner.com/uploadfile/rmcochran/introduction-to-functional-programming-in-C-Sharp/ ) .
Que tal olhar para o outro lado da cerca, hein?
A grama do vizinho pode ser mais verde, e é bom saber por quê. [/quote]

Boa!

Mas do lado Java da cerca também: Clojure, Scala e algumas outras.