Scala: Bringing Future Languages to the JVM

[quote=juliocbq]Ficar focando esforços em linguagem de programação é uma coisa inútil porque ela é uma simples ferramenta. Discutir ferramentas é uma coisa inútil porque é questão de gosto.
Alguns deveriam discutir conceitos relevantes e ampliar o nível de conhecimento.[/quote]

Não é só pro lado da ferramenta não e o avanço por outras tecnologias e adoções.

Ow Mathemathic,

O que tem haver um problema de herança múltipla com coletor de lixo? Pode me explicar?

Acho que eu teria que fumar um baseado de dez quilos pra entender o que o Duran fala…às vezes tenho a impressão que ele usa o Lero-Lero Generator Tabajara…

[quote=juliocbq]
Ow Mathemathic,
O que tem haver um problema de herança múltipla com coletor de lixo? Pode me explicar?[/quote]

Velocidade e processamento , ganho de performance.

chegou o Pango pra bloquear o topico !!! :lol: :lol: :lol: :lol: :lol:

[quote=Mathemathic][quote=juliocbq]Ficar focando esforços em linguagem de programação é uma coisa inútil porque ela é uma simples ferramenta. Discutir ferramentas é uma coisa inútil porque é questão de gosto.
Alguns deveriam discutir conceitos relevantes e ampliar o nível de conhecimento.[/quote]

Não é só pro lado da ferramenta não e o avanço por outras tecnologias e adoções.[/quote]

Usar uma linguagem diferente que no final vai gerar um monte de zeros e uns. Não tem diferença nisso, a não ser a facilidade de uso para situações específicas.

[quote=juliocbq]
Usar uma linguagem diferente que no final vai gerar um monte de zeros e uns. Não tem diferença nisso, a não ser a facilidade de uso para situações específicas. [/quote]

Cadê o Sergio Lopes, pra dar um visão sobre o assunto eu gostaria de saber …

[quote=Mathemathic][quote=juliocbq]
Ow Mathemathic,
O que tem haver um problema de herança múltipla com coletor de lixo? Pode me explicar?[/quote]

Velocidade e processamento , ganho de performance.[/quote]

Mathematic, se eu criar uma classe em c++ que herda outras 100, meu produto final ainda será umas 3x mais rápida que java, justamente por causa do coletor de lixo.

[quote=juliocbq]
Mathematic, se eu criar uma classe em c++ que herda outras 100, meu produto final ainda será umas 3x mais rápida que java, justamente por causa do coletor de lixo.[/quote]
A mesma informação é valida pra Scala, ela usa gabarge collection também ? Quero uma melhor referencia na tecnologia discutida.

[quote=Mathemathic][quote=juliocbq]
Mathematic, se eu criar uma classe em c++ que herda outras 100, meu produto final ainda será umas 3x mais rápida que java, justamente por causa do coletor de lixo.[/quote]
A mesma informação é valida pra Scala, ela usa gabarge collection também ? Quero uma melhor referencia na tecnologia discutida.[/quote]

Scala vai rodar na mesma máquina virtual que o java vai rodar. O assembly(byte code) gerado pelo compilador é exatamente o mesmo. Então o coletor de lixo não seria válido também para ela??

http://www.scala-lang.org/node/25

Esse diamante da morte acontece em c++ justamente por causa da herança múltipla, o que não é possível em linguagens como java e scala, que já implementa interfaces.

Mesmo assim, esse problema pode ser facilmente sanado no c++, simplesmente com boas práticas de programação.

[quote=kicolobo]
Oi mochuara,

na realidade, há um mal entendido aqui. Eu nao tive de “aprender Groovy pra ser mais produtivo em Java”.
Na realidade, eu sabia que esta funcionalidade apenas existia em outra linguagem e poderia facilitar a minha vida. Tudo o que fiz foi unir as duas linguagens para resolver um mesmo problema. Java lidando com 99,99% e Groovy com o parseamento do meu XML.

De modo algum invalida Java. Só mostra aquilo que qualquer profissional bem informado deveria saber: “a ferramenta certa pra ferramenta certa”. Simples assim.[/quote]

Analisando assim não invalida, mas no longo prazo sim.

Na verdade, todos deviam programar em shakespeare.

Veja como um Hello World chega a parecer poesia:

The Infamous Hello World Program.

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.


                    Act I: Hamlet's insults and flattery.

                    Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
 You lying stupid fatherless big smelly half-witted coward!
 You are as stupid as the difference between a handsome rich brave
 hero and thyself! Speak your mind!

 You are as brave as the sum of your fat little stuffed misused dusty
 old rotten codpiece and a beautiful fair warm peaceful sunny summer's
 day. You are as healthy as the difference between the sum of the
 sweetest reddest rose and my father and yourself! Speak your mind!

 You are as cowardly as the sum of yourself and the difference
 between a big mighty proud kingdom and a horse. Speak your mind.

 Speak your mind!

[Exit Romeo]

                    Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
 Thou art as sweet as the sum of the sum of Romeo and his horse and his
 black cat! Speak thy mind!

[Exit Juliet]

                    Scene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:
 Thou art as lovely as the product of a large rural town and my amazing
 bottomless embroidered purse. Speak thy mind!

 Thou art as loving as the product of the bluest clearest sweetest sky
 and the sum of a squirrel and a white horse. Thou art as beautiful as
 the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]


                    Act II: Behind Hamlet's back.

                    Scene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
 Speak your mind. You are as worried as the sum of yourself and the
 difference between my small smooth hamster and my nose. Speak your
 mind!

Juliet:
 Speak YOUR mind! You are as bad as Hamlet! You are as small as the
 difference between the square of the difference between my little pony
 and your big hairy hound and the cube of your sorry little
 codpiece. Speak your mind!

[Exit Romeo]

                    Scene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:
 Thou art as good as the quotient between Romeo and the sum of a small
 furry animal and a leech. Speak your mind!

Ophelia:
 Thou art as disgusting as the quotient between Romeo and twice the
 difference between a mistletoe and an oozing infected blister! Speak
 your mind!

[Exeunt]

Não seriamos mais eficientes, mas certamente seríamos muito mais eloquentes.

[quote=juliocbq]
Esse diamante da morte acontece em c++ justamente por causa da herança múltipla, o que não é possível em linguagens como java e scala, que já implementa interfaces.
Mesmo assim, esse problema pode ser facilmente sanado no c++, simplesmente com boas práticas de programação.[/quote]
Não senhor Scala faz herança múltipla e também é multi-thread, tem todos os avanços do C++ e do Java juntos, e é muito mais semantico nas questões de se usar DSL para rules, do que as demais candidatas linguagem como jruby, python, etc…

[quote=Mathemathic][quote=juliocbq]
Esse diamante da morte acontece em c++ justamente por causa da herança múltipla, o que não é possível em linguagens como java e scala, que já implementa interfaces.
Mesmo assim, esse problema pode ser facilmente sanado no c++, simplesmente com boas práticas de programação.[/quote]
Não senhor Scala faz herança múltipla e também é multi-thread, tem todos os avanços do C++ e do Java juntos, e é muito mais semantico nas questões de se usar DSL para rules, do que as demais candidatas linguagem como jruby, python, etc…[/quote]

Não faz não. O mecanismo de traits é bem diferente do c++(é muito melhor).Lê o link que te passei sô.

http://www.artima.com/weblogs/viewpost.jsp?thread=246488

Não entendi o multi thread. Isso não é pertinente a linguagem nenhuma e sim a arquitetura de sistemas operacionais. Se o seu sistema é multitarefa, qualquer compilador de alguma linguagem vai suportar isso.

[quote=juliocbq][quote=Mathemathic][quote=juliocbq]
Esse diamante da morte acontece em c++ justamente por causa da herança múltipla, o que não é possível em linguagens como java e scala, que já implementa interfaces.
Mesmo assim, esse problema pode ser facilmente sanado no c++, simplesmente com boas práticas de programação.[/quote]
Não senhor Scala faz herança múltipla e também é multi-thread, tem todos os avanços do C++ e do Java juntos, e é muito mais semantico nas questões de se usar DSL para rules, do que as demais candidatas linguagem como jruby, python, etc…[/quote]

Não faz não. O mecanismo de traits é bem diferente do c++(é muito melhor).Lê o link que te passei sô.

http://www.artima.com/weblogs/viewpost.jsp?thread=246488[/quote]

É engraçado que ele pede referências e, quando alguém dá, ele não lê.

o kicolobo falou uma coisa muito certa. Linguagem de programação é que nem brinquedo de criança para alguns.

[quote=juliocbq]
Não faz não. O mecanismo de traits é bem diferente do c++(é muito melhor).Lê o link que te passei sô.

http://www.artima.com/weblogs/viewpost.jsp?thread=246488

Não entendi o multi thread. Isso não é pertinente a linguagem nenhuma e sim a arquitetura de sistemas operacionais. Se o seu sistema é multitarefa, qualquer compilador de alguma linguagem vai suportar isso.[/quote]

Eu dei uma googlada e achei isso aqui antes de ver o teu post: http://www.codecommit.com/blog/scala/scala-for-java-refugees-part-5
estava lendo sobre os traits, mas não seriam sim um tipo de herança multipla? Ou nao entendi direito? :roll:

Achei interessante, sendo o unico problema citado pelo autor o fato de as classes abstratas nao poderem receber parametros nos construtores.

[quote=fredferrao][quote=juliocbq]
Não faz não. O mecanismo de traits é bem diferente do c++(é muito melhor).Lê o link que te passei sô.

http://www.artima.com/weblogs/viewpost.jsp?thread=246488

Não entendi o multi thread. Isso não é pertinente a linguagem nenhuma e sim a arquitetura de sistemas operacionais. Se o seu sistema é multitarefa, qualquer compilador de alguma linguagem vai suportar isso.[/quote]

Eu dei uma googlada e achei isso aqui antes de ver o teu post: http://www.codecommit.com/blog/scala/scala-for-java-refugees-part-5
estava lendo sobre os traits, mas não seriam sim um tipo de herança multipla? Ou nao entendi direito? :roll:

Achei interessante, sendo o unico problema citado pelo autor o fato de as classes abstratas nao poderem receber parametros nos construtores.
[/quote]

É uma herança múltipla restrita. A do c++ é completamente diferente, e te dá completo acesso aos atributos das classes herdadas, dependendo do scopo escolhido.

Como assim restrição? Veja o link que postei, la ele diz assim: “Any non-abstract trait members are actually included in the inheriting class”.

Eu sei que no C++ é diferente e não é justamente este o problema do diamond??

[quote=fredferrao][quote=juliocbq]
É uma herança múltipla restrita. A do c++ é completamente diferente, e te dá completo acesso aos atributos das classes herdadas, dependendo do scopo escolhido.
[/quote]

Como assim restrição? Veja o link que postei, la ele diz assim: "Any non-abstract trait members are actually included in the inheriting class".

Eu sei que no C++ é diferente e não é justamente este o problema do diamond??[/quote]

sim, isso que eu disse no meu post anterior.

Olha aqui…

http://www.artima.com/weblogs/viewpost.jsp?thread=246488

Traits são parecidas com interfaces java.
Herança múltipla pode copiar atributos privados, publicos, protegidos ou estáticos, dependendo do tipo do escopo, mas não existe uma ordem e só Deus sabe qual classe será herdada realmente. Esse é o problema do diamante.

Na Scala, você pode inverter a ordem da hierarquia sanando o problema do diamante, mas não tem controle sobre atributos protegidos, privados ou públicos, e não pode ter parâmetros nos construtores.

tirei o parágrafo da fonte que me postou -----> http://www.codecommit.com/blog/scala/scala-for-java-refugees-part-5

É um recurso muito bom da linguagem. Tudo isso é possível de se conseguir com java ou c++ ou pascal. Para falar a verdade, as linguagens antigas podem muito bem implementar essa funcionalidade. Não vejo porque uma linguagem tem que substituir outra.