A linguagem Scala é a linguagem que tem melhor performance na JVM?

[quote=diegousa][quote=juliocbq]O que existem são situações específicas e ferramentas para solucionar problemas específicos.
[/quote]
Nada contra você em particular, mas na minha opinião essa é a frase mais cretina que existe. Várias pessoas a utilizam quando não possuem conviccoes. É a famosa: Não há bala de prata. É mesmo!!!???

Porquê pode ser ignorada?

[quote=moscoso.dev]
Desde que vc use os recursos funcionais ela pode sim gerar código mais enxuto que java porque o compilador é capaz de fazer as otimizações que o compilador Java não consegue.

Na verdade foi exatamente assim que o estudo comseguiu uma versão de Scala mais rápida que java.[/quote]

A qualidade do compilador não está relacionada com a sintaxe da linguagem de programação. Por exemplo eu uso dois compiladores de linguagem c. O da microship e o da mikroeletronica. O código gerado por eles é completamente diferente.

Aonde eu disse isso?

[quote=moscoso.dev]
Desde que vc use os recursos funcionais ela pode sim gerar código mais enxuto que java porque o compilador é capaz de fazer as otimizações que o compilador Java não consegue.

Na verdade foi exatamente assim que o estudo comseguiu uma versão de Scala mais rápida que java.[/quote]

Esse “funcionais” me pareceu referente a isso.

[quote=juliocbq][quote=moscoso.dev]
Desde que vc use os recursos funcionais ela pode sim gerar código mais enxuto que java porque o compilador é capaz de fazer as otimizações que o compilador Java não consegue.

Na verdade foi exatamente assim que o estudo comseguiu uma versão de Scala mais rápida que java.[/quote]

Esse “funcionais” me pareceu referente a isso.[/quote]

Julio, a idéia é que compiladores modernos são capazes de otimizar programas funcionais. No estudo em questão houve 3x ganho de performance com a versão funcional de Scala, comparado com a versão OO na mesma linguagem.

[quote=moscoso.dev]Segundo o estudo citado Scala é 10x mais lenta que Java pra compilar. Essa é uma informação muito mais importante pra mim já que performance de execução não é limitador na maioria dos projetos (CPU não é um recurso escasso), mas agilidade no desenvolvimento sim (desenvolvedor é recurso escasso).

[/quote]
Isso pode não ser problema de acordo com as ferramentas que são usadas. Por exemplo, você pode configurar o SBT para compilar o código de acordo que é alterada.

Me parece que o tópico tomou outro rumo, diferente do que proposto, pelo menos com relação ao Titulo do mesmo. A coisa tava virando código nativo versus interpredado Java versus C++

Sobre o título(performance de linguagens que rodam na JVM), eu digo o seguinte: Sim, o que dizem os criadores e usuarios da linguagem Scala, é que ela é tão rápida quanto java, as vezes até mais rapida e em outros casos mais lenta.

O compilador optimiza muito(pudera, o cara é um dos pais do compilador generics do java), por exemplo: apesar de tudo em Scala ser um Objeto, eu posso fazer 1.toString, sempre que possivel, o compilador irá converter o objetos de tipos numéricos do Scala para os tipos primitivos do Java, justamente pela performance.

Sobre tempo de compilação, sim não da pra negar que seja mais lento, talvez 10x seja exagero, mas para isto temos ai o SBT, que compila apenas onde houve alterações e outras coisas mais que ele faz!

[quote=moscoso.dev][quote=juliocbq][quote=moscoso.dev]
Desde que vc use os recursos funcionais ela pode sim gerar código mais enxuto que java porque o compilador é capaz de fazer as otimizações que o compilador Java não consegue.

Na verdade foi exatamente assim que o estudo comseguiu uma versão de Scala mais rápida que java.[/quote]

Esse “funcionais” me pareceu referente a isso.[/quote]

Julio, a idéia é que compiladores modernos são capazes de otimizar programas funcionais. No estudo em questão houve 3x ganho de performance com a versão funcional de Scala, comparado com a versão OO na mesma linguagem.
[/quote]

concordo com você. mas isso é mérito do compilador e não da linguagem. Se o compilador de scala gera código mais exuto é ótimo pro pessoal que escreve software pra uma vm. Isso aumenta a qualidade do produto. Mas a relação entre funcional e oo é insignificante para o resultado final que é somente um monte de zeros e uns.

[quote=fredferrao]Me parece que o tópico tomou outro rumo, diferente do que proposto, pelo menos com relação ao Titulo do mesmo. A coisa tava virando código nativo versus interpredado Java versus C++

[/quote]

Pois é, mas é que alguns se sentem ofendidos quando o assunto é desempenho e linguagem x. Não sabem que se um compilador gera mais linhas que outro o resultado final é inferior.

Obrigado Adelar pela indicação do grupo da linguagem scala.

Realmente esse tópico tomou rumos diferentes, mas o importante é que cada um deu seu parecer.

Pelas qualidades que Scala tem, acredito que seria uma boa evolução se o Java 8,9,10 seguissem o que já está pronto no Scala 2.9.
Isso é apenas uma opinião pessoal.

[quote=johnny quest]Pelas qualidades que Scala tem, acredito que seria uma boa evolução se o Java 8,9,10 seguissem o que já está pronto no Scala 2.9.
Isso é apenas uma opinião pessoal.[/quote]
Seria um grande avanço, mas difícil. Talvez fosse interessante importar o paradigma funcional de Scala… mas daí Java escapa da proposta e se torna outro Lisp. Mas quem sabe quais são os planos da Oracle para o Java 20 :wink:

Acho discussões sobre comparação entre linguagens interessantes, mas são puramente ilusórias, afinal são diversas as variáveis que vão definir as características (plataforma, existência ou não de GC, tecnologia usada para gerar o parser, existência de JIT, inferências de tipos e incontáveis outras). No final cada qual serve para algum propósito ou será abandonada dando lugar outra.

Das linguagens que conheço Scala é a única que se equipara a Java em questão de performance. Dizem que Clojure também possui semelhança em questão de performance, mas nunca usei para afirmar se é verdade. Groovy é legal, mas nem pense em performance quando for usá-la :smiley:

[quote=Adelar][quote=moscoso.dev]Segundo o estudo citado Scala é 10x mais lenta que Java pra compilar. Essa é uma informação muito mais importante pra mim já que performance de execução não é limitador na maioria dos projetos (CPU não é um recurso escasso), mas agilidade no desenvolvimento sim (desenvolvedor é recurso escasso).

[/quote]
Isso pode não ser problema de acordo com as ferramentas que são usadas. Por exemplo, você pode configurar o SBT para compilar o código de acordo que é alterada.[/quote]

Desculpe a ignorância, mas o que é SBT?

[quote=moscoso.dev][quote=Adelar][quote=moscoso.dev]Segundo o estudo citado Scala é 10x mais lenta que Java pra compilar. Essa é uma informação muito mais importante pra mim já que performance de execução não é limitador na maioria dos projetos (CPU não é um recurso escasso), mas agilidade no desenvolvimento sim (desenvolvedor é recurso escasso).

[/quote]
Isso pode não ser problema de acordo com as ferramentas que são usadas. Por exemplo, você pode configurar o SBT para compilar o código de acordo que é alterada.[/quote]

Desculpe a ignorância, mas o que é SBT?[/quote]

SBT = Sistema Brasileiro de Televisão :lol:

Brincadeira, é o Simple Build Tool!

Pelo que entendi esse tal de SBT consegue detectar e compilar só o trecho que foi alterado é isso? Mas isso não torna o ambiente mais lento, ficar toda hora checando e compilando, não consigo deixar de lembrar de java e suas IDEs. E não digo isso como elogio.

Era algo que gostaria de saber porque só ouço falar de performance de execução, o que é uma pena porque ninguém usa Scala em embarcados mesmo, nem mobile, ou sistemas em tempo real, enfim, onde performance de execução é realmente importante.

[quote=moscoso.dev]Pelo que entendi esse tal de SBT consegue detectar e compilar só o trecho que foi alterado é isso? Mas isso não torna o ambiente mais lento, ficar toda hora checando e compilando, não consigo deixar de lembrar de java e suas IDEs. E não digo isso como elogio.

Era algo que gostaria de saber porque só ouço falar de performance de execução, o que é uma pena porque ninguém usa Scala em embarcados mesmo, nem mobile, ou sistemas em tempo real, enfim, onde performance de execução é realmente importante.[/quote]

Para esse produtos embarcados a melhor opção é um kernel nano linux e linguagem c. O custo benefício é bom, e praticamente só se gasta com hardware.

[quote=juliocbq][quote=moscoso.dev]Pelo que entendi esse tal de SBT consegue detectar e compilar só o trecho que foi alterado é isso? Mas isso não torna o ambiente mais lento, ficar toda hora checando e compilando, não consigo deixar de lembrar de java e suas IDEs. E não digo isso como elogio.

Era algo que gostaria de saber porque só ouço falar de performance de execução, o que é uma pena porque ninguém usa Scala em embarcados mesmo, nem mobile, ou sistemas em tempo real, enfim, onde performance de execução é realmente importante.[/quote]

Para esse produtos embarcados a melhor opção é um kernel nano linux e linguagem c. O custo benefício é bom, e praticamente só se gasta com hardware.[/quote]
A compilação é feita por arquivo modificado, então para compilar não é demorado a não ser que sejam enviadas diversas alterações de uma só vez. Mas depois de construída a aplicação que vem o problema… e o tempo de deploy? Uma forma (não sei se tem outras) é se utilizar de jrebel daí para carregar as alterações na aplicação que está executando.

Já sobre mobile, já há quem use para desenvolver para Android.