C++ ou Java para Jogos, por que?  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3928
Offline

cmoscoso wrote:Olá,

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

This message was edited 3 times. Last update was at 15/12/2009 11:59:46


www.citrox.com.br
cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

juliocbq wrote:
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.
[Email]
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3928
Offline

cmoscoso wrote:
juliocbq wrote:
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.

This message was edited 1 time. Last update was at 15/12/2009 13:12:11


www.citrox.com.br
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline

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.

This message was edited 3 times. Last update was at 15/12/2009 13:21:11


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline

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

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline

cmoscoso wrote: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.


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:
sun wrote:(...) 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++.

This message was edited 2 times. Last update was at 15/12/2009 13:36:33


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3928
Offline

ViniGodoy wrote:
cmoscoso wrote: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.


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:
sun wrote:(...) 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++.


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.

www.citrox.com.br
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

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.
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

ViniGodoy wrote: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.
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3928
Offline

mochuara wrote: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.

www.citrox.com.br
pablosaraiva
JavaGuru

Membro desde: 27/03/2009 17:08:37
Mensagens: 243
Offline

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.

Existem 10 tipos de pessoas no mundo. As que conhecem binário e as que não.
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline

mochuara wrote: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.

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

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20587
Localização: Curitiba/PR
Offline

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


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?

This message was edited 1 time. Last update was at 15/12/2009 15:16:30


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Thiagosc
GUJ Master

Membro desde: 27/04/2006 21:01:27
Mensagens: 1134
Offline

juliocbq wrote: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://en.wikipedia.org/wiki/Cell_(microprocessor)
http://en.wikipedia.org/wiki/Lisp_(programming_language)
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
GUJ Master

Membro desde: 27/04/2006 21:01:27
Mensagens: 1134
Offline

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

http://en.wikipedia.org/wiki/Interpreted_language

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/0201100886/ref=sr_1_1?ie=UTF8&s=books&qid=1260904759&sr=8-1
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team