Scala: Bringing Future Languages to the JVM

124 respostas
S

:arrow: Fonte InfoQ

Os tópicos abordados incluem a origem do Scala, a filosofia por trás Scala, o conjunto de recursos Scala, programação orientada a objetos e funcionais no Scala, exemplos de código Scala, escrevendo DSLs, como Scala é convertido em Java, o desempenho do Scala, tipos de dados abstratos, revogando , os atores e as funções parciais.

:arrow:Palestra sobre Scala Fonte InfoQ

124 Respostas

J

kkkk
Até quando?
Já pensou em criar um fórum sobre Scala pra você cara?

S

java.lang.JJunior:
kkkk
Até quando?
Já pensou em criar um fórum sobre Scala pra você cara?

“Think equate the development rather than the language itself, because Java is nothing more than Scala in the form of another language math, you can calculate duty and expressions can use more simple for me to get the same process, however will have more work to get the same result”

A

“Java is nothing more than Scala”

Java is nothing more than whatever language

Cada qual para seu uso.

S

ovelha:
“Java is nothing more than Scala”

Java is nothing more than whatever language

Cada qual para seu uso.

“Programming language is today a science math, you have to have a different behavior to want to simply be accepted in all”

S

:arrow: You can resolve situations of equations derived using integral, which is faster.

:arrow: say that in Java I can use equations derived but can not use full, however in Scala I can use Integral to my calculations, of course I have an advantage because i have math and develop the results of calculations for both derivation and for grains, understand now?

Easy example, imagine this:

:arrow: Grovvy can only calculate, equations derived.

:arrow: Scala can use both, as integral equations derived. Since I resolve Integral equations derived.

S

“This lecture is very good too, I liked it more simple and direct”

:arrow: Pragmatic Real-World Scala

M

Scala:
“This lecture is very good too, I liked it more simple and direct”

:arrow: Pragmatic Real-World Scala

  • Legal esse video !!!
L

Por que ele faz isso?

F

Eu tenho minha teoria: Multiplas personalidades ou Transtorno dissociativo de identidade

Falando nisso alguem ja viu este filme? Identidade :shock: :shock:

L

fredferrao:
Eu tenho minha teoria: Multiplas personalidades ou Transtorno dissociativo de identidade

Falando nisso alguem ja viu este filme? Identidade :shock: :shock:

Interessante

P

só neste tópico tem no minimo dois fakes do M.D.

R

http://www.relaxmental.com.br/main/materia_one.php?controle=49123&categ=Ps

http://www.usp.br/espacoaberto/arquivo/2004/espaco46ago/0comportamento

M

fredferrao:
Eu tenho minha teoria: Multiplas personalidades ou Transtorno dissociativo de identidade

Falando nisso alguem ja viu este filme? Identidade :shock: :shock:

:lol: :lol: :lol: :lol:

E

Agora são 3…

M

Não atirem no mensageiro. Deem uma olhada em Scala porque Java não vai durar outra decada. :twisted:

M

Concordo e pensando nisso abrir esse post !!!

Arquitetura não esta no framework mas na linguagem que lhe permite o melhor designer ao desenvolvimento

Abraçosss

F

Sim, olhem Ruby, olhem Lisp, olhem Python, olhem F#… é a Microsoft ta correndo atraz:
DZone Refcards: Essential F#

Se fosse pra chutar, ou seguir a “moda”, tambem chamado de tendência, eu diaria assim: Estude uma linguagem funcional/Multiparadigma neste ano de 2010.

Agora sair falando quais destas serão o futuro é no minimo coisa de Mãe Diná, Valter Mercado e afins, alias até um tempinho atras Ruby era o futuro, agora é scala, e depois de amanha vai ser o que???

J

Ahh…tudo conversa fiada. Falaram que java ia substituir c++ e c e nunca aconteceu. Agora que java amadureceu, dizem que será substituída.
Papo de quem gosta de marketing e time de futebol.

M

Ahh…tudo conversa fiada. Falaram que java ia substituir c++ e c e nunca aconteceu. Agora que java amadureceu, dizem que será substituída.
Papo de quem gosta de marketing e time de futebol.

Java substituiu C++ em muitos lugares. Isto sem falar de Delphi e COBOL. Agora nunca vi ninguém a sério afirmando que Java iria substituir C, até porque C não bateu de frente com o Java já que lidam com aplicações bastante distintas.

J

Ahh…tudo conversa fiada. Falaram que java ia substituir c++ e c e nunca aconteceu. Agora que java amadureceu, dizem que será substituída.
Papo de quem gosta de marketing e time de futebol.

Java substituiu C++ em muitos lugares. Isto sem falar de Delphi e COBOL. Agora nunca vi ninguém a sério afirmando que Java iria substituir C, até porque C não bateu de frente com o Java já que lidam com aplicações bastante distintas.

Me cita um lugar que c++ perdeu pro java? Até hoje vejo as mesmas empresas usando c++. Inclusive a própria SUN, em seus produtos.

M

juliocbq:

Me cita um lugar que c++ perdeu pro java? Até hoje vejo as mesmas empresas usando c++. Inclusive a própria SUN, em seus produtos.

Parece que closures não vingou no Java 7 e muito menos vai ser implementado nas outras versões, mas você pode usar em Scala.

A

que nada, estudem isso, Scala nao chega aos pés :-o

M

:arrow: Jonas Bonér - Real-World Scala: Fault-tolerant Concurrent Asynchronous Components

K

Ai ai… de novo a velha discussão “minha linguagem é melhor que a sua”, que nada mais é do que a repercussão do jardim de infância “meu pai é mais legal que o seu”…

Sabem o que realmente acho? Numa boa: 99% dos argumentos que escuto a respeito da “morte do Java” como linguagem se fundamentam na ausência de uma ou outra feature presente em outra linguagem (normalmente alguma linguagem mais nova).

E dai eu tiro as seguintes conclusões:

  • O mesmo argumento pode ser aplicado a todas as demais linguagens, pois nenhuma possui todos os recursos possíveis. Logo, estão todas morrendo (inclusive Scala)

  • Se a sua linguagem implementasse todos os recursos (o que nem sei ser possível), será que ela, em si, seria usável? Sinceramente, acredito que seria um monstrinho bem desagradável.

E escuto muito o argumento “Java não tem closures”. Será que o mundo vai acabar porque em Java não tem este recurso? Afinal de contas, sem este recurso conseguimos andar bem, não? Será que Java vai deixar de ser tão popular só por não ter closures? Digo isto porque até hoje nunca vi alguém dizer que não optou por Java pela ausência deste recurso.

Outra coisa que invalida BEM pra mim todo este papo furado: não gosta de Java? Use outra linguagem em conjunto. Eu por exemplo detesto lidar com XML em Java. Em Groovy é muito mais fácil. Vou abandonar 100% o Java por causa disto? Não: mesclo os dois (lembram-se de que no fundo é tudo bytecode?) e obtenho o melhor dos dois mundos.

Desculpem o desabafo, mas é que estou realmente cansado deste papinho furado da “morte da linguagem X”.

PS:
só pra lembrar: Cobol que todo mundo diz estar morto há décadas ainda é bem presente viu? Imagine Java, C/C++ então… Aff…

J

kicolobo:
Ai ai… de novo a velha discussão “minha linguagem é melhor que a sua”, que nada mais é do que a repercussão do jardim de infância “meu pai é mais legal que o seu”…

Sabem o que realmente acho? Numa boa: 99% dos argumentos que escuto a respeito da “morte do Java” como linguagem se fundamentam na ausência de uma ou outra feature presente em outra linguagem (normalmente alguma linguagem mais nova).

E dai eu tiro as seguintes conclusões:

  • O mesmo argumento pode ser aplicado a todas as demais linguagens, pois nenhuma possui todos os recursos possíveis. Logo, estão todas morrendo (inclusive Scala)

  • Se a sua linguagem implementasse todos os recursos (o que nem sei ser possível), será que ela, em si, seria usável? Sinceramente, acredito que seria um monstrinho bem desagradável.

E escuto muito o argumento “Java não tem closures”. Será que o mundo vai acabar porque em Java não tem este recurso? Afinal de contas, sem este recurso conseguimos andar bem, não? Será que Java vai deixar de ser tão popular só por não ter closures? Digo isto porque até hoje nunca vi alguém dizer que não optou por Java pela ausência deste recurso.

Outra coisa que invalida BEM pra mim todo este papo furado: não gosta de Java? Use outra linguagem em conjunto. Eu por exemplo detesto lidar com XML em Java. Em Groovy é muito mais fácil. Vou abandonar 100% o Java por causa disto? Não: mesclo os dois (lembram-se de que no fundo é tudo bytecode?) e obtenho o melhor dos dois mundos.

Desculpem o desabafo, mas é que estou realmente cansado deste papinho furado da “morte da linguagem X”.

PS:
só pra lembrar: Cobol que todo mundo diz estar morto há décadas ainda é bem presente viu? Imagine Java, C/C++ então… Aff…

Falou bonito! (clap clap clap)

M

kicolobo:
Ai ai… de novo a velha discussão “minha linguagem é melhor que a sua”, que nada mais é do que a repercussão do jardim de infância “meu pai é mais legal que o seu”…


Bom, você pode usar Máquina de Escrever e outra pessoa pode usar Computador , mas o entendimento não é se Java é melhor a verdade é que Scala é extramente mais eficiênte, você escreve menos código, assim tem menos erro, menos bugs, mais agilidade e mais dinheiro.O que é complexo é a abstração que Scala se envolve e isso esta ligado a conceitos também na transferência de conhecimento.Quando se trata de tecnologia a minima vantagem pode fazer diferença e na certa é gritante mesmo, você diz sobre closures, não é que java não tem é porque não é possivel pelo design a implementar.Em Scala o diamente da morte não acontece a linguagem sabe usar isso com muito mais proeficiência do em que C++, e em Java isso já não é possivel. A forma de Equacionar soluções e aliar OO+FP é um avanço pra uma linguagem que leva consigo uma arquitetura que escala pra qual ambiente e tecnologia.

J

pois é. já mataram um monte de linguagens ae, mas o que realmente vejo é o contrário. Quanto mais madura, mais a linguagem é utilizada. Ao contrário dos times de futebol, que certas empresas criam para vender camisetas e tendências.

M

juliocbq:
pois é. já mataram um monte de linguagens ae, mas o que realmente vejo é o contrário. Quanto mais madura, mais a linguagem é utilizada. Ao contrário dos times de futebol, que certas empresas criam para vender camisetas e tendências.

Me responde essa, o conceito de full-stack esta na linguagem ou na arquitetura ?

K

Marcio, quanta contradição em um único parágrafo. Me explica melhor isto aqui:
primeiro você diz:

Primeiro diz que o assunto não é se Java é melhor ou pior, mas em seguida diz que Scala é mais eficiente que Java?

Continuando:
em seguida diz que Scala é mais poderosa e diz:

Se é mais complexa, é mais difícil, se é mais difícil, qual a vantagem?

Ahhn??? Explica melhor isto aqui. Realmente tá MUITO avançado pra qualquer um compreender.

Outro ponto esquisito. Cara: em Java também se faz isto. Me lembro de um artigo fascinante que li na Java Magazine uma vez sobre “Java Funcional”, em que básicamente era exposto como aplicar conceitos da programação funcional na orientação a objetos (e por consequência, Java). (acho que era do Diego Doelderling (desculpem-me pela grafia) o texto)
Ter lá seus construtores nativos que facilitem a adoção da programação funcional é bacana, uma funcionalidade a mais, mas mesmo assim, não significa a morte das demais.

Continuando…

Outro papinho furado: “se você escreve menos código, sua linguagem é melhor”.
Não. Não necessáriamente. Quer ver porque é furado?

O argumento “minha linguagem é poderosa porque escrevo menos código” possui as seguintes falácias:

  • Sim, você escreve menos código, mas para entender o que é aquilo que escreveu, é necessário um ferramental teórico BEM maior. Como consequência, seu domínio daquele código diminui.
  • Se é mais complexo de aprender, leva mais horas para começar a se produzir alguma coisa decente. Consequentemente, o seu argumento de que

vai pro saco também.

Continuando de novo…
eu sei que não foi você que divirtuou o tópico, que começou até bem, apresentando Scala. É que realmente tenho muita preguiça desta postura “menino empolgado com brinquedo novo” que esnoba todo o resto sem a MENOR fundamentação que vá além do “viva! brinquedo novo!”

G

:thumbup: Esse brainfuck é o tipo ótimo de linguagem para que você garanta eternamente seu emprego. Por mais que você documente o método nunca ninguém irá entender mesmo, hahahaha.

V

Eu tenho uma sugestão. Pq o Marcio não cria o tópico “Scala é melhor que LISP?”, e ele e o thiagosc ficam eternamente presos discutindo por lá?

R

++++++++++++++++++++++

J

Que alegria!! Bom que fiquem num deadlock para nunca mais importunarem ninguém.

M

kicolobo:
Ai ai… de novo a velha discussão “minha linguagem é melhor que a sua”, que nada mais é do que a repercussão do jardim de infância “meu pai é mais legal que o seu”…

Sabem o que realmente acho? Numa boa: 99% dos argumentos que escuto a respeito da “morte do Java” como linguagem se fundamentam na ausência de uma ou outra feature presente em outra linguagem (normalmente alguma linguagem mais nova).

E dai eu tiro as seguintes conclusões:

  • O mesmo argumento pode ser aplicado a todas as demais linguagens, pois nenhuma possui todos os recursos possíveis. Logo, estão todas morrendo (inclusive Scala)

  • Se a sua linguagem implementasse todos os recursos (o que nem sei ser possível), será que ela, em si, seria usável? Sinceramente, acredito que seria um monstrinho bem desagradável.

E escuto muito o argumento “Java não tem closures”. Será que o mundo vai acabar porque em Java não tem este recurso? Afinal de contas, sem este recurso conseguimos andar bem, não? Será que Java vai deixar de ser tão popular só por não ter closures? Digo isto porque até hoje nunca vi alguém dizer que não optou por Java pela ausência deste recurso.

Outra coisa que invalida BEM pra mim todo este papo furado: não gosta de Java? Use outra linguagem em conjunto. Eu por exemplo detesto lidar com XML em Java. Em Groovy é muito mais fácil. Vou abandonar 100% o Java por causa disto? Não: mesclo os dois (lembram-se de que no fundo é tudo bytecode?) e obtenho o melhor dos dois mundos.

Desculpem o desabafo, mas é que estou realmente cansado deste papinho furado da “morte da linguagem X”.

PS:
só pra lembrar: Cobol que todo mundo diz estar morto há décadas ainda é bem presente viu? Imagine Java, C/C++ então… Aff…

Ta vendo, teve que aprender Grovvy pra ser mais produtivo em Java. Bom, primeiro vc não precisa desaprender Java, a não ser que sofra de algum tipo de efeito colateral indesejado por causa disso. Mas seria interessante saber sua perspectiva se fosse alguem comecando na area, seria uma boa aprender COBOL? e Java? Acho que a questão é mais ampla.

Não conheco 99% das pessoas que conversou, mas acho que existe muita confusão a esse respeito porque Java significa diferentes coisas com diferentes niveis de sucesso. Quando falamos da linguagem não existe duvidas que ela deve se concentrar num nicho de aplicacoes para JVM e não mais no mainstream das aplicações como foi até então, não porque lhe falta alguma feature, mas porque lhe falta o ideal de querer fornecer aos usuários, que irão criar as aplicações da nova decada, a ferramenta ideal. Qualquer Marcio Duran com tempo livre pra ficar navegando na internet ja percebeu. O próximo são as fabricas de software e o mercado corporativo.

J

Ahhn??? Explica melhor isto aqui. Realmente tá MUITO avançado pra qualquer um compreender.

Kico, o próprio Alan Cox não seria capaz de responder isso.

K

mochuara:

Ta vendo, teve que aprender Grovvy pra ser mais produtivo em Java. Bom, primeiro vc não precisa desaprender Java, a não ser que sofra de algum tipo de efeito colateral indesejado por causa disso. Mas seria interessante saber sua perspectiva se fosse alguem comecando na area, seria uma boa aprender COBOL? e Java? Acho que a questão é mais ampla.

Não conheco 99% das pessoas que conversou, mas acho que existe muita confusão a esse respeito porque Java significa diferentes coisas com diferentes niveis de sucesso. Quando falamos da linguagem não existe duvidas que ela deve se concentrar num nicho de aplicacoes para JVM e não mais no mainstream das aplicações como foi até então, não porque lhe falta alguma feature, mas porque lhe falta o ideal de querer fornecer aos usuários, que irão criar as aplicações da nova decada, a ferramenta ideal. Qualquer Marcio Duran com tempo livre pra ficar navegando na internet ja percebeu. O próximo são as fabricas de software e o mercado corporativo.

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.

V

kicolobo:
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.

Eu também usei a mesma estratégia. Java fazendo 99% do trabalho, groovy acessando objetos COM.

M


Primeiro diz que o assunto não é se Java é melhor ou pior, mas em seguida diz que Scala é mais eficiente que Java?
Continuando:
em seguida diz que Scala é mais poderosa e diz:

Expliquei sobre closures e você não disse nem o que é e pra qual proposito, simplesmente disse isso não faz falta. Que ciêntista é você ?


Se é mais complexa, é mais difícil, se é mais difícil, qual a vantagem?

Na terra de cegos quem tem um olho só é Rei.

Em Scala o diamente da morte não acontece a linguagem sabe usar isso com muito mais proeficiência do em que C++, e em Java isso já não é possivel.
Ahhn??? Explica melhor isto aqui. Realmente tá MUITO avançado pra qualquer um compreender.

Pode acreditar você sabe o que é garbage collection em java , você não fica regrado em sua heap ou stack , trabalha livremente.


Outro ponto esquisito. Cara: em Java também se faz isto. Me lembro de um artigo fascinante que li na Java Magazine uma vez sobre “Java Funcional”, em que básicamente era exposto como aplicar conceitos da programação funcional na orientação a objetos (e por consequência, Java). (acho que era do Diego Doelderling (desculpem-me pela grafia) o texto)
Ter lá seus construtores nativos que facilitem a adoção da programação funcional é bacana, uma funcionalidade a mais, mas mesmo assim, não significa a morte das demais.

Aqui falta melhor referencia.


Continuando…
Outro papinho furado: “se você escreve menos código, sua linguagem é melhor”.
Não. Não necessáriamente. Quer ver porque é furado?

Qual é o seu argumento técnico ?

Sim, é necessário correr atrás.Até parece que a documentação é de boca em boca.

Uma ocasião questionei sobre RestFulie, depois surgir o site com maior documentação da Caelum sobre Restfulie, hoje apesar de seu conceito ser produção do Guilherme Silveira, eu percebi muito pouco interesse ao assunto pelas pessoas, sendo que é de notável observação nas questões de hipermidia.Acho que é uma questão de interesse em querer aprender, o mesmo vale pra Scala.

J

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.

M

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.

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

J

Ow Mathemathic,

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

P

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…

M

juliocbq:

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

Velocidade e processamento , ganho de performance.

M

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

J

Mathemathic:
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.

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

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.

M

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.

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

J

Mathemathic:
juliocbq:

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

Velocidade e processamento , ganho de performance.

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.

M

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.

A mesma informação é valida pra Scala, ela usa gabarge collection também ? Quero uma melhor referencia na tecnologia discutida.

J

Mathemathic:
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.

A mesma informação é valida pra Scala, ela usa gabarge collection também ? Quero uma melhor referencia na tecnologia discutida.

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.

M

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.

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

V

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.

M

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.

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…

J

Mathemathic:
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.

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…

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.

V

juliocbq:
Mathemathic:
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.

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…

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

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

J

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

F

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.

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.

J

fredferrao:
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.

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.

É 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.

F

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??

J

fredferrao:
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.

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??

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.

F

juliocbq:

Blz.

Agora só não estou entendendo quando voce diz: “não tem controle sobre atributos protegidos, privados ou públicos, e não pode ter parâmetros nos construtores.” Como assim, tem como explicar melhor?

Sobre os contrutores OK.

Calma, eu não sou o Duran, e nem estou discutindo isto, estamos apenas discutindo sobre a herança multipla :wink:

M

As tecnicas de desenvolvimento hoje utilizam linguagens modernas que são projetadas para o desenvolvimento Ágil, frente aos desafios e concepções atuais, isso não se sustenta pelas linguagens antigas, essa sua afirmação é um verdadeiro absurdo.

[color=red]“Leia com atenção, pra não cair ao vento”[/color]

Fonte:

Introduction

There are so many languages that you could use to program the JVM.
In this book I hope to convince you to take the time to learn Scala.

The Scala language has been designed for concurrency, expressiveness, and scalability. The language and its libraries let you focus on your
problem domain without being bogged down by low-level infrastructure details like threads and synchronization.

We live in a world where hardware is getting cheaper and more powerful.
Users now have devices with multiple processors, each with multiple cores. Although Java has served us well so far, it was not designed
to take advantage of the power we have on hand today. Scala lets you put all that power to use to create highly responsive, scalable, performing
applications.

In this introduction, we?ll take a quick tour of the benefits of functional programming and Scala to show you what makes Scala attractive. In
the rest of this book, you?ll learn how to use Scala to realize those benefits.

Why Scala ?
Is Scala the right language for you ?
Scala is a hybrid functional and object-oriented language. When creating a multithreaded application in Scala, you?ll lean toward a functional
style of programming where you write lock-free code with immutable

WHY SCALA ?

Scala provides an actor-based message-passing model that removes
the pain associated with concurrency. Using this model, you can write concise multithreaded code without the worries of data contention
between threads and the resulting nightmare of dealing with locks and releases. You can retire the synchronized keyword from your vocabularies
and enjoy the productivity gains of Scala.

The benefits of Scala, however, are not limited to multithreaded applications. You can also use it to build powerful, concise, single-threaded
applications and single-threaded modules of multithreaded applications.
You can quickly put to use the powerful capabilities of Scala, including sensible static typing, closures, immutable collections, and
elegant pattern matching.

Scala’s support for functional programming helps you to write concise and expressive code. Thanks to the higher level of abstraction, you can
get more things done with fewer lines of code. The functional style will benefit both your single-threaded applications and your multithreaded
applications.

A number of functional programming languages exist. Erlang, for one, is a nice functional programming language. In fact, Scala’s concurrency
model is very similar to that of Erlang. However, Scala has two significant advantages over Erlang. First, Scala is strongly typed, while Erlang
is not. Second, unlike Erlang, Scala runs on the JVM and interoperates very well with Java.

These two features of Scala make it a prime candidate for use in different layers of enterprise applications. You can certainly use Scala to
build an entire enterprise application if you desire. Alternately, you can use it in different layers along with other languages. You can take
advantage of the strong typing, superb concurrency model, and powerful pattern matching capabilities in layers where they would matter
the most in your applications. The following figure, inspired by Ola Bini’s Language Pyramid (see ‘Fractal Programming’ in Appendix A, on
page 211), shows where Scala may fit in with other languages in an
enterprise application.

An object is said to be immutable if you can?t change its contents once you create it.This eliminates the concerns of managing contention when multiple threads access the object. Java?s String is a great example of an immutable object.

[size=18][color=red]What about other languages on the JVM…Groovy, JRuby, Clojure ?[/color]
[/size]
Scala is by far the only prominent strongly typed language that provides functional style and great concurrency support. JRuby and Groovy are
dynamic languages. They are not functional and do not provide any more solutions for concurrency than Java does. Clojure, on the other
hand, is a hybrid functional language. It is dynamic in nature and so is not statically typed. Furthermore, its syntax is similar to Lisp, which is
not the easiest syntax to work with unless you are familiar with it.

If you are an experienced Java programmer and are battling with Java to implement multithreaded applications, you will find Scala to be very
useful. You can quite easily wrap your Java code into Scala?s actors to provide thread isolation. To communicate between the threads, you can
use Scala?s lightweight API to easily pass messages. Instead of launching threads and immediately limiting concurrency by synchronization,
you can use lock-free message passing to enjoy true concurrency.

If you value static typing and like to benefit from the support offered by the compiler, you will find that the static typing provided in Scala works
for you without standing in your way. You will enjoy typing without having to type as much code.If you are looking for a higher level of abstraction and highly expressive code, you’ll be attracted to Scala?s conciseness. You can get a lot more done with less code in Scala. You will also find the flexibility of Scala when it comes to operators and notations useful for creating domain specific languages.

P

KKKKKKKKKKK…

Pronto, o Duran já conseguiu alegrar o meu dia :lol:
Pena que ele parou de escrever em inglês :lol:

C

Eu finalmente descobri quem é o Duran (!!!)
Ele é um bot criado pelos moderadores, para entreter a todos nós =D

E digo que é um bot muito bom.

J

Só queria entender uma única coisa. Qual o seu objetivo duran? Os tópicos que você cria até rendem comentários interessantes, mas qual o seu propósito? O que você espera com isso?

P

clone_zealot:
Eu finalmente descobri quem é o Duran (!!!)
Ele é um bot criado pelos moderadores, para entreter a todos nós =D

E digo que é um bot muito bom.

Não tenho nada haver com isso.

S

Fico imaginando o criador desse tópico chegando para o cliente dele e tendo esse dialogo(na visão do cliente):
O SUJEITO: “Precisamos migrar nosso sistemas em Java urgentemente para outra linguagem! RÁPIDO!”.
O CLIENTE: “Porque? O Sistema está funcionando muito bem atualmente”.
O SUJEITO: “Sinto-lhe informar, mas… mas… (mão tremula) o Java está morrendo… ele não tem mais muito tempo de vida”.
O CLIENTE: “Como assim? (com cara de WTF)”.
O SUJEITO: “Simples. O Java está ficando velho. Ele não era como antigamente. Não tem mais o mesmo vigor. E sinto-lhe informar mas… mas… ele não tem closures…”.
O CLIENTE: “Não tem o que? E como ele funcionou até hoje sem isso?”.
O SUJEITO: “Não sei. Ele funciona, e continuará funcionando, mas o sistema não pode continuar assim.”.
O CLIENTE: “Não pode continuar como? Ele não pode continuar funcionando? É isso?”.
O SUJEITO: “Não. Ele não pode continuar sem closures e sem tecnologias modernas.”.
O CLIENTE: “Ahhhhh. Entendi. E o que eu ganho com isso?”.
O SUJEITO: “Você nada. Mas nós desenvolvedores vamos ganhar muito.”.
O CLIENTE: “Deixa ver se eu entendi. Eu vou gastar dinheiro e tempo para alterar algo que funciona muito bem e já paguei para no fim ficar a mesma coisa?”.
O SUJEITO: “Ahn… é sim.”
O CLIENTE: “Vou analisar isso corretamente e te dou uma resposta. (Resumindo: Não)”.

Moral da história: Não acho que Java e qualquer linguagem morra enquanto ele não começe a trazer algum tipo de prejuizo para quem está pagando para usa-las ou apareça alguma que traga MUITA VANTAGEM MESMO. Delphi “morreu”(com ênfase as aspas), pois existem vantagens reais em sistemas web por exemplo. Mas migrar um sistema funcionando ou começar usar uma tecnologia só para deixar programador feliz, acho não é algo que aconteça não, por mais que o blá blá blá tecnológico por trás seja realmente interessante para nós desenvolvedores. Para o cliente e para quem paga, migrar de Java para Scala seria mesma coisa que derrubar uma casa inteira para construir outra idêntica no lugar e pintar de azul. E é por esse motivo que COBOL, C, C++ e muitas linguagens que já foram profetizadas como mortas estão aí até hoje. Para o cliente funciona, ele já tem uma cultura em cima daquela tecnologia, e já tem uma certa experiência em cima dela e o mais importante: PARA ELE FUNCIONA. Para quê ele vai jogar toda essa experiência fora, só porque a linguagem nova tem alguns recursos X que a tecnologia atual não tem?
Talvez para novos sistemas seja interessante considerar o uso de Scala, se ele realmente trazer algum benefício bom e um bom retorno em produtividade e tempo. Mas na minha visão pelo menos, produtividade é muito mais baseada na experiência na tecnologia do que na “linguagem salvadora do mundo da semana”. Se tenho uma equipe trabalhando com Java, e ela está muito bem, porque vou arriscar com algo que não conheço?

Ps.: Tudo que estou falando é na visão de quem tá pagando.
Ps2.: Tudo é minha opinião e não é a verdade rege o universo.

L

serathiuk:
Fico imaginando o criador desse tópico chegando para o cliente dele e tendo esse dialogo(na visão do cliente):
O SUJEITO: “Precisamos migrar nosso sistemas em Java urgentemente para outra linguagem! RÁPIDO!”.
O CLIENTE: “Porque? O Sistema está funcionando muito bem atualmente”.
O SUJEITO: “Sinto-lhe informar, mas… mas… (mão tremula) o Java está morrendo… ele não tem mais muito tempo de vida”.
O CLIENTE: “Como assim? (com cara de WTF)”.
O SUJEITO: “Simples. O Java está ficando velho. Ele não era como antigamente. Não tem mais o mesmo vigor. E sinto-lhe informar mas… mas… ele não tem closures…”.
O CLIENTE: “Não tem o que? E como ele funcionou até hoje sem isso?”.
O SUJEITO: “Não sei. Ele funciona, e continuará funcionando, mas o sistema não pode continuar assim.”.
O CLIENTE: “Não pode continuar como? Ele não pode continuar funcionando? É isso?”.
O SUJEITO: “Não. Ele não pode continuar sem closures e sem tecnologias modernas.”.
O CLIENTE: “Ahhhhh. Entendi. E o que eu ganho com isso?”.
O SUJEITO: “Você nada. Mas nós desenvolvedores vamos ganhar muito.”.
O CLIENTE: “Deixa ver se eu entendi. Eu vou gastar dinheiro e tempo para alterar algo que funciona muito bem e já paguei para no fim ficar a mesma coisa?”.
O SUJEITO: “Ahn… é sim.”
O CLIENTE: “Vou analisar isso corretamente e te dou uma resposta. (Resumindo: Não)”.

: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Parabéns pela Criatividade

F

E como diriam os Titãs “A melhor linguagem de todos os tempos da ultima semana” :lol:

M

Me surpreende o bom senso das pessoas neste forum ao ponto de reconhecerem publicamente que Java não presta mais para muitos dos novos desenvolvimentos.

Concordo com tudo que vc falou, Java não sera substituido de uma outro pra outra. Mas ha 10 anos atras (parece que foi ontem!) a tecnologia do momento foi “substituida” por Java, e quem “arriscou” nessa época se deu bem.

S

Você realmente leu o que eu disse? Vou citar denovo:

Quando eu disse talvez, depende do que, como e porque. Nada no mundo é “bala de prata”. Eu em nenhum momento disse que Java não presta. Mas sim disse que a melhor linguagem é aquela que você e sua equipe tem experiência. E se sua equipe tem experiência em Scala e ela realmente for uma boa linguagem(não conheço Scala o suficiente para dar uma opinião se é realmente boa), porque não desenvolver nela, se realmente for viável e se trazer alguma vantagem em relação a outras tecnologias? Mas Java presta sim, e a prova é que muita gente utiliza ele até hoje, mesmo com muita gente querendo mata-la.

L

Qual tecnologia do momento de uns anos atrás foi substituido pelo Java??

M

serathiuk:
mochuara:

Me surpreende o bom senso das pessoas neste forum ao ponto de reconhecerem publicamente que Java não presta mais para muitos dos novos desenvolvimentos.

Você realmente leu o que eu disse? Vou citar denovo:

Quando eu disse talvez, depende do que, como e porque. Nada no mundo é “bala de prata”. Eu em nenhum momento disse que Java não presta. Mas sim disse que a melhor linguagem é aquela que você e sua equipe tem experiência. E se sua equipe tem experiência em Scala e ela realmente for uma boa linguagem(não conheço Scala o suficiente para dar uma opinião se é realmente boa), porque não desenvolver nela, se realmente for viável e se trazer alguma vantagem em relação a outras tecnologias? Mas Java presta sim, e a prova é que muita gente utiliza ele até hoje, mesmo com muita gente querendo mata-la.

Se sua equipe tem problema pra assimilar novas tecnologias essa é uma limitação dela e não do Java, vc tem razão. As limitações da linguagem Java são outras.

S

Se toda empresa de software tivesse desenvolvimento orientado a hype, aí sim estariamos lascados. :wink:

M

Lucas Emanuel:
mochuara:

…Mas ha 10 anos atras (parece que foi ontem!) a tecnologia do momento foi “substituida” por Java, e quem “arriscou” nessa época se deu bem.

Qual tecnologia do momento de uns anos atrás foi substituido pelo Java??

Muitos produtos sofreram com a concorrencia do Java no servidor. (cgi, ColdFusion, PowerBuilder). Com linguagens as coisas são mais lentas, mas não tenho porque pensar que Java ajudou a aumentar o mercado de linguagens como COBOL, Clipper. Portanto o sucesso de novas linguagens principalmente por rodarem na JVM, tende a canibalizar o mercado de Java. O paradigma procedural tb foi substituido pela moda da Orientação a Objetos, que agora demonstrou ser um grande fisco. Inclusive, este é o motivo de não gostar de Scala. Misturar programação funcional + OO não me parece uma boa idéia.

M

serathiuk:
mochuara:

Se sua equipe tem problema pra assimilar novas tecnologias essa é uma limitação dela e não do Java, vc tem razão. As limitações da linguagem Java são outras.

Se toda empresa de software tivesse desenvolvimento orientado a hype, aí sim estariamos lascados. :wink:

Mais uma vez, este seria um problema localizado, de não saber diferenciar fatos concretos do hype. Seu argumento ignora muitas empresas valiosas que estão usando o “hype” hoje nos seus produtos.

M

serathiuk:
Fico imaginando o criador desse tópico chegando para o cliente dele e tendo esse dialogo(na visão do cliente):
O SUJEITO: “Precisamos migrar nosso sistemas em Java urgentemente para outra linguagem! RÁPIDO!”.
O CLIENTE: “Porque? O Sistema está funcionando muito bem atualmente”.
O SUJEITO: “Sinto-lhe informar, mas… mas… (mão tremula) o Java está morrendo… ele não tem mais muito tempo de vida”.
O CLIENTE: “Como assim? (com cara de WTF)”.
O SUJEITO: “Simples. O Java está ficando velho. Ele não era como antigamente. Não tem mais o mesmo vigor. E sinto-lhe informar mas… mas… ele não tem closures…”.
O CLIENTE: “Não tem o que? E como ele funcionou até hoje sem isso?”.
O SUJEITO: “Não sei. Ele funciona, e continuará funcionando, mas o sistema não pode continuar assim.”.
O CLIENTE: “Não pode continuar como? Ele não pode continuar funcionando? É isso?”.
O SUJEITO: “Não. Ele não pode continuar sem closures e sem tecnologias modernas.”.
O CLIENTE: “Ahhhhh. Entendi. E o que eu ganho com isso?”.
O SUJEITO: “Você nada. Mas nós desenvolvedores vamos ganhar muito.”.
O CLIENTE: “Deixa ver se eu entendi. Eu vou gastar dinheiro e tempo para alterar algo que funciona muito bem e já paguei para no fim ficar a mesma coisa?”.
O SUJEITO: “Ahn… é sim.”
O CLIENTE: “Vou analisar isso corretamente e te dou uma resposta. (Resumindo: Não)”.

Moral da história: Não acho que Java e qualquer linguagem morra enquanto ele não começe a trazer algum tipo de prejuizo para quem está pagando para usa-las ou apareça alguma que traga MUITA VANTAGEM MESMO. Delphi “morreu”(com ênfase as aspas), pois existem vantagens reais em sistemas web por exemplo. Mas migrar um sistema funcionando ou começar usar uma tecnologia só para deixar programador feliz, acho não é algo que aconteça não, por mais que o blá blá blá tecnológico por trás seja realmente interessante para nós desenvolvedores. Para o cliente e para quem paga, migrar de Java para Scala seria mesma coisa que derrubar uma casa inteira para construir outra idêntica no lugar e pintar de azul. E é por esse motivo que COBOL, C, C++ e muitas linguagens que já foram profetizadas como mortas estão aí até hoje. Para o cliente funciona, ele já tem uma cultura em cima daquela tecnologia, e já tem uma certa experiência em cima dela e o mais importante: PARA ELE FUNCIONA. Para quê ele vai jogar toda essa experiência fora, só porque a linguagem nova tem alguns recursos X que a tecnologia atual não tem?

Quer dizer então que se tenho uma vacina mais eficiênte para os meus problemas não devo usa-la para salvar mais gente, porque devo ficar plantando chá de boldo pois não preciso gastar dinheiro com o avanço da medicina.Redículo sua observação.Será que você não faz update de suas aplicações ou as versões são ainda as mesma dos anos 80 e 70, se instalar esses aplicativos dessa epoca no meu windows 7 sei que algumas serão capazes mesmo de funcionar, agora não posso garantir nenhum suporte ou compatibilidade.Você esta confundido aplicações legadas e manutenabilidade das mesmas, com o que você vive hoje em termos de soluções, o seu mundo é outro hoje ele é bem mais convergente.

Ler é bom , estudar melhor ainda, posso trabalhar com Scala pareando com tecnologias diversas, elevando o grau de desempenho e desenvolvimento.


Ps.: Tudo que estou falando é na visão de quem tá pagando.

Se você for o administrador do Hospital não é o médico que sabe o que é melhor pra o seu paciente, sua visão é um lucro alheio e de pessima visão.

Aqui sua argumentação ainda é armadora, Scala é o que você pode ter de melhor com que há de mais poderosos aos recursos de todas as linguagem de desenvolvimento, pois ela trabalha em paralelo escalando o desenvolvimento.

S

Não. Quero dizer se eu tenho uma vacina que faz a mesma coisa, não tem porque mudar. E uma coisa é ter uma tecnologia de 20 anos atrás sem suporte. Outra é falar de uma tecnologia que tem mais pessoas e empresas por trás dando suporte do que a ‘nova tecnologia’.

Conhecer a linguagem tudo bem, até fiquei curioso em testar o ‘poder do Scala’. Mas falar que é a linguagem é excelente no ponto de matar outra é sacanagem.

Se eu sou o médico, eu nunca irei testar um novo procedimento cirurgico sem ter 100% conhecimento sobre, sem tem uma boa experiência, vários casos de sucesso comprovados a longo prazo e sabendo que o procedimento atual ainda me atende com segurança e com qualidade.

Você é vendedor ou programador? Se tem uma visão que Scala pode ser melhor que tudo, ou é por que é cego, ou porque não conhece nada.

Por mais, meu ponto de vista foi dado já. Qualquer coisa a mais será trollagem irrelevante.

M

serathiuk:

Conhecer a linguagem tudo bem, até fiquei curioso em testar o ‘poder do Scala’. Mas falar que é a linguagem é excelente no ponto de matar outra é sacanagem.

Em nenhum momento disse matar, disse que você pode atuar em paralelo com as tecnologias reprojetando suas aplicações.

Mathemathic:

Se eu sou o médico, eu nunca irei testar um novo procedimento cirurgico sem ter 100% conhecimento sobre, sem tem uma boa experiência, vários casos de sucesso comprovados a longo prazo e sabendo que o procedimento atual ainda me atende com segurança e com qualidade.

Agora você mudou de papel para sair da adminstração do hospital e ir pra o laboratório testar, já não entende muito suas responsabilidades outra coisa os mentores de Scala construiram a tecnologia Java, isso já dá boa credibilidade de quem vem divulgando.

Mathemathic:

Você é vendedor ou programador? Se tem uma visão que Scala pode ser melhor que tudo, ou é por que é cego, ou porque não conhece nada.
Por mais, meu ponto de vista foi dado já. Qualquer coisa a mais será trollagem irrelevante.

Não é isso, você tem uma visão de adminstração e não consegui atingir em argumentos ciêntificos que sejam capazes de contra-argumentar suas colocações, recomendo muita literatura pra querer levar sobre questões de arquitetura e desenvolvimento, senão vai vir aqui pra falar de Cobol, ou melhor (sistemas legados).
Quando for pra um Hospital não procure o dono pra querer se tratar , vá direto ao clinico geral na certa é o mais recomendável.

J

Ei cuidado com a Lei de Ricbit pessoal!

M

Ainda não se chegou a isso, mas gostei da sua obervação.

A

Ainda não se chegou a isso, mas gostei da sua obervação.

Bom, eu já estou fazendo aqui o facepalm. =)

F

Legal o link.

J
fredferrao:
juliocbq:
...

Blz.

Agora só não estou entendendo quando voce diz: "não tem controle sobre atributos protegidos, privados ou públicos, e não pode ter parâmetros nos construtores." Como assim, tem como explicar melhor?

Sobre os contrutores OK.

juliocbq:
Não vejo porque uma linguagem tem que substituir outra.

Calma, eu não sou o Duran, e nem estou discutindo isto, estamos apenas discutindo sobre a herança multipla :wink:

Posso escolher herdar somente atributos privados, ou somente os protegidos, ou somente os públicos, em c++:

Ex:

class Teste2: protected Teste{
//......
}

Essa classe Teste2 faz herança de atributos protegidos.

Os traits em Scala não podem ter construtores com parâmetros. Se você criar um trait, ele não poderá passar parâmetros em construtores.

Ex:

trait Worker extends Person {
  private var workSchedule:Schedule = ...
 
  override def schedule = workSchedule
 
  def work() = {...}
}

diferente das classes

class CollegeStudent(school:School, company:Company) extends Student with Worker {
  // ...
}
J

Mathemathic:
juliocbq:

É 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.

As tecnicas de desenvolvimento hoje utilizam linguagens modernas que são projetadas para o desenvolvimento Ágil, frente aos desafios e concepções atuais, isso não se sustenta pelas linguagens antigas, essa sua afirmação é um verdadeiro absurdo.

[color=red]“Leia com atenção, pra não cair ao vento”[/color]

Fonte:

Introduction

There are so many languages that you could use to program the JVM.
In this book I hope to convince you to take the time to learn Scala.

The Scala language has been designed for concurrency, expressiveness, and scalability. The language and its libraries let you focus on your
problem domain without being bogged down by low-level infrastructure details like threads and synchronization.

We live in a world where hardware is getting cheaper and more powerful.
Users now have devices with multiple processors, each with multiple cores. Although Java has served us well so far, it was not designed
to take advantage of the power we have on hand today. Scala lets you put all that power to use to create highly responsive, scalable, performing
applications.

In this introduction, we?ll take a quick tour of the benefits of functional programming and Scala to show you what makes Scala attractive. In
the rest of this book, you?ll learn how to use Scala to realize those benefits.

Why Scala ?
Is Scala the right language for you ?
Scala is a hybrid functional and object-oriented language. When creating a multithreaded application in Scala, you?ll lean toward a functional
style of programming where you write lock-free code with immutable

WHY SCALA ?

Scala provides an actor-based message-passing model that removes
the pain associated with concurrency. Using this model, you can write concise multithreaded code without the worries of data contention
between threads and the resulting nightmare of dealing with locks and releases. You can retire the synchronized keyword from your vocabularies
and enjoy the productivity gains of Scala.

The benefits of Scala, however, are not limited to multithreaded applications. You can also use it to build powerful, concise, single-threaded
applications and single-threaded modules of multithreaded applications.
You can quickly put to use the powerful capabilities of Scala, including sensible static typing, closures, immutable collections, and
elegant pattern matching.

Scala’s support for functional programming helps you to write concise and expressive code. Thanks to the higher level of abstraction, you can
get more things done with fewer lines of code. The functional style will benefit both your single-threaded applications and your multithreaded
applications.

A number of functional programming languages exist. Erlang, for one, is a nice functional programming language. In fact, Scala’s concurrency
model is very similar to that of Erlang. However, Scala has two significant advantages over Erlang. First, Scala is strongly typed, while Erlang
is not. Second, unlike Erlang, Scala runs on the JVM and interoperates very well with Java.

These two features of Scala make it a prime candidate for use in different layers of enterprise applications. You can certainly use Scala to
build an entire enterprise application if you desire. Alternately, you can use it in different layers along with other languages. You can take
advantage of the strong typing, superb concurrency model, and powerful pattern matching capabilities in layers where they would matter
the most in your applications. The following figure, inspired by Ola Bini’s Language Pyramid (see ‘Fractal Programming’ in Appendix A, on
page 211), shows where Scala may fit in with other languages in an
enterprise application.

An object is said to be immutable if you can?t change its contents once you create it.This eliminates the concerns of managing contention when multiple threads access the object. Java?s String is a great example of an immutable object.

[size=18][color=red]What about other languages on the JVM…Groovy, JRuby, Clojure ?[/color]
[/size]
Scala is by far the only prominent strongly typed language that provides functional style and great concurrency support. JRuby and Groovy are
dynamic languages. They are not functional and do not provide any more solutions for concurrency than Java does. Clojure, on the other
hand, is a hybrid functional language. It is dynamic in nature and so is not statically typed. Furthermore, its syntax is similar to Lisp, which is
not the easiest syntax to work with unless you are familiar with it.

If you are an experienced Java programmer and are battling with Java to implement multithreaded applications, you will find Scala to be very
useful. You can quite easily wrap your Java code into Scala?s actors to provide thread isolation. To communicate between the threads, you can
use Scala?s lightweight API to easily pass messages. Instead of launching threads and immediately limiting concurrency by synchronization,
you can use lock-free message passing to enjoy true concurrency.

If you value static typing and like to benefit from the support offered by the compiler, you will find that the static typing provided in Scala works
for you without standing in your way. You will enjoy typing without having to type as much code.If you are looking for a higher level of abstraction and highly expressive code, you’ll be attracted to Scala?s conciseness. You can get a lot more done with less code in Scala. You will also find the flexibility of Scala when it comes to operators and notations useful for creating domain specific languages.

Ficar no Empírico não vai iluminar ninguém aqui neste tópico. Precisamos de provas científicas. O que se pode fazer com scala, que não se pode fazer com java ou c++ ou pascal?

J

Mathemathic:
serathiuk:

Conhecer a linguagem tudo bem, até fiquei curioso em testar o ‘poder do Scala’. Mas falar que é a linguagem é excelente no ponto de matar outra é sacanagem.

Em nenhum momento disse matar, disse que você pode atuar em paralelo com as tecnologias reprojetando suas aplicações.

Mathemathic:

Se eu sou o médico, eu nunca irei testar um novo procedimento cirurgico sem ter 100% conhecimento sobre, sem tem uma boa experiência, vários casos de sucesso comprovados a longo prazo e sabendo que o procedimento atual ainda me atende com segurança e com qualidade.

Agora você mudou de papel para sair da adminstração do hospital e ir pra o laboratório testar, já não entende muito suas responsabilidades outra coisa os mentores de Scala construiram a tecnologia Java, isso já dá boa credibilidade de quem vem divulgando.

Duvido que alguém mexeria em num software bem feito em java, para utilizar scala. Java é fácil de manter.
Pode me passar fontes de projetos importantes que usam scala?

C

juliocbq:

Pode me passar fontes de projetos importantes que usam scala?

Essa eu respondo pelo Duran: Twitter
http://www.artima.com/scalazine/articles/twitter_on_scala.html

edit: outras ‘empresinhas’ que usam Scala
http://www.scala-lang.org/node/1658

J

clone_zealot:
juliocbq:

Pode me passar fontes de projetos importantes que usam scala?

Essa eu respondo pelo Duran: Twitter
http://www.artima.com/scalazine/articles/twitter_on_scala.html

edit: outras ‘empresinhas’ que usam Scala
http://www.scala-lang.org/node/1658


Outro fake?
Falar que twitter é projeto importante, no mínimo é brincadeira, não!?

Aqui, tudo que você utiliza no dia a dia…
http://qt.nokia.com/qt-in-use
http://worldwind.arc.nasa.gov/java/

V

O clone não é fake não. A gente fica meio paranóico com o duran com tantos usuários, mas enfim…

Acho que pela quantidade de usuários que o twitter tem, ele é importante sim. Mas eu notei que a maior parte das empresas citadas usa o scala em menor escala (hehehe, perdoem o trocadilho besta). Ou seja, a maioria como integração ou script para cálculo.

Nunca ouvi falar de uma aplicação de grande porte onde a linguagem principal fosse o scala.

J

O clone não é fake não. A gente fica meio paranóico com o duran com tantos usuários, mas enfim…

Acho que pela quantidade de usuários que o twitter tem, ele é importante sim. Mas eu notei que a maior parte das empresas citadas usa o scala em menor escala (hehehe, perdoem o trocadilho besta). Ou seja, a maioria como integração ou script para cálculo.

Nunca ouvi falar de uma aplicação de grande porte onde a linguagem principal fosse o scala.

Pensei que o clone fosse um fake…me desculpem. rsrsr.

O twitter não adiciona em nada para a sociedade na minha opinião.

M

É impressionante a sua visão de grandeza, quem projetou o twitter também projetou o Blogger serviço esse que o Google acabou comprando !!!
É lamentavel sua observação e pior o ViniGodoy, ficar sobre o muro de não saber onde ter suas reais convicções.

M

ViniGodoy:

Nunca ouvi falar de uma aplicação de grande porte onde a linguagem principal fosse o scala.

O Clone fez as observações corretas e diretas as perguntas do juliocbq, o problema agora é tratar o assunto com mais profissionalismo e menos amadorismos por parte de quem não quer explorar o assunto.

L

juliocbq:
clone_zealot:
juliocbq:

Pode me passar fontes de projetos importantes que usam scala?

Essa eu respondo pelo Duran: Twitter
http://www.artima.com/scalazine/articles/twitter_on_scala.html

edit: outras ‘empresinhas’ que usam Scala
http://www.scala-lang.org/node/1658


Outro fake?
Falar que twitter é projeto importante, no mínimo é brincadeira, não!?

Aqui, tudo que você utiliza no dia a dia…
http://qt.nokia.com/qt-in-use
http://worldwind.arc.nasa.gov/java/

Bom, vc provavelmente NUNCA vai fazer na vida um projeto do tamanho do Twitter, então falar que o Twitter não é importante só pode ser uma brincadeira SUA, e de muito mau gosto por sinal.

Você pode não achar o Twitter útil pra vc, aí é outros 500, mas mesmo assim se eu fosse vc revisava seus conceitos, pois tem gente muito importante, inclusive da nossa área, que faz muito bom uso dele, exemplo, Martin Fowler.

V

lavh:
Bom, vc provavelmente NUNCA vai fazer na vida um projeto do tamanho do Twitter, então falar que o Twitter não é importante só pode ser uma brincadeira SUA, e de muito mau gosto por sinal.

Você pode não achar o Twitter útil pra vc, aí é outros 500, mas mesmo assim se eu fosse vc revisava seus conceitos, pois tem gente muito importante, inclusive da nossa área, que faz muito bom uso dele, exemplo, Martin Fowler.

Mesmo que ele fosse completamente inútil (como o Orkut ultimamente tem sido), não é demérito as dimensões dele. Afinal, ele suporta postagens de milhões de pessoas, muitas delas simultâneas, muitas com disparo de SMS, e o serviço funciona muitíssimo bem.

Mas enfim, ignorando o ruído branco do Duran, ainda não vi um projeto que a linguagem principal seja o Scala. Alguém já viu? Eu gostaria muito de conhecer.

Talvez, claro, é porque linguagens como escala e LISP tem chamado a atenção recentemente. E projetos de grande porte não se façam da noite para o dia. Ou, talvez, é porque essas linguagens nem sequer se proponham a serem linguagens de base para uma aplicação inteirinha. Alguém saberia responder?

M

ViniGodoy:

Mesmo que ele fosse completamente inútil (como o Orkut ultimamente tem sido), não é demérito as dimensões dele. Afinal, ele suporta postagens de milhões de pessoas, muitas delas simultâneas, muitas com disparo de SMS, e o serviço funciona muitíssimo bem.

Nessa resposta temos coerencia e o reconhecimento onde Scala é a linguagem padrão, onde fora observado pelo o Clone, onde Ruby no projeto não foi uma linguagem considerada para back-end como Scala demonstrou com a VM, nem JRuby.


Mas enfim, ignorando o ruído branco do Duran, ainda não vi um projeto que a linguagem principal seja o Scala. Alguém já viu? Eu gostaria muito de conhecer.
Talvez, claro, é porque linguagens como escala e LISP tem chamado a atenção recentemente. E projetos de grande porte não se façam da noite para o dia. Ou, talvez, é porque essas linguagens nem sequer se proponham a serem linguagens de base para uma aplicação inteirinha. Alguém saberia responder?

Agora é uma questão de boa vontade ao reconhecimento de uma tecnologia que já se mostra superior nos seus feitos e meritos, mas vou buscar maiores informações sim, na certa os projetos atuais Scala é a bola da vez.

F

clone_zealot:
juliocbq:

Pode me passar fontes de projetos importantes que usam scala?

Essa eu respondo pelo Duran: Twitter
http://www.artima.com/scalazine/articles/twitter_on_scala.html

edit: outras ‘empresinhas’ que usam Scala
http://www.scala-lang.org/node/1658

http://www.scala-lang.org/node/1658
Site off-line

Our website is currently offline for scheduled maintenance, but will be back around 13:45 UTC. Thank you for your patience!

:shock: :shock: :shock: :shock: Scala tambem precisa de manutenção. Fato :twisted:

J

lavh:
juliocbq:
clone_zealot:
juliocbq:

Pode me passar fontes de projetos importantes que usam scala?

Essa eu respondo pelo Duran: Twitter
http://www.artima.com/scalazine/articles/twitter_on_scala.html

edit: outras ‘empresinhas’ que usam Scala
http://www.scala-lang.org/node/1658


Outro fake?
Falar que twitter é projeto importante, no mínimo é brincadeira, não!?

Aqui, tudo que você utiliza no dia a dia…
http://qt.nokia.com/qt-in-use
http://worldwind.arc.nasa.gov/java/

Bom, vc provavelmente NUNCA vai fazer na vida um projeto do tamanho do Twitter, então falar que o Twitter não é importante só pode ser uma brincadeira SUA, e de muito mau gosto por sinal.

Você pode não achar o Twitter útil pra vc, aí é outros 500, mas mesmo assim se eu fosse vc revisava seus conceitos, pois tem gente muito importante, inclusive da nossa área, que faz muito bom uso dele, exemplo, Martin Fowler.

Exitem projetos de suma importância do que mero lazer. O twitter na minha opinião, por se dizer mais uma vez é inútil.
E pode t5er certeza que o twitter não é um projeto complicado. Não há nada de computação nele.

Não vamos fazer guerra como o Duran…é somente minha opinião.

M

fredferrao:

Our website is currently offline for scheduled maintenance, but will be back around 13:45 UTC. Thank you for your patience!
:shock: :shock: :shock: :shock: Scala tambem precisa de manutenção. Fato :twisted:

Scala vai alcançar uma maturidade muito mais rápido, isso é fato só no olhar de closure não atindo pelo Java 7, isso é FATO !!!

M

ViniGodoy:

Mesmo que ele fosse completamente inútil (como o Orkut ultimamente tem sido), não é demérito as dimensões dele. Afinal, ele suporta postagens de milhões de pessoas, muitas delas simultâneas, muitas com disparo de SMS, e o serviço funciona muitíssimo bem.

Mas enfim, ignorando o ruído branco do Duran, ainda não vi um projeto que a linguagem principal seja o Scala. Alguém já viu? Eu gostaria muito de conhecer.

Talvez, claro, é porque linguagens como escala e LISP tem chamado a atenção recentemente. E projetos de grande porte não se façam da noite para o dia. Ou, talvez, é porque essas linguagens nem sequer se proponham a serem linguagens de base para uma aplicação inteirinha. Alguém saberia responder?

Então pra vc a linguagem base do twitter é aquela do site que manda 140 caracteres pela web?

Faça me o favor…

J

Mathemathic:
ViniGodoy:

Mesmo que ele fosse completamente inútil (como o Orkut ultimamente tem sido), não é demérito as dimensões dele. Afinal, ele suporta postagens de milhões de pessoas, muitas delas simultâneas, muitas com disparo de SMS, e o serviço funciona muitíssimo bem.

Nessa resposta temos coerencia e o reconhecimento onde Scala é a linguagem padrão, onde fora observado pelo o Clone, onde Ruby no projeto não foi uma linguagem considerada para back-end como Scala demonstrou com a VM, nem JRuby.


Mas enfim, ignorando o ruído branco do Duran, ainda não vi um projeto que a linguagem principal seja o Scala. Alguém já viu? Eu gostaria muito de conhecer.
Talvez, claro, é porque linguagens como escala e LISP tem chamado a atenção recentemente. E projetos de grande porte não se façam da noite para o dia. Ou, talvez, é porque essas linguagens nem sequer se proponham a serem linguagens de base para uma aplicação inteirinha. Alguém saberia responder?

Agora é uma questão de boa vontade ao reconhecimento de uma tecnologia que já se mostra superior nos seus feitos e meritos, mas vou buscar maiores informações sim, na certa os projetos atuais Scala é a bola da vez.

O Duran, numa boa, se você quer usar Scala em seus projetos, não hà problema nenhum, é apenas mais uma linguagem. Só não tenta impor suas idéias nas outras pessoas.

F

Mathemathic:
fredferrao:

Our website is currently offline for scheduled maintenance, but will be back around 13:45 UTC. Thank you for your patience!
:shock: :shock: :shock: :shock: Scala tambem precisa de manutenção. Fato :twisted:

Scala vai alcançar uma maturidade muito mais rápido, isso é fato só no olhar de closure não atindo pelo Java 7, isso é FATO !!!

Scala com tanta maturidade e o Site é feito em PHP usando Dupral :wink:

Scala maturidade mais rápido? Com que base? Aonde está o fato nisso? qual a evolução do scala no ultimo ano? Ou é so é mais maduro por causa das closures?

Java não foi criado para ter closures, isso é fato. Não existe um jeito simples de alterar uma linguagem que nunca teve o proposito de possuir essa funcionalidade, consequentemente a alteração tem que ser bem avaliada.

Consigo fazer a maioria das coisas sem closures. Closures não é bala de prata, não vai salvar sua vida. Se vc não consegue desenvolver sem Closures tbm Não consegue com ela.

Até agora o unico FATO visto, foi vc alegando que Scala é Scala por isso é melhor (e tem closures tbm).

J

Mathemathic:
fredferrao:

Our website is currently offline for scheduled maintenance, but will be back around 13:45 UTC. Thank you for your patience!
:shock: :shock: :shock: :shock: Scala tambem precisa de manutenção. Fato :twisted:

Scala vai alcançar uma maturidade muito mais rápido, isso é fato só no olhar de closure não atindo pelo Java 7, isso é FATO !!!

Se o java não adicionou closure foi por escolha da SUN Microsystems. Não por deficiência de linguagem. Além de que closure não é uma coisa essencial.

M

juliocbq:

O Duran, numa boa, se você quer usar Scala em seus projetos, não hà problema nenhum, é apenas mais uma
linguagem. Só não tenta impor suas idéias nas outras pessoas.

Eu disse outra coisa, estou aqui levantando um questionamento sobre Scala não estou fazendo imposição mas vou sim trazer aqui todas as informações possiveis e imagináveis sobre essa tendencia, e disso vocês não me vetar.

M

juliocbq:

Se o java não adicionou closure foi por escolha da SUN Microsystems. Não por deficiência de linguagem. Além de que closure não é uma coisa essencial.

opaaa!!!

  • Vai ter que provar seus arguementos sobre Closure.
J

Mathemathic:
juliocbq:

Se o java não adicionou closure foi por escolha da SUN Microsystems. Não por deficiência de linguagem. Além de que closure não é uma coisa essencial.

opaaa!!!

  • Vai ter que provar seus arguementos sobre Closure.

Então porque não prova os seus? Até agora te passei fontes de tudo aquilo que disse, na esperança que ao menos você lesse os artigos.

Se você segue tendências, nem deve ser considerado. Um profissional deve saber distinguir e selecionar o que é mais adequado para ele mesmo.

Prova para gente ae a superioridade da Scala, como você está pregando.

M

Sim , vou colocar minhas fontes e informações e o que já estou ajuntando pra continuar esse Post.

M

Dizer que Scala é um Java com closures ou que é um Ruby sem o Rails que deu certo na JVM é uma visão pessimista. Mas eu concordo com ela.

Essa questão de ter closures é pura besteira, ninguém faz nada com closures apenas. A linguagem precisa ser funcional para se adequar a nova geração de computadores multicore. O problema com Scala e outras linguagens funcionais (ou com closures) é que não tem como uma linguagem ser OO e ao mesmo tempo funcional o suficiente. A própria definição de objeto é imperativa, de agrupamento de função e dados mutáveis, enquanto programação funcional consiste na sua separação e maior predominancia de estado imutável. Portanto são conceitos totalmente diferentes e misturar os dois assim, na definição da linguagem, exige mecanismos que ainda precisam ser inventados para conciliar os dois paradigmas.

S

O Facebook é bem mais complexo que o twitter e tem um número bem maior de usuários e é desenvolvido em PHP, e isso que é dita por aí como uma linguagem de má qualidade para ‘gambiarrizadores’, apesar de não concordar que a linguagem seja ruim. Bem, não quero discutir PHP e nem nada. Só quero usar como o argumento que o sucesso do projeto depende mais do conhecimento e experiência sobre a tecnologia do que a quantidade de ‘features’ dela. Na época que começaram o Facebook, era com PHP4 se não me engano. E nessa versão, a orientação a objetos era deprimente. Ela só foi melhorada na versão 5.x(e closures só entrou recentemente na 5.3, mas nem fazia falta). Ou seja, a maior rede social do mundo em número de acessos e número de usuários usa uma linguagem que qualquer cientista da computação trataria como ultrapassada se comparadas com as mais novas. Mas para eles serve. E muito bem. E ninguém tá reclamando. Não conheço Scala, mas me parece ser uma boa linguagem sim, assim como Ruby, Java, Python e muitas outras. Cada uma tem seus méritos e deficiências. Nenhuma delas é perfeita.

M

Se vc pensa que todo o Facebook é feito em PHP aposto que se vc tivesse feito em Java estaria tudo dentro de um jar. :wink:

J

Eu não seria capaz de me julgar melhor que uma pessoa que usa fortran, basic ou cobol só porque utilizo uma linguagem recente. Todos sabemos que o poder do programador está na sua capacidade lógica e no seu raciocínio, e não em uma mera linguagem, que apenas serve para expressar isso.

E

Você quis dizer que Scala é superior a qualquer linguagem de programação ?

Poderia nos mostrar um exemplo de programa em Scala que você tenha feito, demonstrando toda a superioridade da linguagem ?

V

Verdade. E como outros exemplos dá para citar o Wordpress e o Joomla.

V

Aliás, complementando o tópico anterior. Esse papo de “linguagem é só ferramenta e podemos troca-la a cada projeto” é conversa pra boi dormir. Aliás, é outro argumento de vendedor de linguagens alternativas, que muitos tem comprado.

Não estou falando que devemos fechar os olhos para outras linguagens. De forma alguma. Mas não se pode trocar de linguagem o tempo todo, pois trocar de linguagem implica em:

a) Uma nova curva de aprendizado na nova linguagem, e em suas bibliotecas (esse é um custo que impactará em todos os membros da equipe);

b) Descobrir novos fornecedores de bibliotecas que sejam tão confiáveis quanto os da antiga (que solução vc usaria para persistência em scala? É tão garantido quanto o hibernate?)

c) Abrir mão do investimento  feito nas suas próprias libs internas, que resolvem diversos problemas diretamente relacionados com seu business.

Portanto, uma linguagem deve apresentar uma vantagem considerável para que seja trocada. Por exemplo, supondo que minha equipe seja proficiente em Java. Eu trocaria java por C++ se, e somente se, a aplicação exigisse tempo real, um baixo footprint ou integração pesada com hardware. Acho que seria muito difícil me convencer a sair do Java e ir para o C#, a menos talvez que exija mais interoperabilidade com a API do Windows.

Não estou falando de uma vantagem técnica, mas administrativa. E que deve ser levada em conta, pois representa um custo monstruoso, e não pode ser negligenciada. Como o colega demonstrou, mesmo uma linguagem mais simples, como o PHP, pode gerar resultados surpreendentes numa equipe com alto conhecimento técnico. E uma equipe assim fica muito difícil de se obter se você trocar de linguagem ou plataforma o tempo todo.

M

ViniGodoy:

a) Uma nova curva de aprendizado na nova linguagem, e em suas bibliotecas (esse é um custo que impactará em todos os membros da equipe);

Avanços representados pelas linguagens modernas farão com que elas sejam adotadas cada vez mais pelo mercado. A indústria ta se lixando pra sua curva de aprendizado. A demanda fará com que novos programadores atuem nesse novo paradigma enquanto “especialistas” Java passam a ser considerados os novos dinossauros.

ViniGodoy:

b) Descobrir novos fornecedores de bibliotecas que sejam tão confiáveis quanto os da antiga (que solução vc usaria para persistência em scala? É tão garantido quanto o hibernate?)
c) Abrir mão do investimento já feito nas suas próprias libs internas, que resolvem diversos problemas diretamente relacionados com seu business.

b e c não precisam nem ser respondidas. Pelo visto vc nunca usou uma linguagem diferente de Java na JVM, senão saberia que o que já existe em Java não precisa ser necessariamente substituido.

E porque vc acha que Scala precisa de Hibernate?

V

Como eu falei, não é necessário fechar os olhos para outras linguagens. O que sou contra é você assumir que a troca de uma linguagem para outra é uma operação sem custo. Obviamente, quando se troca de empresa, você terá que se adaptar ao mercado mas, como gerente de projetos dentro de uma mesma empresa, acho imprudente negligenciar os custos de treinamento/aprendizado.

Aliás, muitas tecnologias novas sequer irão se fixar no mercado. Por isso, ser um pouco conservador também pode poupar custos.

mochuara:

b e c não precisam nem ser respondidas. Pelo visto vc nunca usou uma linguagem diferente de Java na JVM, senão saberia que o que já existe em Java não precisa ser necessariamente substituido.

Obviamente que já usei outras tecnologias na JVM, aliás, sou um dos que posta sobre Groovy no fórum, pois já o usei muito a fundo. Inclusive, já abri até bug reports para o groovy, e apresentei correções para alguns erros da linguagem:
http://jira.codehaus.org/browse/GROOVY-2392

Mas nesse caso, você está mantendo a plataforma, que é a VM. Estou falando num contexto mais amplo e, pode ver no meu post anterior, eu falei em linguagem/plataforma, não só em linguagem.

Aliás, não entendo pq no GUJ agora o padrão está se tornando responder como o thiagosc responde. Você mesmo se inflamou no tópico dele onde ele pressupos que você nunca tinha usado uma linguagem de funcional. Então, por favor, vamos prossupor aqui que nós sabemos do que estamos falando.

Talvez o Scala não precise, até porque o Hibernate faz mapeamento objeto relacional, e scala nem sequer é OO, e sim funcional.

Mas eu estava falando do serviço de persistência, e isso uma aplicação scala irá exigir. O que eu quis dizer, simplesmente, é que haverá necessidade de APIs para resolver muitas vezes os mesmos problemas, e você não terá que descobrir que APIs são essas. Existe o custo de se atrelar a um fornecedor, e esse fornecedor precisa ser confiável, ou você ficará na mão em longo prazo. Novamente, é um problema não só técnico, mas também administrativo. Numa troca de paradigma, você ainda pode ser surpeendido pelo contrário: problemas que você não tinha no paradigma anterior, e que terá no novo, e aí você descobre que aquela linguagem não era realmente a panacéia.

Não precisa ir muito longe. Recentemente troquei do Java para o C#, duas tecnologias praticamente iguais. Entretanto, no C#, tive que descobrir que APIs usar para persistência, ou para inversão de controle. Sabia que existia o Spring e o Hibernate para C#, mas eles teriam a mesma confiabilidade? Usariam os recursos do C# com eficiência? Muitas versões para outras linguagens não são tão boas fora de seu ambiente original. E o que usar para gerar relatórios? Não adianta, trocou a tecnologia, novas curvas de aprendizado, novas descobertas de fornecedores, etc. E tudo isso é custo.

V

Só para ressaltar. Não estou dizendo que você deve fechar os olhos para outras linguagens/plataformas. Aliás, qualquer equipe de informática que queira se manter atualizada deve estar bem atento ao mercado, e experimentar tecnologias.

Mas acho que você deve mensurar bem se o ganho de produtividade é real, ou não. Se a tecnologia é realmente superior, ou se muito do que se fala dela é marketing.

Comece com um projeto piloto, pague a curva de aprendizado para um ou dois funcionários. Avalie se o desempenho dele foi realmente superior, obtenha feedback dele sobre os problemas encontrados na nova tecnologia. Veja se ela é realmente muito mais adequada para o tipo de problemas que você resolve. Só então faça a troca. Mas faça com base em dados concretos, não em achismos, modismos ou pq a revista “InfoQ” do mês disse que tem que ser assim.

A

Scala não é OO?

Existe até conceito de propriedade em scala

private var value: T = init

/** The getter function, defaults to identity. */
private var setter: T => T = identity[T]

/** The setter function, defaults to identity. */
private var getter: T => T = identity[T]

Não sou especialista em scala, mas pelo pouco que eu estudei tive a impressão da linguagem ser OO sim.

V

Tem razão. Pensei que ela fosse mais funcional do que OO, mas acho que me enganei. Mas isso não invalida todo resto da argumentação.

A

Com certeza não, concordo em tudo o que vc escreveu.

Parabéns

Acho que li todos os arquigos de C++ do seu site ponto V. Todo o conteudo é acima da média.

A

Já que eu entrei aqui vou dar a minha opinião, que é minha opinião IHMO opinão pessoal

Eu acho scala uma linguagem qualquer, se nada d+, sem nenhum atrativo. Mas uma entre muitas.

Me interesso muito mais por erlang, orientada a concorrencia, com hot swapping, propria para aplicações de tempo real.

Posso estar errado como eu já falei não sou especialista em scala, mas o pouco que vi achei scala carne de vaca.

S

Uma coisinha que achei estranha em Scala foram as “case classes”.

Ainda não consegui ver grande vantagens nela. Alguém já utilizou ? Foi realmente interessante ?

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

M

ViniGodoy:

Como eu falei, não é necessário fechar os olhos para outras linguagens. O que sou contra é você assumir que a troca de uma linguagem para outra é uma operação sem custo.

Fechar os olhos, ta maluco? Pelo contrário, quem esta começando tem que meter a cara nessas linguas mesmo porque é futuro. O futuro do programador Java é setores específicos onde OO vai prevalecer, como simulações, design de jogos, programar interfaces gráficas em JavaFX Script. Mas aplicações de regras de negócio, webservices, aplicações servidoras em geral, onde é preciso tirar proveito de programação funcional em hardware multicore aplicações escritas em JAva mesmo serão cada vez menos.

ViniGodoy:

Aliás, muitas tecnologias novas sequer irão se fixar no mercado. Por isso, ser um pouco conservador também pode poupar custos.

Seguir a manada pode ser bom pra quem esta estabelecido no mercado numa posição confortável. Para o resto não tenho certeza se há o mesmo “custo” que vc se refere. Essas novas linguagens nem são tão complexas para aprender quando comparadas com Java, muitas são bem mais simples até.

ViniGodoy:

Talvez o Scala não precise, até porque o Hibernate faz mapeamento objeto relacional, e scala nem sequer é OO, e sim funcional.

ViniGodoy:

Não precisa ir muito longe. Recentemente troquei do Java para o C#, duas tecnologias praticamente iguais. Entretanto, no C#, tive que descobrir que APIs usar para persistência, ou para inversão de controle. Sabia que existia o Spring e o Hibernate para C#, mas eles teriam a mesma confiabilidade? Usariam os recursos do C# com eficiência? Muitas versões para outras linguagens não são tão boas fora de seu ambiente original. E o que usar para gerar relatórios? Não adianta, trocou a tecnologia, novas curvas de aprendizado, novas descobertas de fornecedores, etc. E tudo isso é custo.

Trocar Java por C# vc nem saiu do lugar. Trocou uma linguagem pela copia da mesma.

M

ViniGodoy:
Só para ressaltar. Não estou dizendo que você deve fechar os olhos para outras linguagens/plataformas. Aliás, qualquer equipe de informática que queira se manter atualizada deve estar bem atento ao mercado, e experimentar tecnologias.

Mas acho que você deve mensurar bem se o ganho de produtividade é real, ou não. Se a tecnologia é realmente superior, ou se muito do que se fala dela é marketing.

Comece com um projeto piloto, pague a curva de aprendizado para um ou dois funcionários. Avalie se o desempenho dele foi realmente superior, obtenha feedback dele sobre os problemas encontrados na nova tecnologia. Veja se ela é realmente muito mais adequada para o tipo de problemas que você resolve. Só então faça a troca. Mas faça com base em dados concretos, não em achismos, modismos ou pq a revista “InfoQ” do mês disse que tem que ser assim.

Finalmente uma opinião sensata voltada aos empreendedores que frequentam o GUJ.

M

Ssalgado:
Uma coisinha que achei estranha em Scala foram as “case classes”.

Ainda não consegui ver grande vantagens nela. Alguém já utilizou ? Foi realmente interessante ?

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

Também achei a documentação complicada. Se Scala pretende ganhar mais adeptos precisa uma documentação mais em sintonia com a realidade dos usuários. Muitos termos e conceitos complexos pra um simples “tour” pela linguagem. Poderia ser mais objetiva.

V

mochuara:
ViniGodoy:

Como eu falei, não é necessário fechar os olhos para outras linguagens. O que sou contra é você assumir que a troca de uma linguagem para outra é uma operação sem custo.

Fechar os olhos, ta maluco?

Melhor você reler o meu quote. Em especial a palavra “não”, que dá um sentido de “negação”.

Estou falando da perspectiva de uma equipe, não de um único programador. Para um só programador, é fácil mudar de linguagem. Mas, sendo você um gerente de projetos, com uma equipe já estabelecida, você REALMENTE mandaria o seu time INTEIRO estudar tecnologias novas assim que elas surgissem?

Quando falta argumento técnico, é melhor partir para agressão, certo?

O que justifica ainda mais minha posição. Se para uma mudança simples esses problemas já existiram, o que dizer de uma mudança completa de paradigma? Os problemas estarão lá, e ainda mais agravados.

Criado 4 de janeiro de 2010
Ultima resposta 11 de jan. de 2010
Respostas 124
Participantes 25