| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2012 22:10:39
|
johnny quest
JavaEvangelist
![[Avatar]](/images/avatar/21dc2ceb80622778fa73adb4a09d1ceb.png)
Membro desde: 01/02/2010 10:48:39
Mensagens: 372
Offline
|
é impressão minha ou tanto java quanto c# estão em um caminho de se tornarem linguagens
funcionais por adicionarem Clousures, lambda calculus, (C# com linq) e várias outras features do mundo funcional ?
e será que essa mistura de paradigmas(OO e Funcional) no mesmo projeto não podem fazer os sistemas se tornarem mais díficeis de se fazer manutenção,
sendo mais complicado criar documentações, e facilitando a inserção de erros arquiteturais no projeto ?
This message was edited 1 time. Last update was at 02/02/2012 22:15:12
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2012 22:51:32
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
johnny quest wrote:é impressão minha ou tanto java quanto c# estão em um caminho de se tornarem linguagens funcionais por adicionarem Clousures, lambda calculus, (C# com linq) e várias outras features do mundo funcional?
Tomara, mas acho pouco provável. Linguagens funcionais não são exatamente uma tecnologia nova. Na verdade, surgiram até mesmo antes das linguagens estruturadas.
johnny quest wrote:e será que essa mistura de paradigmas(OO e Funcional) no mesmo projeto não podem fazer os sistemas se tornarem mais díficeis de se fazer manutenção, sendo mais complicado criar documentações, e facilitando a inserção de erros arquiteturais no projeto ?
Acho que sim. Misturas de paradigmas sempre causam algum tipo de estresse. Mas é um risco que geralmente vale a pena correr.
This message was edited 1 time. Last update was at 02/02/2012 22:52:01
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2012 22:54:03
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Sei lá. Acho que esses trecos de porgramação funcional dificultam até a legibilidade do código. Eu mesmo fiz um código em C# dia desses e coloquei uma expressão lambda no meio. Pensando na manuntenção eu estou considerando tirar isso e implementar a mesma solução de uma forma mais tradicional. Mas pode ser a minha falta de conhecimento em paradigmas funcionais.
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/02/2012 22:57:16
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Um dos problemas é que geralmente quem não conhece usa um lambda como uma espécie de "inner class anônima fácil de digitar". Isso é tão verdade que parte da propaganda do lambda no Java (e no C++ também) é baseada exclusivamente nisso. E isso não é exatamente usar o paradigma funcional. Já vi alguns códigos em LINQ que fazem um uso sério de lambda. Mas realmente, é muito legível para quem entende, mas pouco legível para quem não entende (a grande maioria dos programadores).
This message was edited 1 time. Last update was at 02/02/2012 22:57:28
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 06:35:37
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
ViniGodoy wrote:Um dos problemas é que geralmente quem não conhece usa um lambda como uma espécie de "inner class anônima fácil de digitar". Isso é tão verdade que parte da propaganda do lambda no Java (e no C++ também) é baseada exclusivamente nisso. E isso não é exatamente usar o paradigma funcional.
Já vi alguns códigos em LINQ que fazem um uso sério de lambda. Mas realmente, é muito legível para quem entende, mas pouco legível para quem não entende (a grande maioria dos programadores).
Engraçado, eu estava lendo sobre isso ontem a noite. Eu imagino que essas linguagens modernas serão um misto entre as duas, mas somente funcional creio que não.
A lâmbda simplifica por demais um bloco de código. A primeira vista pode parecer estranho mas é questão de costume.
Fiquei impressionado com o que dá para fazer com esse linq. Até comecei a estudar o Entity Framework.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 09:26:36
|
johnny quest
JavaEvangelist
![[Avatar]](/images/avatar/21dc2ceb80622778fa73adb4a09d1ceb.png)
Membro desde: 01/02/2010 10:48:39
Mensagens: 372
Offline
|
Engraçado, eu estava lendo sobre isso ontem a noite. Eu imagino que essas linguagens modernas serão um misto entre as duas, mas somente funcional creio que não.
A lâmbda simplifica por demais um bloco de código. A primeira vista pode parecer estranho mas é questão de costume.
Fiquei impressionado com o que dá para fazer com esse linq. Até comecei a estudar o Entity Framework.
Pelo grande avanço do conhecimento do paradigma OO, e por causa de muito código legado, pelo jeito as linguagens mais modernas serão hibridas mesmo.
Mas o que mais me impressinou no paradigma funcional, foi a forma elegante que foi resolvida o problema da execução de softwares em ambiente multithreads, sem precisar de Locks e jamais gerando dead locks ou race conditions. Com toda certeza essa seria uma feature que gostaria de ver no java.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 09:47:40
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
johnny quest wrote:
Engraçado, eu estava lendo sobre isso ontem a noite. Eu imagino que essas linguagens modernas serão um misto entre as duas, mas somente funcional creio que não.
A lâmbda simplifica por demais um bloco de código. A primeira vista pode parecer estranho mas é questão de costume.
Fiquei impressionado com o que dá para fazer com esse linq. Até comecei a estudar o Entity Framework.
Pelo grande avanço do conhecimento do paradigma OO, e por causa de muito código legado, pelo jeito as linguagens mais modernas serão hibridas mesmo.
Mas o que mais me impressinou no paradigma funcional, foi a forma elegante que foi resolvida o problema da execução de softwares em ambiente multithreads, sem precisar de Locks e jamais gerando dead locks ou race conditions. Com toda certeza essa seria uma feature que gostaria de ver no java.
Eles também precisam levar em questão a qualidade do compilador. Não creio que seja possível criar um bom compilador para assembly com uma linguagem inteiramente funcional. Seria talvez preciso uma gramatica muito extensa. Posso estar enganado.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 09:53:04
|
AbelBueno
Virtual Machine Man
Membro desde: 04/08/2010 09:37:57
Mensagens: 543
Offline
|
juliocbq wrote:
Eles também precisam levar em questão a qualidade do compilador. Não creio que seja possível criar um bom compilador para assembly com uma linguagem inteiramente funcional. Seria talvez preciso uma gramatica muito extensa. Posso estar enganado.
Se não estou enganado Haskell pode ser chamado de puramente funcional e possui aparentemente um ótimo compilador.
Geralmente dizem que a performance é próxima a C++.
(Apesar da maioria das linguagens se dizerem próximas de C++).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 10:51:02
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
AbelBueno wrote:
juliocbq wrote:
Eles também precisam levar em questão a qualidade do compilador. Não creio que seja possível criar um bom compilador para assembly com uma linguagem inteiramente funcional. Seria talvez preciso uma gramatica muito extensa. Posso estar enganado.
Se não estou enganado Haskell pode ser chamado de puramente funcional e possui aparentemente um ótimo compilador.
Geralmente dizem que a performance é próxima a C++.
(Apesar da maioria das linguagens se dizerem próximas de C++).
Comparando o ghc(gnu haskell) com o gcc(gnu c), o código gerado pelo primeiro ainda está atrás do segundo.
Imagino que o g++ ainda consiga bater esses dois.
http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=gcc&lang2=ghc
Em árvores o compilador de c chega ser 4x melhor que o de haskell
binary-trees
C GNU gcc 13.09 5.44 150,720 850 94% 46% 66% 34%
Haskell GHC 67.80 21.30 781,940 612 73% 90% 84% 74%
Esses compiladores são os do set da gnu. Podem haver outros compiladores de haskell mais otimizados.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 11:53:58
|
Daniel_MV
JavaEvangelist
Membro desde: 30/04/2007 07:43:01
Mensagens: 424
Offline
|
acho que nao, acho que ha espaco para os 2 paradigmas.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 20:03:56
|
josenaldo
GUJ Master
![[Avatar]](/images/avatar/986ad3ada4d93c1c474674751f941082.png)
Membro desde: 27/11/2006 12:39:28
Mensagens: 1170
Localização: Uberlândia/MG
Offline
|
ViniGodoy wrote:Um dos problemas é que geralmente quem não conhece usa um lambda como uma espécie de "inner class anônima fácil de digitar". Isso é tão verdade que parte da propaganda do lambda no Java (e no C++ também) é baseada exclusivamente nisso. E isso não é exatamente usar o paradigma funcional.
Já vi alguns códigos em LINQ que fazem um uso sério de lambda. Mas realmente, é muito legível para quem entende, mas pouco legível para quem não entende (a grande maioria dos programadores).
Essa dificuldade de leitura é mais do que natural. É fácil para quem não conhece inglês ler um texto em inglês? Com linguagens de programação não é diferente.
Com o tempo, as pessoas acostumam.
|
Josenaldo de Oliveira Matos Filho
UAIJUG - http://www.uaijug.com.br
http:jnaldo.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2012 20:30:11
|
perdeu
JavaEvangelist
![[Avatar]](/images/avatar/71d9bee1559a7c4a057f6990a79c3716.jpg)
Membro desde: 24/08/2009 00:01:45
Mensagens: 389
Localização: Curitiba - PR
Offline
|
e pra debugar um codigo desse?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/02/2012 14:45:14
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
josenaldo wrote:Essa dificuldade de leitura é mais do que natural. É fácil para quem não conhece inglês ler um texto em inglês? Com linguagens de programação não é diferente.
Com o tempo, as pessoas acostumam.
O problema é que temos poucas escolas ensinando o pessoal a falar inglês.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/02/2012 14:58:36
|
josenaldo
GUJ Master
![[Avatar]](/images/avatar/986ad3ada4d93c1c474674751f941082.png)
Membro desde: 27/11/2006 12:39:28
Mensagens: 1170
Localização: Uberlândia/MG
Offline
|
ViniGodoy wrote:
josenaldo wrote:Essa dificuldade de leitura é mais do que natural. É fácil para quem não conhece inglês ler um texto em inglês? Com linguagens de programação não é diferente.
Com o tempo, as pessoas acostumam.
O problema é que temos poucas escolas ensinando o pessoal a falar inglês. 
Realmente... Estamos aprendendo inglês comprando livro e vendo o povo "falar" no Google. rs
|
Josenaldo de Oliveira Matos Filho
UAIJUG - http://www.uaijug.com.br
http:jnaldo.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/02/2012 15:04:25
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Engraçado. Muito tem se falado à respeito de inserir elementos de programação funcional em linguagens OO. Mas e a programação orientada à aspectos? Por que não se tem tanto interesse nela? Pelo que eu andei vendo na internet sobre o assunto, me pareceu um paradigma legal.
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
|
|