Scala: Bringing Future Languages to the JVM

[quote=juliocbq]
…[/quote]

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:

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.

KKKKKKKKKKK…

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

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.

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?

[quote=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.[/quote]

Não tenho nada haver com isso.

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.

[quote=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)”.

[/quote]

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

Parabéns pela Criatividade

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

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.

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.

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

[quote=serathiuk][quote=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.
[/quote]

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.

[/quote]

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:

[quote=Lucas Emanuel][quote=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.
[/quote]

Qual tecnologia do momento de uns anos atrás foi substituido pelo Java??[/quote]

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.

[quote=serathiuk][quote=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.
[/quote]
Se toda empresa de software tivesse desenvolvimento orientado a hype, aí sim estariamos lascados. :wink: [/quote]

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.

[quote=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? [/quote]

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.

[quote]
Ps.: Tudo que estou falando é na visão de quem tá pagando.[/quote]
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.

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.

[quote=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.[/quote]
Em nenhum momento disse matar, disse que você pode atuar em paralelo com as tecnologias reprojetando suas aplicações.

[quote=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.[/quote]
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.

[quote=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.[/quote]
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.

Ei cuidado com a Lei de Ricbit pessoal!