C++ ou Java para Jogos, por que?

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.

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.

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?

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

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.

[quote=juliocbq]Cara, lisp é interpretado, apesar de poder compilar nativo.

Você tá falando muita besteira. Não vou discutir mais não.[/quote]

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

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

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.

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

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

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.

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

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.[/quote]
Tá ok Ser Superior. O PS2 é um PowerPC. E a única coisa que provou aqui é que você só sabe gritar.

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

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

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:

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.

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

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

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

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

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

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

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

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

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!

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…

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.