C++ ou Java para Jogos, por que?

135 respostas
L

Pessoal,

Ouço muito dizer que C++ é melhor para programar jogos, porem o Java tem API 2D e 3D.

Qual é melhor para Jogo e Por que?

135 Respostas

fabiozoroastro

Eu acho que com certeza você quer entrar nesse site: http://www.pontov.com.br

:wink:

Até mais.

renamed

Eu vi um trabalho de faculdade de uns colegas meus que disseram que o Super Nintendo foi desenvolvido em C++ .

Quando eu comecei em Java (2007) eu ouvi muito que Java não era bom pra aplicações em tempo real (como jogos) por causa da máquina virtual que, teoricamente, era mais lenta que um executável…

Mas eu ouvi uns colegas aqui do forum falando que a máquina virtual Java já está conseguindo ser tao rapida qnt programas escritos em C++, Delphi, VB 6 etc… só não sei se é totalmente verdade!

Naruffy

Eu venho estudo programação de jogos e também percebo isso, todo mundo dizendo que C++ é melhor, porém eu desenvolvo meus jogos em java e acho muito bom, não tanto material QUANTO existe para C++, mas o java desempenha muito bem o papel na criação de jogos.

[]s

kicolobo

C++ te da um controle maior sobre a máquina, esta é uma das razões pelas quais é mais adotado.

Mas isto não quer dizer que Java seja lento pra desenvoler jogos. Da uma olhada nisto: http://bytonic.de/html/jake2.html
É o Quake 2 implementado em Java (eu já testei, e funciona muito bem).

peczenyj

Aproveitando, alguem tem acompanhado o C++0x?

C

A maior (e mega) vantagem do C++ é o suporte a bibliotecas de terceiros.
OpenGL, Directx, OpenCV, Cimg, só para citar exemplos que eu lembro agora…

O dia que existirem equivalentes em Java, dai não vejo porque ignorar completamente o Java para jogos.

Ahhh, para jogos 2D simples, Java (com as atuais bibliotecas) da muito bem conta do recado.

pablosaraiva

Alguém sabe se tem como você mandar instruções pra GPU com o Java?

(É uma pergunta mesmo, não sei).

J

O crítico de escolherem c++ para criarem jogos, é que o código gerado pelo compilador é muito otimizado para uma plataforma específica, e tudo que se faz em assembly se faz com c++ ou c, de maneira infinitamente mais fácil, além da performance ser praticamente a mesma.

As apis java para 3d ou para jogos, na verdade são mapeamentos para bibliotecas escritas em c++, normalmente opengl ou directx, como a jmonkey, que usa jogl(mapeamento opengl), ou java3d, que usa directx ou opengl.
Na verdade, uma máquina está rodando código c++ quando roda um jogo java, que usa um desses mapeamentos. Por isso é tão rápido quanto c++.

O forte do java é a praticidade de codificação. Se procurar performance, terá que usar um compilador de c++ ou de c.

J

pablosaraiva:
Alguém sabe se tem como você mandar instruções pra GPU com o Java?

(É uma pergunta mesmo, não sei).

faz em c++ ou assembly, e usa jni.

GabrielCardelli

Mano…

runescape.com.br (java foda! nunca vi = )

Naruffy

GabrielCardelli:
Mano…

runescape.com.br (java foda! nunca vi = )

Verdade, runescape é feito em java, apesar de muitos criticarem esse jogo eu gosto bastante.

[]s

J

qualquer linguagem que tenha uma biblioteca gráfica pode ser usada para jogos. Mas em se falando de linguagens que geram pseudo código, normalmente essas bibliotecas serão mapeamentos para uma em c++ com opengl ou directx.

ViniGodoy

Em especial nesse artigo, que tem muitas comparações entre o Java e o C++.

Na minha opinião:
Celulares? Java, Objective-C (iPhone)
Browser? Flash
Quer entrar na indústria de games hardcore? C++
Quer fazer jogos hardcore por hobby, só pq vc curte jogos? Java ou C#
Quer só estudar as tecnologias da área de jogos? Java ou C#

Outro jogo quase integralmente feito em Java é o brasileírissimo taikodom:
http://www.taikodom.com.br

Não entendi o seu “porém o Java tem API 2D e 3D”. O C++ tem dezenas de APIs 2D, e as principais APIs 3D do mercado.

M

Lucas Emanuel:
Pessoal,

Ouço muito dizer que C++ é melhor para programar jogos, porem o Java tem API 2D e 3D.

Qual é melhor para Jogo e Por que?

Voce quer programar pra que? PCs? Celulares? Consoles? George Foreman grill?

Mencionar a plataforma é fundamental porque é ela quem decide a linguagem que vai usar. Celulares por exemplo estariamos falando do iphone, neste caso sua unica opção seria Objective-C/C++.

RodyBr

Concordo com o mochuara. E a coisa pode piorar com a formação dos mundos Iphone X Android X Maemo no mundo mobile.
Regra geral o velho C/C++ atender a maior parte do mercado de desenvolvimento de jogos. Sem falar da linguagem Lua que está ganhando espaço neste ramo.

ViniGodoy wrote:
Em especial nesse artigo, que tem muitas comparações entre o Java e o C++.

Tem mais este texto do ViniGodoy que pode te ajudar.

valeu :wink:

Andre_Brito

Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).

M

Andre Brito:
Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).

Mesmo as plataformas que usam Java acabam usando linguagem de baixo nível para comunicar com o dispositivo de video, mesmo que o programador não fique sabendo. Portanto a escolha da linguagem Java não influencia muito na questão da performance de execução uma vez que, de longe, o principal fator que afeta performance nos jogos é exatamente a questão da renderização dos elementos e não a atualização da lógica do jogo em si que continua sendo feito em Java.

M

Andre Brito:
Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).

Isso é subjetivo. Posso achar seu jogo muito bem implementado porém fraco e o do seus amigos um ótimo jogo e nem por isso Java vai ser melhor que C++.

Para comparar são necessários fatos não opiniões que envolvem gosto.

J

mochuara:
Andre Brito:
Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).

Mesmo as plataformas que usam Java acabam usando linguagem de baixo nível para comunicar com o dispositivo de video, mesmo que o programador não fique sabendo. Portanto a escolha da linguagem Java não influencia muito na questão da performance de execução uma vez que, de longe, o principal fator que afeta performance nos jogos é exatamente a questão da renderização dos elementos e não a atualização da lógica do jogo em si que continua sendo feito em Java.

Sim, a performance será praticamente a mesma, por usar bibliotecas que são nativas. O fator lógica e algoritmos acaba influenciando.

ViniGodoy

O mais provável é que tenham deixados gargalos, especialmente na placa de vídeo. A maior parte do processamento de um jogo 3D hoje fica por conta do hardware de vídeo. Já vi jogos impressionantes feitos em PHP, uma linguagem notoriamente lenta. A maior parte das linguagens de script também não são lá super velozes, e tem se adaptado bem aos jogos.

J

Andre Brito:
Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).

c# pode até funcionar melhor com directx, porque são produtos da microsoft. Mas no final, directx é nativo, e c# cai na mesma classe do java.

L

Falando em scripts,

tem um RPG feito em Javascript.

http://www.smokymonkeys.com/triglav/

maior_abandonado

clone_zealot:
A maior (e mega) vantagem do C++ é o suporte a bibliotecas de terceiros.
OpenGL, Directx, OpenCV, Cimg, só para citar exemplos que eu lembro agora…

O dia que existirem equivalentes em Java, dai não vejo porque ignorar completamente o Java para jogos.

Ahhh, para jogos 2D simples, Java (com as atuais bibliotecas) da muito bem conta do recado.

eu nunca dei uma pesquisada sobre as outras que você falou, mas ao menos quanto a open gl, tem a JOGL, o equivalente em java…

eu penso em futuramente começar a desenvolver jogos por hobby, só por causa disso ainda não comecei a dar umas olhadas em c++… no site da jogl tem uns joguinhos interessantes la… você baixa um java web start, ai ele baixa o jogo e você começa a jogar…

J

maior_abandonado:
clone_zealot:
A maior (e mega) vantagem do C++ é o suporte a bibliotecas de terceiros.
OpenGL, Directx, OpenCV, Cimg, só para citar exemplos que eu lembro agora…

O dia que existirem equivalentes em Java, dai não vejo porque ignorar completamente o Java para jogos.

Ahhh, para jogos 2D simples, Java (com as atuais bibliotecas) da muito bem conta do recado.

eu nunca dei uma pesquisada sobre as outras que você falou, mas ao menos quanto a open gl, tem a JOGL, o equivalente em java…

eu penso em futuramente começar a desenvolver jogos por hobby, só por causa disso ainda não comecei a dar umas olhadas em c++… no site da jogl tem uns joguinhos interessantes la… você baixa um java web start, ai ele baixa o jogo e você começa a jogar…

JOGL é um mapeamento da opengl para java. Você estará usando opengl da mesma maneira.

https://jogl.dev.java.net/

M

juliocbq:
mochuara:
Andre Brito:
Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).

Mesmo as plataformas que usam Java acabam usando linguagem de baixo nível para comunicar com o dispositivo de video, mesmo que o programador não fique sabendo. Portanto a escolha da linguagem Java não influencia muito na questão da performance de execução uma vez que, de longe, o principal fator que afeta performance nos jogos é exatamente a questão da renderização dos elementos e não a atualização da lógica do jogo em si que continua sendo feito em Java.

Sim, a performance será praticamente a mesma, por usar bibliotecas que são nativas. O fator lógica e algoritmos acaba influenciando.

Isso mesmo, bibliotecas nativas era o que eu queria dizer. :slight_smile:

cs.santos0

eu trabalho mais com as ferramentas gráficas, como maya, 3d max, etc…

mas ja trabalhei com a API JOGL que é um “binding” do OpenGL para java e gostei mto, pra quem vem do java e quer aprender opengl com mais facilidade o JOGL é bem bacana…

mas se for o caso de querer fazer um jogo mais complexo, use c ou C++ para ter mais controle do hardware…

fica ai minha opinião
abraços

ViniGodoy

Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.

cs.santos0

ViniGodoy:
Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.

exatamente…por isso que frisei que o jogl faz um binding e não é a msm coisa que estar usando opengl como foi dito ai em cima…existem algumas diferenças entre elas…

neofito

ViniGodoy:
Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?

C

Vc já viu o tamanho da API do DirectX?
Cara, só fazer o binding já é um trabalho hercúleo…

ViniGodoy

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.

J

neófito:
ViniGodoy:
Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?

Então, o mapeamento que estamos dizendo seria o jni para as bibliotecas nativas.

é possível sim…mas o directx possui dxinput, direct3d, directsound, directshow e mais libs de baixo nível. Tem trabalho para uns 2 anos ae.

Directshow já tem mapeamento e é o melhor que já vi do gênero.

http://www.humatic.de/htools/dsj.htm

neofito

clone_zealot:
neófito:

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?

Vc já viu o tamanho da API do DirectX?
Cara, só fazer o binding já é um trabalho hercúleo…

Certo, mas com JNA se tem bem menos trabalho do que com JNI. E pode-se mapear apenas o que se vai usar. Claro que o JNA é mais lento do que o JNI.

Estou trabalhando em um projeto que tem uma parte em C e outra em Java, e estou usando o JNA. Sinceramente estou pasmo com a facilidade dele, consegui até fazer um callback em java e passar para o C!

neofito

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?

kicolobo

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?

Conheço dois:

Thinking in C++ (muito bacana)

e o dos Deitel

C++ Como Programar

(aliás, é incrível como todos os livros dos Deitel são basicamente o mesmo :slight_smile: )

pablosaraiva

Sempre que vejo o kicolobo eu leio kibeloco.

J

neófito:
clone_zealot:
neófito:

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?

Vc já viu o tamanho da API do DirectX?
Cara, só fazer o binding já é um trabalho hercúleo…

Certo, mas com JNA se tem bem menos trabalho do que com JNI. E pode-se mapear apenas o que se vai usar. Claro que o JNA é mais lento do que o JNI.

Estou trabalhando em um projeto que tem uma parte em C e outra em Java, e estou usando o JNA. Sinceramente estou pasmo com a facilidade dele, consegui até fazer um callback em java e passar para o C!

O JNA segue mais ou menos a idéia do c#. Mas se não me engano vão criar um pinvoke pro java7. Ae vai ficar bom de usar recurso nativo.

fredferrao

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?

Conheço dois:

Thinking in C++ (muito bacana)

e o dos Deitel

C++ Como Programar

(aliás, é incrível como todos os livros dos Deitel são basicamente o mesmo :slight_smile: )

O mesmo elevador?? :lol: :lol:

Comprei o C++ como programar, a uns 3 ou 4 anos até hoje nao li uma linha :? Li apenas o Java como programar que comprei junto na época. Mas eae? É uma boa fonte para se iniciar o mundo C++? O de java eu gostei muito dos Deitel.

kicolobo

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?

Conheço dois:

Thinking in C++ (muito bacana)

e o dos Deitel

C++ Como Programar

(aliás, é incrível como todos os livros dos Deitel são basicamente o mesmo :slight_smile: )

O mesmo elevador?? :lol: :lol:

Comprei o C++ como programar, a uns 3 ou 4 anos até hoje nao li uma linha :? Li apenas o Java como programar que comprei junto na época. Mas eae? É uma boa fonte para se iniciar o mundo C++? O de java eu gostei muito dos Deitel.

O mesmíssimo elevador! :lol:

Eu acho um livro excelente. MUITO bom mesmo pra quem quiser aprender, assim como o Java Como Programar.

fredferrao

kicolobo:

O mesmíssimo elevador! :lol:

Eu acho um livro excelente. MUITO bom mesmo pra quem quiser aprender, assim como o Java Como Programar.

Blz, eu gostei muito do Java como programar, explica cada detalhe, tem varios exercicios, excelente livro, agora é criar coragem pra ler o C++ e ver se aquele elevador sobe ou nao sobe :lol:

ViniGodoy

No meu site você encontra o RoadMap C++ com dicas de livros desde o básico até o avançado. Sugestão: lá tem o link para o e-book do André Bueno, totalmente gratuito, e de excelente qualidade.

O livro do Stroustrup era tão difícil, que depois que ele virou professor ele percebeu a gafe, e decidiu escrever um novo livro. Se quiser pegar o dele, sugiro que comece por esse aqui: http://www2.research.att.com/~bs/programming.html

Pelo menos nele, os exemplos não serão com trechos de código de analisadores léxicos e compiladores. Fora que ele tem uma cobertura bem melhor da STL e das novas práticas envolvendo C++.

kicolobo

No meu site você encontra o RoadMap C++ com dicas de livros desde o básico até o avançado. Sugestão: lá tem o link para o e-book do André Bueno, totalmente gratuito, e de excelente qualidade.

O livro do Stroustrup era tão difícil, que depois que ele virou professor ele percebeu a gafe, e decidiu escrever um novo livro. Se quiser pegar o dele, sugiro que comece por esse aqui: http://www2.research.att.com/~bs/programming.html

Pelo menos nele, os exemplos não serão com trechos de código de analisadores léxicos e compiladores. Fora que ele tem uma cobertura bem melhor da STL e das novas práticas envolvendo C++.

Eu lembro de ter lido o livro do Stroustrup e não achei tão difícil assim.

Agora, ele tem um OUTRO livro, este sim fascinante: “The Design and Evolution of C++”
Nele é descrito como a linguagem C++ foi criada, e porque alguns de seus aspectos são do modo como estão hoje.
É um dos livros mais fascinantes que já li e, numa boa? 90% dos criticismos que já vi sobre C++ são anulados após a leitura deste livro.
Recomendo totalmente, mas infelizmente é bem difícil de ser encontrado.

J

No meu site você encontra o RoadMap C++ com dicas de livros desde o básico até o avançado. Sugestão: lá tem o link para o e-book do André Bueno, totalmente gratuito, e de excelente qualidade.

O livro do Stroustrup era tão difícil, que depois que ele virou professor ele percebeu a gafe, e decidiu escrever um novo livro. Se quiser pegar o dele, sugiro que comece por esse aqui: http://www2.research.att.com/~bs/programming.html

Pelo menos nele, os exemplos não serão com trechos de código de analisadores léxicos e compiladores. Fora que ele tem uma cobertura bem melhor da STL e das novas práticas envolvendo C++.

Eu lembro de ter lido o livro do Stroustrup e não achei tão difícil assim.

Agora, ele tem um OUTRO livro, este sim fascinante: “The Design and Evolution of C++”
Nele é descrito como a linguagem C++ foi criada, e porque alguns de seus aspectos são do modo como estão hoje.
É um dos livros mais fascinantes que já li e, numa boa? 90% dos criticismos que já vi sobre C++ são anulados após a leitura deste livro.
Recomendo totalmente, mas infelizmente é bem difícil de ser encontrado.
Não conheço esse livro. Mas vou procurar por ele.

O “Principles and Practice Using C++” é um livro muito bom, apesar de ser de difícil compreenção, como o vini falou. Ele explica praticamente tudo que a linguagem é capaz de fazer, com exemplos.

ViniGodoy

Eu ressalto ainda a importância de se pegar livros de boas práticas com C++, como o Effective C++ ou o Exceptional C++.

O C++ tem algumas características, que o torna diferente do Java e do C#:
“C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly”

Ou seja, a linguagem é muito poderosa, mas se você não tomar muito cuidado, pode acabar se complicando. As linguagens modernas tentam evitar o erro dos programadores ao máximo, mesmo que isso custe a eles abrir mão de certos recursos.

Com o C++ é ao contrário. Se um recurso pode ter certa utilidade, ele vai estar lá, mesmo que ele seja extremamente perigoso. Você é o especialista, então, é você quem manda.

Exemplos disso no Java é a ausência de sobrecarga de operadores, ou a possibilidade de trabalhar com memória de maneira não-gerenciada, ou uma API que facilite o uso do JNI. No C++, podemos citar a possibilidade de manipular ponteiros diretamente ou de sobrecarregar o new e o delete para escrever, você mesmo, seu próprio memory manager.

O segundo “problema” é também esse aqui:
# C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C

Ou seja. Por padrão, C++ é compativel com C. Em muitos aspectos, isso é ótimo. Você pode usar livremente bibliotecas do C no C++, como a excelente SDL, ou o próprio DirectX e OpenGL. Entretanto, isso leva a uma desvantagem séria: Muitos recursos estão presentes na linguagem só para manter a compatibilidade com C, não porque seria recomendável utiliza-los. E isso também dá margem a um programador C chegar cheio de vícios no C++, e aplica-los totalmente (como o uso de macros no lugar de funções inline, por exemplo, ou passar argumentos através de ponteiros no lugar de referências const).

Por fim, o último ponto:
C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming);

Se no Java, quando você tenta misturar 2 paradigmas (o reflexivo e o OO) você já se complica todo, extrapole isso para o C++, que implementa 3 paradigmas: procedural, orientado a objetos e metaprogramação. É importante também ressaltar que o último paradigma é o responsável pela maior parte da evolução do C++ nos últimos anos.

Os livros de boas práticas também mostram que a maior parte da evolução do C++ está nas suas libs, e não necessariamente na linguagem. Hoje, não se fala em criar novos programas em C++ sem usar, por exemplo, os Smart Pointers. E eles praticamente implementam um garbage collector em C++, o que te livra de centenas de dores de cabeça relacionadas a ponteiros. Graças a metaprogramação, evoluções nas bibliotecas do C++ também se aproximam muito de evoluções na própria linguagem. Exemplos disso são as lambda functions da boost, ou o próprio boost for…each. Sem falar claro, nas APIs da boost e STL, que contém uma série de classes que quem costuma falar mal do C++ geralmente ignora solenemente.

O roadmap cobre livros que falam de todos esses tópicos. Após estuda-los você geralmente tem uma vida mais tranquila e feliz com o C++. Muitos dos problemas, especialmente os relacionados a ponteiros, simplesmente desaparecem. Reforçam-se conceitos modernos da linguagem, como constness ou RAII, e tem-se acesso a várias bibliotecas do C++, que facilitam muito o desenvolvimento.

L

ViniGodoy:
Eu ressalto ainda a importância de se pegar livros de boas práticas com C++, como o Effective C++ ou o Exceptional C++.

O C++ tem algumas características, que o torna diferente do Java e do C#:
“C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly”

Ou seja, a linguagem é muito poderosa, mas se você não tomar muito cuidado, pode acabar se complicando. As linguagens modernas tentam evitar o erro dos programadores ao máximo, mesmo que isso custe a eles abrir mão de certos recursos.

Com o C++ é ao contrário. Se um recurso pode ter certa utilidade, ele vai estar lá, mesmo que ele seja extremamente perigoso. Você é o especialista, então, é você quem manda.

Exemplos disso no Java é a ausência de sobrecarga de operadores, ou a possibilidade de trabalhar com memória de maneira não-gerenciada, ou uma API que facilite o uso do JNI. No C++, podemos citar a possibilidade de manipular ponteiros diretamente ou de sobrecarregar o new e o delete para escrever, você mesmo, seu próprio memory manager.

O segundo “problema” é também esse aqui:
# C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C

Ou seja. Por padrão, C++ é compativel com C. Em muitos aspectos, isso é ótimo. Você pode usar livremente bibliotecas do C no C++, como a excelente SDL, ou o próprio DirectX e OpenGL. Entretanto, isso leva a uma desvantagem séria: Muitos recursos estão presentes na linguagem só para manter a compatibilidade com C, não porque seria recomendável utiliza-los. E isso também dá margem a um programador C chegar cheio de vícios no C++, e aplica-los totalmente (como o uso de macros no lugar de funções inline, por exemplo, ou passar argumentos através de ponteiros no lugar de referências const).

Por fim, o último ponto:
C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming);

Se no Java, quando você tenta misturar 2 paradigmas (o reflexivo e o OO) você já se complica todo, extrapole isso para o C++, que implementa 3 paradigmas: procedural, orientado a objetos e metaprogramação. É importante também ressaltar que o último paradigma é o responsável pela maior parte da evolução do C++ nos últimos anos.

Os livros de boas práticas também mostram que a maior parte da evolução do C++ está nas suas libs, e não necessariamente na linguagem. Hoje, não se fala em criar novos programas em C++ sem usar, por exemplo, os Smart Pointers. E eles praticamente implementam um garbage collector em C++, o que te livra de centenas de dores de cabeça relacionadas a ponteiros. Graças a metaprogramação, evoluções nas bibliotecas do C++ também se aproximam muito de evoluções na própria linguagem. Exemplos disso são as lambda functions da boost, ou o próprio boost for…each. Sem falar claro, nas APIs da boost e STL, que contém uma série de classes que quem costuma falar mal do C++ geralmente ignora solenemente.

O roadmap cobre livros que falam de todos esses tópicos. Após estuda-los você geralmente tem uma vida mais tranquila e feliz com o C++. Muitos dos problemas, especialmente os relacionados a ponteiros, simplesmente desaparecem. Reforçam-se conceitos modernos da linguagem, como constness ou RAII, e tem-se acesso a várias bibliotecas do C++, que facilitam muito o desenvolvimento.

Vini,

você aprendeu C++ somente lendo e praticando ou fez algum curso específico?

J

Normalmente a maioria do pessoal que aprendeu c ou c++, aprendeu com livros e usando sistemas unix, que é o meu caso. Na minha época de faculdade, os algoritmos eram implementados em c, mas se podia optar por qualquer linguagem. O objetivo era que o algoritmo fosse implementado corretamente.

ViniGodoy

Lendo, praticando e me ferrando muito.

Andre_Brito

C++ é aquela linguagem que você lê, lê, lê, pratica, pratica, pratica e ainda assim tem que ler mais alguma coisa.

ViniGodoy

Aliás, um ótimo texto sobre Exceptions, recomendado inclusive para quem programa em Java, é o seguinte:
http://www.octopull.demon.co.uk/c++/dragons/

Ele fala de C++ e exceptions, num tom de quem está jogando RPG. Muito bom.

Thiagosc

Por favor, não dê falsas idéias a respeito da linguagem. Em C++ não é possível por exemplo gerar seqüências arbitrárias de código trabalhando-se diretamente com a árvore sintática. Logo a metaprogramação é restrita a criar diferentes classes a partir de templates, mais ou menos como um “Generics” que realmente cria uma classe ao invés de usarem erasure e com mais algumas features.

Ou seja, é bem limitado. É mais limitado do que Ruby ou Python. E olha que Ruby e Python já são limitadíssimos.

ViniGodoy

Por favor, não dê falsas idéias a respeito da linguagem. Em C++ não é possível por exemplo gerar seqüências arbitrárias de código trabalhando-se diretamente com a árvore sintática. Logo a metaprogramação é restrita a criar diferentes classes a partir de templates, mais ou menos como um “Generics” que realmente cria uma classe ao invés de usarem erasure e com mais algumas features.

Ou seja, é bem limitado. É mais limitado do que Ruby ou Python. E olha que Ruby e Python já são limitadíssimos.

Thiago, antes de falar bobagem, sugiro que estude a linguagem. Recomendo o livro de templates do Vandervoorde.

J

Por favor, não dê falsas idéias a respeito da linguagem. Em C++ não é possível por exemplo gerar seqüências arbitrárias de código trabalhando-se diretamente com a árvore sintática. Logo a metaprogramação é restrita a criar diferentes classes a partir de templates, mais ou menos como um “Generics” que realmente cria uma classe ao invés de usarem erasure e com mais algumas features.

Ou seja, é bem limitado. É mais limitado do que Ruby ou Python. E olha que Ruby e Python já são limitadíssimos.
Pode nos esclarecer com exemplos, de sequências, arvores sintaticas, e como metaprogramação funciona como generics. Aliás, porque é mais limitado que ruby ou python?

Todos nós gostaríamos de entender.

Thiagosc

Acho que quem deveria aprender o que é metaprogramação é você. Existem inúmeras linguagens que usam sistemas melhores, como Lisp por exemplo, e outras sistemas parecidos com o do C++.

ViniGodoy

Thiago, dê uma olhada ali em cima na boost, no exemplo de lambda functions, e me explique como aquilo pode ser implementado com generics. Depois que você fizer isso, eu concordo com o que você quiser. E, mesmo que haja outra linguagem com uma implementação melhor de metaprogramação, isso não tira o método do C++ de suportar o paradigma.

J

Thiagosc:
ViniGodoy:

Thiago, antes de falar bobagem, sugiro que estude a linguagem. Recomendo o livro de templates do Vandervoorde.

Acho que quem deveria aprender o que é metaprogramação é você. Existem inúmeras linguagens que usam sistemas melhores, como Lisp por exemplo, e outras sistemas parecidos com o do C++.

Com o lisp eu concordo em partes. Pena que o compilador do lisp não chegue nem na poeira do que é um compilador de c++. Lisp é restrito a apenas algumas aplicações. Comum em projetos de IA como Prolog.

ViniGodoy

juliocbq:
Thiagosc:
ViniGodoy:

Thiago, antes de falar bobagem, sugiro que estude a linguagem. Recomendo o livro de templates do Vandervoorde.

Acho que quem deveria aprender o que é metaprogramação é você. Existem inúmeras linguagens que usam sistemas melhores, como Lisp por exemplo, e outras sistemas parecidos com o do C++.

Com o lisp eu concordo em partes. Pena que o compilador do lisp não chegue nem na poeira do que é um compilador de c++. Lisp é restrito a apenas algumas aplicações. Comum em projetos de IA como Prolog.

Não sei, mas ele parece estar confundindo programação funcional com metaprogramação. Ou veio aqui só para fazer barulho mesmo e, novamente, desviar o assunto do tópico.

Thiagosc

Novamente a sua capacidade de leitura falha. Eu jamais disse que aquilo poderia ser feito com generics, mas sim que templates são parecidos com generics, porque pode-se parametrizar classes e funções, com a diferença de que isso é feito em tempo de compilação.

Mas isso é muito limitado. Em Ruby ou Python existe uma espécie de “metaprogramação”, muito mais flexível.

Em Lisp usa-se a própria linguagem para criar macros e pode-se assim criar qualquer coisa. Seja estruturas ou classes completamente diferentes, funções ou implementações de métodos, valores em ambiente léxico ou dinâmico, etc. Trabalha-se diretamente com a árvore do código e por isso é possível fazer coisas que seriam impossíveis ou muito difíceis de serem feitas em outras linguagens.

A metaprogramação em C++ é uma piada em comparação. É uma definição de metaprogramação bem técnica, pois gera código em tempo de compilação. Não deixa de estar correto, mas Ruby já dá um pau nisso. É muito ruim e limitado.

J

ViniGodoy:
juliocbq:
Thiagosc:
ViniGodoy:

Thiago, antes de falar bobagem, sugiro que estude a linguagem. Recomendo o livro de templates do Vandervoorde.

Acho que quem deveria aprender o que é metaprogramação é você. Existem inúmeras linguagens que usam sistemas melhores, como Lisp por exemplo, e outras sistemas parecidos com o do C++.

Com o lisp eu concordo em partes. Pena que o compilador do lisp não chegue nem na poeira do que é um compilador de c++. Lisp é restrito a apenas algumas aplicações. Comum em projetos de IA como Prolog.

Não sei, mas ele parece estar confundindo programação funcional com metaprogramação. Ou veio aqui só para fazer barulho mesmo e, novamente, desviar o assunto do tópico.

Realmente só para atrapalhar o debate, que está super legal. Se pelo menos tivesse algo concreto para apresentar, a gente ganharia conhecimento, mas no geral é só pra flame mesmo.

Thiagosc

Lisp é usado em engenharia, seja em CADs ou sistemas embarcados.

ViniGodoy

Thiagosc:
Novamente a sua capacidade de leitura falha. Eu jamais disse que aquilo poderia ser feito com generics, mas sim que templates são parecidos com generics, porque pode-se parametrizar classes e funções, com a diferença de que isso é feito em tempo de compilação.

Mas isso é muito limitado. Em Ruby ou Python existe uma espécie de “metaprogramação”, muito mais flexível.

Em Lisp usa-se a própria linguagem para criar macros e pode-se assim criar qualquer coisa. Seja estruturas ou classes completamente diferentes, funções ou implementações de métodos, valores em ambiente léxico ou dinâmico, etc. Trabalha-se diretamente com a árvore do código e por isso é possível fazer coisas que seriam impossíveis ou muito difíceis de serem feitas em outras linguagens.

A metaprogramação em C++ é uma piada em comparação. É uma definição de metaprogramação bem técnica, pois gera código em tempo de compilação. Não deixa de estar correto, mas Ruby já dá um pau nisso. É muito ruim e limitado.

E o que diabos isso tem a ver com a discussão?

O recurso em C++ existe, é poderosíssimo. E se o LISP implementou melhor, ótimo. Mas o assunto do tópico compara C++ com Java, para os jogos. No C++, templates serão um recurso importante, e que precisa ser estudado.

Novamente, não é porque o lisp implementa melhor, que no C++ deixou de ser metaprogramação. Além disso, usar templates como os generics é apenas um dos usos de templates. E um dos menores deles. Por isso, volto a dizer, estude templates primeiro, venha falar aqui depois.

Veja técnicas como functors, lambda functions, static assertions, e só depois conversamos.

Aliás, você se engana quanto aos generics também. Generics são feitos para limitar tipos, e templates são feitos para você não depender do sistema de tipos. O que só mostra sua ignorância a respeito do assunto.

J

Lisp é usado em engenharia, seja em CADs ou sistemas embarcados. No seu mundo então. Trabalho com egenharia aqui, em softwares embarcados, e nem c++ usamos. Somente c e assembly. Aliás todo desenvolvimento de hardware funciona assim.

ViniGodoy

Lisp é usado em engenharia, seja em CADs ou sistemas embarcados. No seu mundo então. Trabalho com egenharia aqui, em softwares embarcados, e nem c++ usamos. Somente c e assembly. Aliás todo desenvolvimento de hardware funciona assim.

Curioso… também trabalhei por anos na Siemens, e a única vez que vimos LISP foi quando um colega estava fazendo mestrado de IA e nos mostrou a linguagem.
No resto, era C++, C e Java.

Vamos fazer o seguinte? O tópico compara Java com C++. Vamos nos manter nessas duas linguagens, ok? O LISP pode ser até fantasticamente melhor do que o C++ nesse aspecto (eu não sei, não uso LISP), mas até ele permitir integração com OpenGL ou DirectX e ser sequer citado na indústria de jogos, vamos voltar ao assunto do tópico.

J

Lisp é usado em engenharia, seja em CADs ou sistemas embarcados. No seu mundo então. Trabalho com egenharia aqui, em softwares embarcados, e nem c++ usamos. Somente c e assembly. Aliás todo desenvolvimento de hardware funciona assim.

Curioso… também trabalhei por anos na Siemens, e a única vez que vimos LISP foi quando um colega estava fazendo mestrado de IA e nos mostrou a linguagem.
No resto, era C++, C e Java.

Vamos fazer o seguinte? O tópico compara Java com C++. Vamos nos manter nessas duas linguagens, ok? O LISP pode ser até fantasticamente melhor do que o C++ nesse aspecto (eu não sei, não uso LISP), mas até ele permitir integração com OpenGL ou DirectX e ser sequer citado na indústria de jogos, vamos voltar ao assunto do tópico.

de certo inventaram interpretadores lisp para pics 16fxx e não estamos sabendo. E olha que esses pics variam entre 1k e 8k de memória. Esse interpretador deve ser único mesmo.

B

então… voltando ao tópico :slight_smile:

o pessoal de java que programa pra web procura mais linguagens como ruby por causa das coisas legais escritas nela e acho que o de jogos acaba tendo a mesma necessidade, porém com c++.
nada impede de tentar usar outras linguagens como python pra computação gráfica, mas nesse quesito c++ é base de muita coisa que funciona bem.
programar a maior parte do tempo com wrapper é só pra gente orgulhosa que gosta de falar que faz aplicação pesada com java… mesmo sabendo que 90% são chamadas pra código nativo :wink:

Thiagosc

Sim, no meu mundo, o planeta Terra, Lisp é usado para isso aqui entre muitas outras coisas:

http://www.lispworks.com/success-stories/index.html

Como que é no seu mundo?

Thiagosc

juliocbq:

de certo inventaram interpretadores lisp para pics 16fxx e não estamos sabendo. E olha que esses pics variam entre 1k e 8k de memória. Esse interpretador deve ser único mesmo.

Lisp compila para código nativo. Você sabe como funciona um compilador? Sobre esse pics eu não sei, mas a sua resposta é tosca demais. O que um interpretador tem a ver com isso?

Se quer discutir se atenha aos fatos.

J

Sim, no meu mundo, o planeta Terra, Lisp é usado para isso aqui entre muitas outras coisas:

http://www.lispworks.com/success-stories/index.html

Como que é no seu mundo?

Acho que você pegou o link e não leu.

Onde está a engenharia elétrica e hardware aqui?
http://www.lispworks.com/success-stories/index.html

Esse tipo de software qualquer linguagem pode implementar.

Veja bem, não estou denegrindo o lisp. Tenho um amigo que é formado em engenharia mecatrônica, e usa lisp. Mas lisp é para trabalhos específicos que envolvem IA. Se você prestar atenção nos projetos do link que postou poderá perceber uma grande afinidade entre eles e IA.

Thiagosc

ViniGodoy:
E o que diabos isso tem a ver com a discussão?

O recurso em C++ existe, é poderosíssimo. E se o LISP implementou melhor, ótimo. Mas o assunto do tópico compara C++ com Java, para os jogos. No C++, templates serão um recurso importante, e que precisa ser estudado.

Novamente, não é porque o lisp implementa melhor, que no C++ deixou de ser metaprogramação. Além disso, usar templates como os generics é apenas um dos usos de templates. E um dos menores deles. Por isso, volto a dizer, estude templates primeiro, venha falar aqui depois.

Veja técnicas como functors, lambda functions, static assertions, e só depois conversamos.

Aliás, você se engana quanto aos generics também. Generics são feitos para limitar tipos, e templates são feitos para você não depender do sistema de tipos. O que só mostra sua ignorância a respeito do assunto.

Eu que te pergunto, o que essa sua seqüência de respostas tem a ver com qualquer coisa? Primeiramente sequer se dar ao trabalho de ler a minha mensagem você se deu, colocou respostas tortas tentando me ironizar. Depois que viu que eu sei sobre o que falo, mudou de tom, agora apelando para o off-topic. Percebeu que toda essa polêmica foi criada por você mesmo?

Lisp é relevante sim para o tópico, pois “poderosíssimo” do C++ é limitadíssimo para o Lisp. Isso é fato e é necessário que saibam para dar uma idéia do que essas linguagens são capazes. Conhecimento é sempre melhor do que ignorância, não concorda? Por que deixar as pessoas no escuro a respeito de suas escolhas e possibilidades?

Tudo o que escrevi aqui sobre templates é 100% correto. Generics não é a mesma coisa, e apenas usei-o como exemplo para programadores Java que podem ler isso aqui. Da próxima vez leia mais atentamente as mensagens antes de postar bobagens.

Thiagosc

juliocbq:
Acho que você pegou o link e não leu.

Onde está a engenharia elétrica e hardware aqui?
http://www.lispworks.com/success-stories/index.html

Esse tipo de software qualquer linguagem pode implementar.

Veja bem, não estou denegrindo o lisp. Tenho um amigo que é formado em engenharia mecatrônica, e usa lisp. Mas lisp é para trabalhos específicos que envolvem IA. Se você prestar atenção nos projetos do link que postou poderá perceber uma grande afinidade entre eles e IA.

Isso são apenas exemplos para quebrar as suas pernas. Você disse que é apenas para IA, aí está uma lista que mostra que não é. Lisp é uma linguagem de uso comum que serve para inúmeras coisas e inclusive, ao contrário de Java, compila para código nativo.

Quer um exemplo de Lisp em ambiente embarcado com limitações de memória:

http://ynniv.com/blog/2005/12/lisp-in-games-naughty-dogs-jax-and.html

Nada mais, nada menos que a Naughty Dog usou Lisp para desenvolver o jogo Jak and Daxter para o PS2. O artigo acima é um post-mortem do projeto, dos prós e contras que eles encontraram pelo caminho. Não apenas mostra o Lisp rodando em sistemas com memória limitada, mas também para jogos.

BTW, a Naughty Dog é a mesma empresa que criou a série Uncharted para o PS3.

Thiagosc

Esse pessoal deveria ter mais respeito com os usuários do forum. É realmente necessário rodar a baiana toda vez que alguém diz algo que você não gosta? Uma certa maturidade ajuda. Respostinhas engraçadinhas tipo “no seu mundo” ou “primeiro aprende isso e depois fala comigo” são o quê?

Pelo visto eu tenho mais conhecimento do que vocês dois juntos. Com simples questões eu poderia ter dado esses links para o jogo do PS2 e a utilização de Lisp no mundo real sem problema algum.

Sinceramente, esse forum está um lixo porque os moderadores não sabem se comportar feito gente grande. O pessoal aqui é mais sensível do que menininha de 8 anos de idade.

Andre_Brito

Você também poderia ser mais educado e gentil com o pessoal que fala coisas pra você…

L

É possível desenvolver jogo em Java ou C++ para depois rodar no Browser?

G

parece q todo mundo aki e bem formado em java…
c nao e ainda ta pra ser ehehe

a maioria dos jogos online como moorpg sao em java…
admiro q ninguem aki conhece ?

fredferrao

Guma:
parece q todo mundo aki e bem formado em java…
c nao e ainda ta pra ser ehehe

a maioria dos jogos online como moorpg sao em java…
admiro q ninguem aki conhece ?

Quais voce conhece?? Eu só conheco o Taikodom, que o client é em java, ja o servidor parece que tem C++ tambem.

Ou vc esta falando daqueles joguinhos que rodam dentro do browser em applets?? Neste caso sim, tem bastante.

G

affs nem …
falo moorpg oO

lineage1 e 2, varia cronicas lancadas na plataforma java…
aion online tbm tem em java…
e outro q tbm tem q eu nao jogo:
moo online , warcraft, entre outros …
falo o sevirdor em si…

o cliente nao sei bem mas com .dat .utx entre outros

animacoes… enigme 3d etc…

fredferrao

Guma:
affs nem …
falo moorpg oO

lineage1 e 2, varia cronicas lancadas na plataforma java…
aion online tbm tem em java…
e outro q tbm tem q eu nao jogo:
moo online , warcraft, entre outros …
falo o sevirdor em si…

o cliente nao sei bem mas com .dat .utx entre outros

animacoes… enigme 3d etc…

O que seria moorpg??
Seria o mesmo que MMORPG?? se sim, saiba que o taikodom é um Massive Multiplayer Online Role-Playing Game. Ao estilo lineage, World of warcraft e afins.

G

nao conhecia esse jogo podes me manda um link do site ou video desse jogo ?

fredferrao

http://www.taikodom.com.br/

E outra 100% brasileiro.

Eu vi la o L2J, mas parece ser somente o server side.

Agora abrindo outro ponto nesta discussao, até aqui se falou mais no java como cliente, ou seja DirectX, OpenGL, 3D e ect, mas e o server side? Neste caso teria alguma vantagem/desvantagem em se usar java? Como o Guma citou e dei uma pesquisadinha e achei esse L2j, um servidor alternativo para o Lineage. Neste caso, toda a discussao de acesso nativo e etc, ja nao faz muito sentido.

G

eu fis questao de apresenta l2java (lineage com base em java ) pq to abrindo um projeto (um rev l2jBrasil) http://www.l2jbrasil.com/ (<<-- somente arquivos para lineage e servidores , nao to divulgando!)
e eu tava procurando um forum como esse pois a maiorias das coisas em si (como bugs no server) teria q mexer no java(core) entao estou aki pra aprender mas e mas … to dano uma olhada no forum mas nao tem nada parecido com isso … seria mas uns novos codigos a ser estudado …
quem sabe eu consiga aprender algo com voces.

fredferrao

Guma:
eu fis questao de apresenta l2java (lineage com base em java ) pq to abrindo um projeto (um rev l2jBrasil) http://www.l2jbrasil.com/ (<<-- somente arquivos para lineage e servidores , nao to divulgando!)
e eu tava procurando um forum como esse pois a maiorias das coisas em si (como bugs no server) teria q mexer no java(core) entao estou aki pra aprender mas e mas … to dano uma olhada no forum mas nao tem nada parecido com isso … seria mas uns novos codigos a ser estudado …
quem sabe eu consiga aprender algo com voces.

Com relação a Jogos especificamente nao tera muita coisa, porem como tu vai montar um server, e neste caso a coisa nao é o grafico, mas muita coisa de rede, protocolos, sockets e etc, podes crer que neste forum vai encontrar tudo que precisa.

G

o q irei compartilhar e “criar” duvidar sao mas
de assuntos java… talves um poko de xml,sql,e html

e tem tudo aki xD

J

Thiagosc:
Esse pessoal deveria ter mais respeito com os usuários do forum. É realmente necessário rodar a baiana toda vez que alguém diz algo que você não gosta? Uma certa maturidade ajuda. Respostinhas engraçadinhas tipo “no seu mundo” ou “primeiro aprende isso e depois fala comigo” são o quê?

Pelo visto eu tenho mais conhecimento do que vocês dois juntos. Com simples questões eu poderia ter dado esses links para o jogo do PS2 e a utilização de Lisp no mundo real sem problema algum.

Sinceramente, esse forum está um lixo porque os moderadores não sabem se comportar feito gente grande. O pessoal aqui é mais sensível do que menininha de 8 anos de idade.

Você é um sem noção mesmo. Um ps2 não é um dispositivo embarcado (Apesar de poder embarcar um unix kernel). Ele não tem um microcontrolador e sim um processador muito mais poderoso que um pentium 4 para gráficos. Quem começou a agredir as pessoas aqui foi você.



http://www.eserviceinfo.com/index.php?what=search2&searchstring=Play+Station+2

Existe uma derivação de lisp que é usada em sistemas embarcados chamada L. Mas não chega nem a 20% do total que é desenvolvido hoje. A maioria das empresas automobilísticas, aeronáuticas, e aeroespaciais ainda usam c++, apesar do lisp possuir uma forte indicação para IA. A resposta é um compilador que gera código enxuto e robusto, e não a linguagem de programação.

Sobre o conhecimento maior, é melhor você trocar o nome para Ser Superior.

J

Thiagosc:
juliocbq:

de certo inventaram interpretadores lisp para pics 16fxx e não estamos sabendo. E olha que esses pics variam entre 1k e 8k de memória. Esse interpretador deve ser único mesmo.

Lisp compila para código nativo. Você sabe como funciona um compilador? Sobre esse pics eu não sei, mas a sua resposta é tosca demais. O que um interpretador tem a ver com isso?

Se quer discutir se atenha aos fatos.

Cara, lisp é interpretado, apesar de poder compilar nativo.

Você tá falando muita besteira. Não vou discutir mais não.

J

http://www.taikodom.com.br/

E outra 100% brasileiro.

Eu vi la o L2J, mas parece ser somente o server side.

Agora abrindo outro ponto nesta discussao, até aqui se falou mais no java como cliente, ou seja DirectX, OpenGL, 3D e ect, mas e o server side? Neste caso teria alguma vantagem/desvantagem em se usar java? Como o Guma citou e dei uma pesquisadinha e achei esse L2j, um servidor alternativo para o Lineage. Neste caso, toda a discussao de acesso nativo e etc, ja nao faz muito sentido.

O servidor tem que aguentar acesso, então deve ter boa performance, já que terá também de rodar full time. Mas como temos exemplos como jboss e outros containers, creio que só java resolve sem problemas.

O caso da biblioteca gráfica(opengl, ditect3d…) diz respeito somente a aceleração de vídeo no hardware.

ViniGodoy

Eu fiz pós graduação com alguns programadores da Hoplon e eles me falaram que o servidor iniciou com muito C++, mas foi gradualmente sendo substituído para Java. Inclusive, tiveram grandes ganhos ao trocar a Torque, por uma engine própria.

Isso não é mérito só do Java. Na verdade, muita coisa foi reescrita para se adaptar ao jogo. Por exemplo, a torque era uma engine pesada demais para física espacial, que basicamente é a física newtoniada aprendida no segundo grau (sem resistência do ar, terreno, etc). Como as armas são lasers, não precisariam calcular impacto dos tiros na nave. E as naves também não colidem entre si…

Mas acho que para servidores, especialmente num MMO, o Java é uma ótima linguagem. Tem boa performance e escalabilidade. O MMO ainda admite atrasos, o que faz desaparecer o inconveniente da execução do GC.

Se eu fosse fazer um jogo assim, pensaria com carinho na possibilidade de ter um server Java, e um cliente C++.

ViniGodoy

Projetos como l2java e aionemu são emulações dos servidores oficiais, feitas em Java. Até onde eu sei, nenhum deles ainda tem a escalabilidade de um servidor oficial.

neofito

O java está ficando para trás. Depois de ter visto ruby, groovy e scala, não consigo mais engolir o java. Só faço as coisas em java se não houver outra forma. Uma linguagem que me chama muito a atenção é o scala. E apesar de todas as features que a linguagem tem, a performance é muito parecida com a do java, chegando a ser mais rápida em alguns casos. Um link legal: Scala as the long term replacement for java/javac?

Se eu fosse fazer um jogo assim, faria o server-side em scala e o client em c++ (se eu soubesse c++, é claro).

neofito

Ah, e eu não queria estragar a festa (está bem legal), mas o thiagosc é o cv disfarçado. Pelo menos é o que está aqui: http://www.guj.com.br/posts/list/30/81094.java#432530
Ou então ele e o Calçado chegaram em um acordo e estão os dois aí brincando. :smiley:

C

Olá,

juliocbq:

Com o lisp eu concordo em partes. Pena que o compilador do lisp não chegue nem na poeira do que é um compilador de c++. Lisp é restrito a apenas algumas aplicações. Comum em projetos de IA como Prolog.

Não compreendo essa de lisp ser “restrita a algumas aplicações” já que sempre foi uma linguagem de propósito geral. Inclusive minha aplicação (procure por Flightweets na appstore) possui o backend todo em lisp. Que eu saiba programação web não tem nada de IA.

Um pouco de história…
Lisp sempre foi laboratório para experimentação de novas idéias que depois são incorporadas em linguagens mainstream. Assim foi com if-then-else, garbage collector, OO, etc. Hoje em dia, com versões modernas de Lisp que compilam para a JVM, temos a disposição recursos bem sofisticados (como suporte a programação multi-core, programação funcional com estruturas de dados persistentes, programação assíncrona com sistema de agentes, pra citar alguns…) que linguagens como Java (pra não dizer C++) nem sonham em ter, a não ser por meio de um fork no design da linguagem, ou em outras palavras, nascendo de novo!

Portanto não sei o que está mais defasado, se é sua afirmação de que “lisp é para inteligência artificial” (faz tempo que não ouço falar no termo inteligência artificial) ou usar C++ para criar alguma coisa em pleno 2010.

Aliás, como esse é o tema do tópico, eu realmente gostaria de saber. Qual o argumento de se usar C++ hoje em dia? sistemas embarcados? Tem certeza que não estão confundindo com C (pra deixar claro, C e C++ são coisas completamente diferentes)? Programação de Jogos? Tem certeza que Java não é suficiente em ambientes que requer alta performance? Apenas curiosidade…

Se fossemos descontar os sistemas legado, minha impressão é que se a linguagem sumisse da face da terra hoje acho que ninguém sentiria falta de C++ em novos projetos de software.

J

cmoscoso:
Olá,

juliocbq:

Com o lisp eu concordo em partes. Pena que o compilador do lisp não chegue nem na poeira do que é um compilador de c++. Lisp é restrito a apenas algumas aplicações. Comum em projetos de IA como Prolog.

Não compreendo essa de lisp ser “restrita a algumas aplicações” já que sempre foi uma linguagem de propósito geral. Inclusive minha aplicação (procure por Flightweets na appstore) possui o backend todo em lisp. Que eu saiba programação web não tem nada de IA.

Um pouco de história…
Lisp sempre foi laboratório para experimentação de novas idéias que depois são incorporadas em linguagens mainstream. Assim foi com if-then-else, garbage collector, OO, etc. Hoje em dia, com versões modernas de Lisp que compilam para a JVM, temos a disposição recursos bem sofisticados (como suporte a programação multi-core, programação funcional com estruturas de dados persistentes, programação assíncrona com sistema de agentes, pra citar alguns…) que linguagens como Java (pra não dizer C++) nem sonham em ter, a não ser por meio de um fork no design da linguagem, ou em outras palavras, nascendo de novo!

Portanto não sei o que está mais defasado, se é sua afirmação de que “lisp é para inteligência artificial” (faz tempo que não ouço falar no termo inteligência artificial) ou usar C++ para criar alguma coisa em pleno 2010.

Aliás, como esse é o tema do tópico, eu realmente gostaria de saber. Qual o argumento de se usar C++ hoje em dia? sistemas embarcados? Tem certeza que não estão confundindo com C (pra deixar claro, C e C++ são coisas completamente diferentes)? Programação de Jogos? Tem certeza que Java não é suficiente em ambientes que requer alta performance? Apenas curiosidade…

Se fossemos descontar os sistemas legado, minha impressão é que se a linguagem sumisse da face da terra hoje acho que ninguém sentiria falta de C++ em novos projetos de software.

Se c++ sumisse da face da terra você nem ligaria seu pc, isso em pleno 2010. Onde estão os sistemas operacionais java e dotnet que se estavam pesquisando?

A Microsoft tentou o vista e posteriormente o singularity. Vista tinha 30% das aplicações .net e hoje não tem 10% delas, em se falar do win seven, que não tem 5%. A culpa, é a perda de performance.
Java tem somente estudos de sistemas operacionais, nenhum levado como projeto sério pelos pesquisadores.
Lisp não tem nenhum…

Se falando de jogos, as únicas bibliotecas gráficas que existem são c++. Opengl para sistemas unix(Isso inclui o SO do Imac), e directx para windows. Como você desenvolve jogos sem usar c++ então?

Sobre sistemas embarcados com linux, dá para se programar com qualquer linguagem, desde que possua compilador para plataforma. Existem dezenas de compiladores c++, c, basic, pascal para isso, e somente um lisp, que normalmente é usado para inteligência de máquina em mecatrônica, e mais em nenhum tipo de projeto.

Tem o android é que um linux com máquina virtual java.
Mais uma vez lisp não se inclui em nenhum projeto do gênero.

O MIT usa lisp(Scheme) para projetos na área de IA, os demais projetos são c++ e c. Pergunte ao Stallman, que era físico do MIT.

http://groups.csail.mit.edu/mac/projects/scheme/

Detalhe, c++ é uma extensão do c, assim como c++0x é extensão do c++. Não são coisas completamente diferentes.

Parece até um fake do thiagosc.

C

E pensar que aqui já foi um local para discussões de alto nivel, uma pena que o GUJ tenha chegado a esse nível com usuários que só sabem fazer ataques pessoais e se acham o rei citando links de 2003.

J

cmoscoso:
juliocbq:

O MIT usa lisp(Scheme) para projetos na área de IA, os demais projetos são c++ e c. Pergunte ao Stallman, que era físico do MIT.

http://groups.csail.mit.edu/mac/projects/scheme/

Detalhe, c++ é uma extensão do c, assim como c++0x é extensão do c++. Não são coisas completamente diferentes.

Parece até um fake do thiagosc.

E pensar que aqui já foi um local para discussões de alto nivel, uma pena que o GUJ tenha chegado a esse nível com usuários que só sabem fazer ataques pessoais e se acham o rei citando links de 2003.

e você que nem tem link para mostrar.
Você por acaso tem idéia do que é o MIT? De certo não.

ViniGodoy

Na verdade, o C++ é uma das linguagens mais utilizadas, mesmo atualmente!!

Em que linguagem você acha que foi desenvolvido, por exemplo, seu navegador de internet? Ou todos os jogos do mercado? Ou aplicativos como Corel e Photoshop? Ou a sua virtual machine? Garanto que não foram em Lisp e, muito provavelmente, também não em Java.

E existem centenas de argumentos para não utiliza-lo no lugar do C. Há começar pelo fato de ser orientado a objetos, de suportar templates, de ter centenas de milhares de APIs completas para tudo o que você possa sonhar.

Em aplicações de tempo real há motivos para usa-lo no lugar de qualquer linguagem managed (como java e C#), como é o caso dos jogos. Jogos são um sistema de tempo de real, onde o tempo de processamento entre frames é muito pequeno. Uma pausa do garbage collector será notada pelo jogador.

Talvez você não tenha ouvido falar em IA porque não é seu nicho. Mas eu tenho que ver alguma coisa de IA praticamente todo ano, e não é só para os jogos.

Uma coisa que ocorre muito no GUJ é uma generalização. Java é uma linguagem forte na web e, se você trabalhar nela, as chances são grandes que você só atue nesse nicho. Nem por isso, esse nicho é o único. Há nichos enormes fora da web, seja no mercado de sistemas operacionais, aplicações para indústria ou engenharia, centros de pesquisa, e até mesmo jogos, e o C++ está presente nesse mercado, com muita força, em pleno 2010.

Aliás, mesmo no Brasil, o cpp tem uma comunidade de usuários tão grande quanto o GUJ. Eu mesmo participo de uma lista de discussão com milhares de programadores. Com blogs na web publicados, dá para citar o Wanderlei Caloni e o Rodrigo Strauss, nenhum deles atuante no mercado de jogos.

ViniGodoy

Só um último argumento. Citemos uma pequena e desconhecida empresa de jogos chamada Eletrocnic Arts. Para ela, o C++ é tão importante que eles fizeram uma versão própria da STL. Para quem não sabe, a STL é a biblioteca padrão do C++, onde estão classes como vector e map (muita gente que vem descer a lenha no C++ em tópicos como esse, muitas vezes nem sabe que ela existe).

Pois bem, a EA implementou uma versão própria da STL, especialmente feita para jogos:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html

Note que os papers são recentes (2007).

ViniGodoy

Na verdade, o C++ também está fortemente presente no mercado porque as empresas de console vendem justamente diferenciação de hardware. E, nos mercados onde essa diferenciação é crucial, o C++ cai como uma luva.

Veja bem, a Nintendo, Sony e MS não terão o menor interesse em fazer uma VM que unifique os consoles numa plataforma padrão. Isso nem sequer faz sentido, pois iria contra o próprio negócio deles, que é vender um hardware diferenciado.

Eles poderiam então, fornecer VMs não padrão, não portáveis, o que já cai em contradição com o próprio conceito do Java. Ou podem usar o C++. Assim os engenheiros podem fazer APIs facilmente, mesmo que sejam em C, em conjunto com um ambiente para desenvolvimento facilmente montado com um compilador poderoso, baseado em C++.

Alguns outros mercados, como o de engenharia de telecomunicações, também seguem esse conceito (embora o de telecom realmente esteja migrando para softswitchs, que podem eventualmente virar máquinas rodando Java).

No C++, também pode-se dar mais garantias para sistemas de tempo real, ou para aplicações para indústria nuclear. Pelo contrato do Java, você não pode desenvolver aplicações nessas condições:

quote=“sun” You acknowledge that Licensed Software is not designed or intended for use in the design, construction, operation or maintenance of any nuclear facility. Sun Microsystems, Inc. disclaims any express or implied warranty of fitness for such uses.[/quote] (Fonte: Java license)

Mas, realmente, o Java fornece ferramentas fantásticas para otimização. E isso torna desenvolver aplicações java de boa performance muito mais fácil do que em C++. Acho que performance só é um argumento em indústrias que estão realmente dispostas a investir nisso, como é o caso das engenharias e dos jogos. Para a absurda maior parte das aplicações comerciais, eu não citaria esse fato como um argumento para se preferir java no lugar de C++.

J

Na verdade, o C++ também está fortemente presente no mercado porque as empresas de console vendem justamente diferenciação de hardware. E, nos mercados onde essa diferenciação é crucial, o C++ cai como uma luva.

Veja bem, a Nintendo, Sony e MS não terão o menor interesse em fazer uma VM que unifique os consoles numa plataforma padrão. Isso nem sequer faz sentido, pois iria contra o próprio negócio deles, que é vender um hardware diferenciado.

Eles poderiam então, fornecer VMs não padrão, não portáveis, o que já cai em contradição com o próprio conceito do Java. Ou podem usar o C++. Assim os engenheiros podem fazer APIs facilmente, mesmo que sejam em C, em conjunto com um ambiente para desenvolvimento facilmente montado com um compilador poderoso, baseado em C++.

Alguns outros mercados, como o de engenharia de telecomunicações, também seguem esse conceito (embora o de telecom realmente esteja migrando para softswitchs, que podem eventualmente virar máquinas rodando Java).

No C++, também pode-se dar mais garantias para sistemas de tempo real, ou para aplicações para indústria nuclear. Pelo contrato do Java, você não pode desenvolver aplicações nessas condições:

quote=“sun” You acknowledge that Licensed Software is not designed or intended for use in the design, construction, operation or maintenance of any nuclear facility. Sun Microsystems, Inc. disclaims any express or implied warranty of fitness for such uses. (Fonte: Java license)

Mas, realmente, o Java fornece ferramentas fantásticas para otimização. E isso torna desenvolver aplicações java de boa performance muito mais fácil do que em C++. Acho que performance só é um argumento em indústrias que estão realmente dispostas a investir nisso, como é o caso das engenharias e dos jogos. Para a absurda maior parte das aplicações comerciais, eu não citaria esse fato como um argumento para se preferir java no lugar de C++.
[/quote]

Além de que, as ferramentas java são gratuitas. Existe um investimento muito grande em ferramentas como netbeans. O custo para se desenvolver com java é bem menor.

M

Acho que a questão não é se existe alguma empresa usando cpp. Claro que existe. Se bobear tem empresa que ainda usa cartao pefurado!

Mas será que existe algum motivo pra alguém COMECAR um negocio baseado em cpp? Senão boa sorte pra tentar entrar na EA.

M

ViniGodoy:
Só um último argumento. Citemos uma pequena e desconhecida empresa de jogos chamada Eletrocnic Arts. Para ela, o C++ é tão importante que eles fizeram uma versão própria da STL. Para quem não sabe, a STL é a biblioteca padrão do C++, onde estão classes como vector e map (muita gente que vem descer a lenha no C++ em tópicos como esse, muitas vezes nem sabe que ela existe).

Pois bem, a EA implementou uma versão própria da STL, especialmente feita para jogos:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html

Note que os papers são recentes (2007).

ou então pq cpp na sua forma padrão não lhe caiu como uma luva.

Mas boa sorte pra quem for fazer o mesmo na sua startup.

J

mochuara:
Acho que a questão não é se existe alguma empresa usando cpp. Claro que existe. Se bobear tem empresa que ainda usa cartao pefurado!

Mas será que existe algum motivo pra alguém COMECAR um negocio baseado em cpp? Senão boa sorte pra tentar entrar na EA.


Bom…a Blizzard está ae sempre com produtos novos em cpp.

pablosaraiva

Eu não ia falar nada, pois tá virando flame isso aqui.

Mas só pra defender o C++.

O ACRush, ganhador do Google Code Jam 2008 e 2009, fez todos os aplicativos da competição em C++. E podia usar qualquer linguagem.

Ahh… o ACRush também é o primeiro do rank no topcoder.

ViniGodoy

ou então pq cpp na sua forma padrão não lhe caiu como uma luva.

Mas boa sorte pra quem for fazer o mesmo na sua startup.[/quote]

Não é bem assim. Se você ler o documento, vai ver que eles apenas implementaram novos allocators, e adicionaram alguns métodos menos seguros, mas que fazem acesso mais direto a informação.

De qualquer forma, de contrário da proposta do Java, a API padrão do C++ é mesmo uma especificação, e pode ser reimplementada. Existem exemplos disso como versões da STL com verificações de ranges (para debug), ou a versão da STL da Microsoft.

Como o C++ é uma linguagem muito focada em aproveitar ao máximo os recursos de hardware, você vai achar implementações para as mais diversas necessidades. Isso reforça um princípio do C++ conhecido como princípio do recurso mínimo. Ou seja, se você não precisa de um recurso, você não deve pagar por ele.

ViniGodoy

Releia o que eu li. Se seu software for num produto onde o diferencial é justamente usar os recursos de um hardware, que linguagem você vai usar?
E se for uma aplicação de tempo real hard real time? Você confiaria no garbage collector?

Thiagosc

juliocbq:
Você é um sem noção mesmo. Um ps2 não é um dispositivo embarcado (Apesar de poder embarcar um unix kernel). Ele não tem um microcontrolador e sim um processador muito mais poderoso que um pentium 4 para gráficos. Quem começou a agredir as pessoas aqui foi você.



http://www.eserviceinfo.com/index.php?what=search2&searchstring=Play+Station+2

Existe uma derivação de lisp que é usada em sistemas embarcados chamada L. Mas não chega nem a 20% do total que é desenvolvido hoje. A maioria das empresas automobilísticas, aeronáuticas, e aeroespaciais ainda usam c++, apesar do lisp possuir uma forte indicação para IA. A resposta é um compilador que gera código enxuto e robusto, e não a linguagem de programação.

Sobre o conhecimento maior, é melhor você trocar o nome para Ser Superior.

Sem noção é você que até agora só disse besteira. Procura se informar que você precisa disso urgentemente. O PS2 é um eletrodoméstico com sérias limitações de memória RAM e poder de processamento. Existem celulares mais potentes do que ele. Isso apenas demonstra que o Lisp roda nativamente em plataformas com tais restrições, e poderia rodar em qualquer coisa.

Eu não sei sobre o microcontrolador que você usa, mas eu provei que tudo o que você disse até aogra é besteira.

Thiagosc

juliocbq:
Cara, lisp é interpretado, apesar de poder compilar nativo.

Você tá falando muita besteira. Não vou discutir mais não.

Se houvesse multa por cada bobagem que você diz você estaria pobre e falido, pois a cada frase sua é uma pérola. Em primeiro lugar, se uma linguagem é compilada para código nativo que roda na plataforma alvo ela não pode ser interpretada pois o processador estará executando as instruções diretamente. É assim que a Naughty Dog fez o jogo no PS2.

Em segundo, deixe de ser burro e pare de consultar a Wikipedia. É possível compilá-lo para bytecodes assim como Java, e isso uma forma de interpretação, mas não é esse tipo de compilação a que me refiro.

Aliás, o processo de compilar código é o processo de transformar uma árvore sintática em outro formato de dados. Esse formato pode ser código nativo a ser executado, bytecodes de alguma VM ou até mesmo outra linguagem. Pois é, pode-se compilar uma linguagem em outra linguagem!! Isso é Ciência da Computação e não é limitado a Lisp somente. Qualquer linguagem pode ser compilada para qualquer outra coisa.

A suposta “vantagem” do C++ é que o seu código escarrado contém mais informações para o compilador trabalhar. Mas isso depende da aplicação e da circunstância.

Toma que você precisa: http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/[telefone removido]/ref=sr_1_1?ie=UTF8&s=books&qid=[telefone removido]&sr=8-1

Thiagosc

juliocbq:
A Microsoft tentou o vista e posteriormente o singularity. Vista tinha 30% das aplicações .net e hoje não tem 10% delas, em se falar do win seven, que não tem 5%. A culpa, é a perda de performance.
Java tem somente estudos de sistemas operacionais, nenhum levado como projeto sério pelos pesquisadores.
Lisp não tem nenhum…

Por favor, digite no Google “Lisp machines”. Você encontrará diversas referências a máquinas que foram comercializadas no passado que rodavam nativamente Lisp.

A única razão dessas empresas terem desaparecido foi o surgimento das workstations Unix e mais tarde do Windows. Os PCs da Intel rapidamente evoluíram a ponto de conseguirem rodar Lisp tão rápido quando as máquinas Lisp.

Aliás, o primeiro domínio registrado na internet era de uma empresa que produzia máquinas Lisp chama “symbolics”. Pesquise no Google Symbolics.

Thiagosc

ViniGodoy:
No C++, também pode-se dar mais garantias para sistemas de tempo real, ou para aplicações para indústria nuclear. Pelo contrato do Java, você não pode desenvolver aplicações nessas condições:

quote=“sun” You acknowledge that Licensed Software is not designed or intended for use in the design, construction, operation or maintenance of any nuclear facility. Sun Microsystems, Inc. disclaims any express or implied warranty of fitness for such uses.

(Fonte: Java license)
[/quote]

Sim, porque sempre a possibilidade de um crash de um jogo de videogame pode causar um novo Chernobyl. (sarcasmo)

Pois é, deveríamos parar de usar linguagens modernas com Garbage Collector porque usinas nucleares não podem usá-la. Como arranjaremos emprego sem usinas nucleares? (mais sarcasmo)

Vocês forçam demais.

Thiagosc

ViniGodoy:

Em que linguagem você acha que foi desenvolvido, por exemplo, seu navegador de internet? Ou todos os jogos do mercado? Ou aplicativos como Corel e Photoshop? Ou a sua virtual machine? Garanto que não foram em Lisp e, muito provavelmente, também não em Java.

Qualquer aplicação pode ser desenvolvida em qualquer linguagem. Se você quer dizer rodar nativamente, sem VM, então basta um compilador que gere o código necessário e você poderia programar um sistema operacional em Pascal ou qualquer outra linguagem.

J

Thiagosc:
juliocbq:
Você é um sem noção mesmo. Um ps2 não é um dispositivo embarcado (Apesar de poder embarcar um unix kernel). Ele não tem um microcontrolador e sim um processador muito mais poderoso que um pentium 4 para gráficos. Quem começou a agredir as pessoas aqui foi você.



http://www.eserviceinfo.com/index.php?what=search2&searchstring=Play+Station+2

Existe uma derivação de lisp que é usada em sistemas embarcados chamada L. Mas não chega nem a 20% do total que é desenvolvido hoje. A maioria das empresas automobilísticas, aeronáuticas, e aeroespaciais ainda usam c++, apesar do lisp possuir uma forte indicação para IA. A resposta é um compilador que gera código enxuto e robusto, e não a linguagem de programação.

Sobre o conhecimento maior, é melhor você trocar o nome para Ser Superior.

Sem noção é você que até agora só disse besteira. Procura se informar que você precisa disso urgentemente. O PS2 é um eletrodoméstico com sérias limitações de memória RAM e poder de processamento. Existem celulares mais potentes do que ele. Isso apenas demonstra que o Lisp roda nativamente em plataformas com tais restrições, e poderia rodar em qualquer coisa.

Eu não sei sobre o microcontrolador que você usa, mas eu provei que tudo o que você disse até aogra é besteira.


Tá ok Ser Superior. O PS2 é um PowerPC. E a única coisa que provou aqui é que você só sabe gritar.

J

Thiagosc:
ViniGodoy:

Em que linguagem você acha que foi desenvolvido, por exemplo, seu navegador de internet? Ou todos os jogos do mercado? Ou aplicativos como Corel e Photoshop? Ou a sua virtual machine? Garanto que não foram em Lisp e, muito provavelmente, também não em Java.

Qualquer aplicação pode ser desenvolvida em qualquer linguagem. Se você quer dizer rodar nativamente, sem VM, então basta um compilador que gere o código necessário e você poderia programar um sistema operacional em Pascal ou qualquer outra linguagem.

Comece por escrever seu so e os drivers dos dispositivos pci, usb, sata com lisp. Ae sim, com certeza você será o verdadeiro ser superior.

PS: existe um so escrito em pascal. Mas lisp não conheço nenhum projeto oficial.
temos esse aqui

Como sempre só fica no estudo.

_

hahah o thiagosc é a versão agressiva do JavaLivros. Só posta abobrinha mas é esquentadinho :twisted:

Thiagosc

Mas foi isso o que o Linus Torvalds fez, não foi? A diferença foi que ele usou o gcc, mas de resto fez do zero.

Você nem precisaria suportar todos os hardwares que já existiram, mas apenas os atuais. Poderia inclusive começar no 64 bit.

J

Thiagosc:
juliocbq:
A Microsoft tentou o vista e posteriormente o singularity. Vista tinha 30% das aplicações .net e hoje não tem 10% delas, em se falar do win seven, que não tem 5%. A culpa, é a perda de performance.
Java tem somente estudos de sistemas operacionais, nenhum levado como projeto sério pelos pesquisadores.
Lisp não tem nenhum…

Por favor, digite no Google “Lisp machines”. Você encontrará diversas referências a máquinas que foram comercializadas no passado que rodavam nativamente Lisp.

A única razão dessas empresas terem desaparecido foi o surgimento das workstations Unix e mais tarde do Windows. Os PCs da Intel rapidamente evoluíram a ponto de conseguirem rodar Lisp tão rápido quando as máquinas Lisp.

Aliás, o primeiro domínio registrado na internet era de uma empresa que produzia máquinas Lisp chama “symbolics”. Pesquise no Google Symbolics.

Sim, é isso mesmo. Com os sistemas unix desenvolvidos em c, e com alta performance de processamento. Não existe razão de usar lisp no lugar de c.
Olha que o stallman é super fan de lisp, e mesmo assim, seu projeto de compilador é escrito em c, ao invés de lisp.

http://www.gnu.org/gnu/rms-lisp.html

Abdon

Queria ver vcs falarem mal de Lisp assim para o Ola Bini

J

Mas foi isso o que o Linus Torvalds fez, não foi? A diferença foi que ele usou o gcc, mas de resto fez do zero.

Você nem precisaria suportar todos os hardwares que já existiram, mas apenas os atuais. Poderia inclusive começar no 64 bit.

Não, não… Linus usou um kernel unix, pronto, para desenvolver o linux.

J

Não estou falando mal de linguagem nenhuma. Acho lisp uma linguagem muito boa. Mas não serve para hardware. Só isso.

J

tá mais pra magazine do que para um livro. Nada do que ele fala presta.

lina

Oi,

Não vamos desviar a ideia inicial do tópico! realmente achei excelente a discussão/debate.

Aprendi muito lendo cada opinião! Sendo assim, ignorem qualquer post não relacionado a foco principal, ok?!

Tchauzin!

G

exatamente mas a meta e xegar o mas perto possivel livre de bugs…
q sao corregidos no core do pack q sera algumas liguagens java…

Andre_Brito

O Petr (ele não participa mais do GoogleCodeJam porque ele faz as paradas para o GCJ) usa C#. Por isso devemos aprender C# e ir trabalhar no Google? Que nada mano… O negócio é você fazer o que te diverte e te dá prazer. Se você se diverte programando em Assembly, Lisp, C, Haskell… Por que não fazer isso?
Tenho certeza de uma coisa: as coisas saem melhores quando você faz elas com prazer. Então se você não gosta de programar em Java, simplesmente não programe porque vai estar fazendo um favor não só pra tua saúde, mas pra saúde de outros programadores que gostam de Java e vão ter que lidar em códigos já prontos.

pablosaraiva

O Petr (ele não participa mais do GoogleCodeJam porque ele faz as paradas para o GCJ) usa C#. Por isso devemos aprender C# e ir trabalhar no Google? Que nada mano… O negócio é você fazer o que te diverte e te dá prazer. Se você se diverte programando em Assembly, Lisp, C, Haskell… Por que não fazer isso?
Tenho certeza de uma coisa: as coisas saem melhores quando você faz elas com prazer. Então se você não gosta de programar em Java, simplesmente não programe porque vai estar fazendo um favor não só pra tua saúde, mas pra saúde de outros programadores que gostam de Java e vão ter que lidar em códigos já prontos.

Eu gosto do Java. Não falei mal do Java em momento nenhum.

Só estou defendendo que o C++ é uma grande linguagem, ao contrário do que algumas pessoas estão dizendo aí em cima.

Não entendi o motivo da ofensa direta, mas vou acreditar que você estava “inflamado” pelo teor dos outros posts.

Abraço.

Andre_Brito

Pablãooo! Pára com isso cara, não quis te ofender não. Não leve por esse lado, tranquilo? Até relendo aqui ficou grosso pra danar o jeito que te tratei, mas não leve pelo lado da ofensa, por favor.

J

Agora que as ofensas acabaram, podemos voltar ao conteúdo do tópico… Existe uma engine poderosíssima, que está sendo usada em filmes de hollywood e jogos para wii e outros consoles. Ela é desenvolvida em c#, com mono, e é multiplataforma.

É a melhor que eu já vi, mas não é free nem opensource.

Vale a pena usar o demo e testar. Super profissional.

ViniGodoy

Julio, a Unity não ganhou uma versão gratuita?

ViniGodoy

O Petr (ele não participa mais do GoogleCodeJam porque ele faz as paradas para o GCJ) usa C#. Por isso devemos aprender C# e ir trabalhar no Google? Que nada mano… O negócio é você fazer o que te diverte e te dá prazer. Se você se diverte programando em Assembly, Lisp, C, Haskell… Por que não fazer isso?
Tenho certeza de uma coisa: as coisas saem melhores quando você faz elas com prazer. Então se você não gosta de programar em Java, simplesmente não programe porque vai estar fazendo um favor não só pra tua saúde, mas pra saúde de outros programadores que gostam de Java e vão ter que lidar em códigos já prontos.

Eu gosto do Java. Não falei mal do Java em momento nenhum.

Só estou defendendo que o C++ é uma grande linguagem, ao contrário do que algumas pessoas estão dizendo aí em cima.

Não entendi o motivo da ofensa direta, mas vou acreditar que você estava “inflamado” pelo teor dos outros posts.

Abraço.

O duro de fórum é que as coisas as vezes soam mais ofensivas do que tinhamos de início. Confesso que li a respostas do André e não achei ofensiva. Aí vi seu post, reli com outra ênfase, e me pareceu ofensiva!

J

ViniGodoy:
Julio, a Unity não ganhou uma versão gratuita?
http://www.gamedevbr.com/unity-ganha-nova-versao-e-versao-indie-fica-gratuita/

Num sabia…agora ganhei um brinquedo novo… rsrs

ViniGodoy

Um não, dois.

Pouco depois que anunciaram a Unity, a Epic avisou que a Unreal também teria uma versão Indie Free.

O pessoal até tirou sarro:
“Unreal: Unity, quer brincar de free? Então vamos brincar de verdade…”

Andre_Brito

É mesmo :\ Mas desculpe a você também se te ofendi de alguma maneira. Sabe que admiro praticamente todo mundo daqui, até me provarem o contrário. Já mandei MP pro Pablo e ficou tudo resolvido (ainda bem) :slight_smile:

Abraço.

pablosaraiva

ê ê… já tava resolvido!

Nem precisava da MP.

André é gente fina.

cs.santos0

[OFF]
Opa, mais uma fã da NFL por aki…charges ja tão quase nos playoffs ja…agora é torcer pro NYG entrar no bolo tb no wildcard… :lol:
[/OFF]

OBS:não pude deixar de comentar…rsrsrs

andrerios

Fala galera blz?!

Estou pensando em criar um jogo de tabuleiro (Jogo da Vida, Banco Imobiliario (esse ja fiz em Swing pro meu TCC e tirei 10 hehehe), etc) utilizando uma dessas tecnologias (JSF / JavaFx / Flex).

Alguem as recomenda ou teria uma ideia melhor? Quero algo Web, pq farei o mesmo jogo versao Swing tb (ta eu sei q vou levar uns 2 anos pra terminar devido o tempo que tenho, mas quero brincar um pouco hehehe)

Abraço!

J

andrerios:
Fala galera blz?!

Estou pensando em criar um jogo de tabuleiro (Jogo da Vida, Banco Imobiliario (esse ja fiz em Swing pro meu TCC e tirei 10 hehehe), etc) utilizando uma dessas tecnologias (JSF / JavaFx / Flex).

Alguem as recomenda ou teria uma ideia melhor? Quero algo Web, pq farei o mesmo jogo versao Swing tb (ta eu sei q vou levar uns 2 anos pra terminar devido o tempo que tenho, mas quero brincar um pouco hehehe)

Abraço!

O javafx. Usando vetores. Vai ficar bem leve, e não será trabalhoso de desenvolver.

andrerios

E como está a questão da portabilidade do JavaFx? Aqui no trabalho o site é bloqueado, e quando ele saiu ele nao rodava no linux segundo me falaram… verdade ou mito?

valeu!

andrerios

Achei no forum, ja tem pra linux e faz tempo hehehe

:stuck_out_tongue:

ja vi que esse fds terei coisa pra estudar :stuck_out_tongue:

Andre_Brito

andrerios:
Fala galera blz?!

Estou pensando em criar um jogo de tabuleiro (Jogo da Vida, Banco Imobiliario (esse ja fiz em Swing pro meu TCC e tirei 10 hehehe), etc) utilizando uma dessas tecnologias (JSF / JavaFx / Flex).

Alguem as recomenda ou teria uma ideia melhor? Quero algo Web, pq farei o mesmo jogo versao Swing tb (ta eu sei q vou levar uns 2 anos pra terminar devido o tempo que tenho, mas quero brincar um pouco hehehe)

Abraço!


Se você usar Flash, pode dar uma negócio bem bonito viu? O Flex não tem tanto esse propósito (é mais pra sistemas mesmo), mas é possível de fazer usando ele (seria bem rápido e fácil de desenvolver. Se quiser deixar o negócio open-source, só manda o repositório aí que, se quiser, posso dar uma ajuda). Aliás, poderia até portar pra AIR e usar uma aplicação desktop pra jogar com pessoas que estiverem jogando pelo navegador.

[ Sim, estamos muito bem! Depois de ganhar de Giants, Cowboys e dar aquela lavada em Broncos (30 e alguma coisa a 3)… Acredito até em SuperBowl! ]

andrerios

Andre Brito:
andrerios:
Fala galera blz?!

Estou pensando em criar um jogo de tabuleiro (Jogo da Vida, Banco Imobiliario (esse ja fiz em Swing pro meu TCC e tirei 10 hehehe), etc) utilizando uma dessas tecnologias (JSF / JavaFx / Flex).

Alguem as recomenda ou teria uma ideia melhor? Quero algo Web, pq farei o mesmo jogo versao Swing tb (ta eu sei q vou levar uns 2 anos pra terminar devido o tempo que tenho, mas quero brincar um pouco hehehe)

Abraço!


Se você usar Flash, pode dar uma negócio bem bonito viu? O Flex não tem tanto esse propósito (é mais pra sistemas mesmo), mas é possível de fazer usando ele (seria bem rápido e fácil de desenvolver. Se quiser deixar o negócio open-source, só manda o repositório aí que, se quiser, posso dar uma ajuda). Aliás, poderia até portar pra AIR e usar uma aplicação desktop pra jogar com pessoas que estiverem jogando pelo navegador.

Bom por eqto a ideia não é essa, mas o farei para que um dia seja open source… é que ainda nao tem data pra começar, e quando começar nao terá data pra terminar hehehe

abraco! e valeu pela ajuda :wink:

Criado 9 de dezembro de 2009
Ultima resposta 18 de dez. de 2009
Respostas 135
Participantes 27