Galera essa semana encontrei num site uma noticia que me deixou um pouco preocupado, segue link:
Lá está falando que a nova versão do java irá ter ponteiros, alguém sabe se isso é verdade :?:
Se for, :shock: …
flwsss
Galera essa semana encontrei num site uma noticia que me deixou um pouco preocupado, segue link:
Lá está falando que a nova versão do java irá ter ponteiros, alguém sabe se isso é verdade :?:
Se for, :shock: …
flwsss
Isso é primeiro de abril (postado no dia 17, mas continua sendo primeiro de abril).
Uma coisa que está sendo estudada para entrar no Java 8 (nem no 7, que não vai dar tempo) é "Closures". Lá podemos ter algo parecido com "delegates" do C# ou J#, com a seguinte sintaxe:
class Teste {
public static void main(String[] args) {
{int, int => int} funcao; // declarando uma referência para um método que recebe 2 ints e retorna 1 int
funcao = Math#max(int,int); // referenciando o método max da classe Math
int x = funcao.invoke (2, 3); // retorna o máximo de 2 e 3, que é 3
funcao = Math#min(int,int); // referenciando o método min da classe Math
x = funcao.invoke (2, 3); // retorna o mínimo de 2 e 3, que é 2
}
}
Para mais detalhes, vá para http://www.javac.info .
[quote=thingol]Isso é primeiro de abril (postado no dia 17, mas continua sendo primeiro de abril).
Uma coisa que está sendo estudada para entrar no Java 8 (nem no 7, que não vai dar tempo) é "Closures". Lá podemos ter algo parecido com "delegates" do C# ou J#, com a seguinte sintaxe:
class Teste {
public static void main(String[] args) {
{int, int => int} funcao; // declarando uma referência para um método que recebe 2 ints e retorna 1 int
funcao = Math#max(int,int); // referenciando o método max da classe Math
int x = funcao.invoke (2, 3); // retorna o máximo de 2 e 3, que é 3
funcao = Math#min(int,int); // referenciando o método min da classe Math
x = funcao.invoke (2, 3); // retorna o mínimo de 2 e 3, que é 2
}
}
Para mais detalhes, vá para http://www.javac.info .
[/quote]
Closures acho que é algo legal, mas o problema é que há uma sintaxe horrorosa (too much synthatic sugar) e isso virou modinha que agora eles querem fazer tudo com closures. Ou seja, descobriram que podiam ter um martelo e agora estão pensando que tudo pode ser um prego.
Então, sou a favor de colocá-los na lingagem, mas não da forma como estão fazendo.
Se Java tivesse ponteiros eu me suicidava :lol:
ponteiros dão muito poder, mais dão muita dor de cabeça!!!
[quote=thingol]Isso é primeiro de abril (postado no dia 17, mas continua sendo primeiro de abril).
Uma coisa que está sendo estudada para entrar no Java 8 (nem no 7, que não vai dar tempo) é "Closures". Lá podemos ter algo parecido com "delegates" do C# ou J#, com a seguinte sintaxe:
class Teste {
public static void main(String[] args) {
{int, int => int} funcao; // declarando uma referência para um método que recebe 2 ints e retorna 1 int
funcao = Math#max(int,int); // referenciando o método max da classe Math
int x = funcao.invoke (2, 3); // retorna o máximo de 2 e 3, que é 3
funcao = Math#min(int,int); // referenciando o método min da classe Math
x = funcao.invoke (2, 3); // retorna o mínimo de 2 e 3, que é 2
}
}
Para mais detalhes, vá para http://www.javac.info .
[/quote]
“Closures” já existem em C#, não existe? Isso em Java vai ficar muito interessante.
Closures (e mais outras N coisas interessantes) estão disponíveis no C# 3.0 (Visual Studio 2008, requer .NET Framework 3.5 para rodar).
Realmente o C# me impressiona cada vez mais, principalmente se for usado para 3d, coisa que eu não consegui fazer com muita facilidade em java
[quote=FilhoDoRei]Galera essa semana encontrei num site uma noticia que me deixou um pouco preocupado, segue link:
Lá está falando que a nova versão do java irá ter ponteiros, alguém sabe se isso é verdade :?:
[/quote]
Não só não é verdade como é uma descarada mentira.
+1 A sintaxe é realmente horrivel (mas a de propriedades é pior) e essa coisa de forçar o uso em todo o lugar é realmente absurdo.
+1 Suicidar não, mas que Java passaria a ser uma @#@#$@#, sim. Afinal isso é ir contra tudo o que Java representa ( portabilidade, inepencia, segurança , etc). ( Não que eu acredite que algum dia isso aconteça- afinal a sun não é a microsoft - mas seria realmente uma pena se e quando acontecer )
Eu não posso dizer por experiência própria, mas vejo meus colegas trabalhando em cima de C# com coisas em 3D e eu tenho que falar: é arrebatador. Em Java eu não vi muita coisa…
O C# tem ponteiros, mas seu uso é muito restrito.
A primeira coisa que você tem de fazer é isolar seu código dentro de uma seção “unsafe”, e ainda por cima esse tal código deve ficar em um assembly (.DLL, mais ou menos como se fosse um .jar do Java) que aceita código “unsafe”.
Ou seja, só é usado em casos muito especiais. (É como se esse pedaço do seu código usando ponteiros ficasse com uma “doença contagiosa” e tivesse de ficar isolado.) O jeito de programação padrão do C# é idêntico ao Java, porque, como no Java, não é preciso usar ponteiros em 99,995% do tempo.
Eu que postei isso no primeiro de abril.
Volta e meia alguem me pergunta se é sério (ou critica a sun sem olhar a data do post).
Dificilmente alguém lê a data dos posts :lol:
Foi erro meu, não tinha visto a data do site.
Mas gerou uma certa preocupação, por isso postei sobre o assunto!
Valeu pelas respostas!
flwsss
[quote=thingol]O C# tem ponteiros, mas seu uso é muito restrito.
A primeira coisa que você tem de fazer é isolar seu código dentro de uma seção “unsafe”, e ainda por cima esse tal código deve ficar em um assembly (.DLL, mais ou menos como se fosse um .jar do Java) que aceita código “unsafe”.
Ou seja, só é usado em casos muito especiais. (É como se esse pedaço do seu código usando ponteiros ficasse com uma “doença contagiosa” e tivesse de ficar isolado.) O jeito de programação padrão do C# é idêntico ao Java, porque, como no Java, não é preciso usar ponteiros em 99,995% do tempo.
[/quote]
No java tem uma coisa parecida: JNI. Você trabalha direto em C/C++ e utiliza o código nativo através de biblioteca (ddl-windows/so-linux). O uso desse código no java é através de métodos, como se fosse uma chamada a um método Java.
Envim, uma Gambiarra padronizada pelo JCP
Já trabalhei com JNI e sinceramente, acho um saco! Mais que muita coisa legal podeser feita com JNI, pode
Ponteiros em java seria como regredir alguns anos.
Por que vocês acham Closures um recurso tão interessante assim?
Acho que vai ser um recurso que poucos usarão e quando um programador menos informador ver, vai re-escrever o codigo.
Eu acho que o programador Java não iria reescrever o código se houvesse em Java algo parecido com o LINQ, que facilita horrores a manipulação de dados em memória e em banco de dados.
Uma vez alguém me perguntou aqui como é que se fazia para totalizar e agrupar certas coisas que ele tinha em um array de objetos. A solução com LINQ era bastante simples (acho que dava 2 linhas), e lembrava um pouco SQL. Se você for fazer isso com “for” e outras coisas, vai ocorrer duas coisas:
[quote=thingol]Eu acho que o programador Java não iria reescrever o código se houvesse em Java algo parecido com o LINQ, que facilita horrores a manipulação de dados em memória e em banco de dados.
Uma vez alguém me perguntou aqui como é que se fazia para totalizar e agrupar certas coisas que ele tinha em um array de objetos. A solução com LINQ era bastante simples (acho que dava 2 linhas), e lembrava um pouco SQL. Se você for fazer isso com “for” e outras coisas, vai ocorrer duas coisas:
thingol, o que seria esse tal de LINQ?
flws
[quote=FilhoDoRei][quote=thingol]Eu acho que o programador Java não iria reescrever o código se houvesse em Java algo parecido com o LINQ, que facilita horrores a manipulação de dados em memória e em banco de dados.
Uma vez alguém me perguntou aqui como é que se fazia para totalizar e agrupar certas coisas que ele tinha em um array de objetos. A solução com LINQ era bastante simples (acho que dava 2 linhas), e lembrava um pouco SQL. Se você for fazer isso com “for” e outras coisas, vai ocorrer duas coisas:
thingol, o que seria esse tal de LINQ?
flws[/quote]
http://msdn.microsoft.com/en-us/netframework/aa904594.aspx
http://www.macoratti.net/07/12/net_linq.htm
[quote=thingol]Isso é primeiro de abril (postado no dia 17, mas continua sendo primeiro de abril).
Uma coisa que está sendo estudada para entrar no Java 8 (nem no 7, que não vai dar tempo) é "Closures". Lá podemos ter algo parecido com "delegates" do C# ou J#, com a seguinte sintaxe:
class Teste {
public static void main(String[] args) {
{int, int => int} funcao; // declarando uma referência para um método que recebe 2 ints e retorna 1 int
funcao = Math#max(int,int); // referenciando o método max da classe Math
int x = funcao.invoke (2, 3); // retorna o máximo de 2 e 3, que é 3
funcao = Math#min(int,int); // referenciando o método min da classe Math
x = funcao.invoke (2, 3); // retorna o mínimo de 2 e 3, que é 2
}
}
Para mais detalhes, vá para http://www.javac.info .
[/quote]
Não sei se entendi direito este papo de closures, mas o que o código acima faz mais do que o código abaixo?
int x = 0;
x = Math.max(2,3);
x = Math.min(2,3);
closures ( cercas) singifica básicamente que vc pode passar blocos de codigo como se fossem objetos.
Isso é util porque vc pode enviar código para dentro de outros objetos.
Isso tornas as coisas mais flexiveis e dinamicas. Mas tb mais complexas de ler. Especialmente porque a notação de closures
tente a ser muito abstrata (ou seja, não uma interface nem nada … é algo definido na hora )