In article <1100192102.902194.179...@c13g2000cwb.googlegroups.com>, "Jeff M." <mass...@gmail.com> wrote:
> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant > on either language, so let's not start any flame wars. However, as a > professional, console game developer (that happens to love Lisp), I > thought I'd post my feelings on this subject...
> I'm sure people will agree, disagree and agree to disagree. That's > fine. But I'd like any [constructive] feedback on the essay.
From the essay:
> Postscript. I pray this doesn't cause more posts... :)
Sorry, but I had to respond: I really enjoyed your write-up and learned a lot abbout where the bottlenecks really are in game development. Thanks for taking the time to write it. And for my part, I will now bow out of this thread...
Jeff M. wrote: > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant > on either language, so let's not start any flame wars. However, as a > professional, console game developer (that happens to love Lisp), I > thought I'd post my feelings on this subject...
> I'm sure people will agree, disagree and agree to disagree. That's > fine. But I'd like any [constructive] feedback on the essay.
At the end you state: "The only (console) development house that I'm aware of to use Lisp was Naughty Doc, Inc. for the game Crash Bandicoot."
I was under the impression that Naughty Dog used Lisp primarily for Jak (the postmortem linked to is for Jak and Daxter)) and not for Crash Bandicoot. I know that Sucker Punch also uses a Lisp for their Sly Cooper games, though from talking to them it appears to be a stripped down Lisp without most of the interactive development features that make Lisp so appealing.
Jeff M. wrote: > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant > on either language, so let's not start any flame wars. However, as a > professional, console game developer (that happens to love Lisp), I > thought I'd post my feelings on this subject...
> I'm sure people will agree, disagree and agree to disagree. That's > fine. But I'd like any [constructive] feedback on the essay.
Then, contrary to the expressed wish in your essay, it's certainly going to cause more posts, isn't it?
:-)
Your essay made me remember an interesting phenomenon I saw in one system I worked on. There were two versions of it, one in Lisp and one in C++. The display subsystem of the Lisp version was faster. There were various reasons, but an important one was GC: the C++ code copied a lot of buffers because they got passed around in fairly complex ways, so it could be quite difficult to know when one could be deallocated. To avoid that problem, the C++ programmers just copied. The Lisp was GCed, so the Lisp programmers never had to worry about it; they just passed the buffers around, which reduced both memory use and CPU cycles spent copying.
"Jeff M." <mass...@gmail.com> writes: > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant > on either language, so let's not start any flame wars. However, as a > professional, console game developer (that happens to love Lisp), I > thought I'd post my feelings on this subject...
Further down you write "most of the advantages Lisp has in processing numbers (bignums, inherent complex data types, etc) aren't used in games, anyway". I agree with this, but I do wonder whether such features don't just remain unused only because they aren't readily available. Compare this with Paul Graham not missing recursion in Basic. [1]
Overall I like your essay, but with all due respect, I seriously doubt its ability to stop any flame wars. ;)
Jeff M. wrote: > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant > on either language, so let's not start any flame wars. However, as a > professional, console game developer (that happens to love Lisp), I > thought I'd post my feelings on this subject...
> I'm sure people will agree, disagree and agree to disagree. That's > fine. But I'd like any [constructive] feedback on the essay.
Naughty Doc => Naughty Dog Seemlessly => seamlessly Upkept => isn't a word The final sentence in your 'Conclusion' section is ungrammatical.
Your abstract doesn't mention your thesis, instead it discusses why you felt compelled to write the essay.
We don't actually get your thesis until the conclusion: "Hopefully I've shown that [Lisp] is just as good as C++, and that C++ is just as good as Lisp [for games programming]."
Unfortunately, the reader isn't shown that the thesis is likely. You mention a number of factors for and against each language, but without data on the relative weightings of each, it is difficult to conclude more than "there are advantages and disadvantages to each." More concrete numbers, e.g. "As code and assets typically occupy 10% and 90% of the storage medium respectively, a 25% increase in code size reduces asset storage available by 2.8%" would help the reader weigh the probability of your argument being correct.
That's the end of my comments on the form of the essay. As to the argument itself, I think I must disagree.
It seems to me highly unlikely that two languages with such marked differences in underlying philosophy and such different typical developer use patterns would turn out to be so evenly matched in one particular domain, viz the construction of state of the art video games.
It would certainly be difficult to create an experiment or to gather numbers measuring the relative strengths of these languages in this field. But difficulty marshalling resources for a definitively persuasive argument should not tempt us to declare the contest a draw.
"Jeff M." <mass...@gmail.com> writes: > It was my understanding that GOAL was written for Crash Bandicoot and > was used on subsequent titles (like Jak and Daxter). Jak was just what > the post-mortem was on. Someone please correct me if I am wrong, > though.
No, GOAL was written for Jak and Daxter. An earlier version, called GOOL (Game object oriented language) was also written in CL (using Allegro CL) and produced output that was run on the target (PS2) with an engine written in either C or C++ (can't remember which). GOAL uses similar technology, but is a newer generation than GOOL, and not only produces the character data for the game, but also the engine.
Lisp will never win this argument. When I mentioned ND and Crash may years ago in this newsgroup, it was met with a comment like "but that's not _really_ using Lisp for games; show me a game that actually _runs_ in Lisp, and I'll be convinced". So when Andy Gavin did just that (unbeknownst to me, until he asked us for help in optimizing the compiler) - we now get "yes, but there are not enough of them to _really_ be considered as using Lisp in games". And so on, and so on...
In article <1100208063.952153.233...@c13g2000cwb.googlegroups.com>, "Tayssir John Gabbour" <tayss_te...@yahoo.com> wrote:
> Duane Rettig wrote: > > Lisp will never win this argument. When I mentioned ND and > > Crash may years ago in this newsgroup, it was met with a > > comment like "but that's not _really_ using Lisp for games; > > show me a game that actually _runs_ in Lisp, and I'll be > > convinced". So when Andy Gavin did just that (unbeknownst to me, > > until he asked us for help in optimizing the compiler) - we now > > get "yes, but there are not enough of them to _really_ be > > considered as using Lisp in games". And so on, and so on...
> Fortunately, Lisp doesn't need to "win" in the sense of beating back > the arguments of all comers. The games industry is enormously messed up > on all sorts of levels: > http://www.livejournal.com/users/ea_spouse/
Boy, just reading that made something click. At least one of the recent Roads to lisp began because some hardcore types on a game development forum periodically launch into rants on the greatness of Lisp.
Maybe GQ should be talking to them instead of us. :)
Haha! That's great. We were all just laughing at it here at my work today, in fact. We have several former EA employees on staff and they confirm every word of it. Thank goodness most development studios are not like that.
> > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a > > rant on either language, so let's not start any flame wars. > > However, as a professional, console game developer (that happens to > > love Lisp), I thought I'd post my feelings on this subject...
> Further down you write "most of the advantages Lisp has in processing > numbers (bignums, inherent complex data types, etc) aren't used in > games, anyway". I agree with this, but I do wonder whether such > features don't just remain unused only because they aren't readily > available.
I've often wondered exactly the same thing. I don't know the answer, but my gut reaction would be to say 'no', only because games are simple in nature (kids play them, so they have to be). I could possibly see some of these data types being used, like bit arrays for genetic algorithms, though.
> Overall I like your essay, but with all due respect, I seriously doubt > its ability to stop any flame wars. ;)
Thanks. And I agree, but hopefully the next time someone reads Jack Palevich's article and comes over here to post, the first reply might be the above URL and "nuf sed".
> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant > on either language, so let's not start any flame wars. However, as a > professional, console game developer (that happens to love Lisp), I > thought I'd post my feelings on this subject...
> I'm sure people will agree, disagree and agree to disagree. That's > fine. But I'd like any [constructive] feedback on the essay.
> Jeff M.
On the subject of Naughty Dog, there's a recent post from one of their guys on a mailing list which indicates that they're starting to use C++ (apparently with some hacked lisp-wannabe additions). Here's the quote...
"After using a completely custom language for our last three PS2 projects, coming back to C++ has been a pretty rude awakening. We were hoping we could work around some of the deficiencies of C++ with a good preprocessor, ideally one that provided more than symple hygienic macro substitution..."
* Duane Rettig wrote: > Lisp will never win this argument. When I mentioned ND and > Crash may years ago in this newsgroup, it was met with a > comment like "but that's not _really_ using Lisp for games; > show me a game that actually _runs_ in Lisp, and I'll be > convinced". So when Andy Gavin did just that (unbeknownst to me, > until he asked us for help in optimizing the compiler) - we now > get "yes, but there are not enough of them to _really_ be > considered as using Lisp in games". And so on, and so on...
Well, I think it depends on the definition of `win'. It tends to end up meaning `persuade people whose minds have been destroyed by various ideological cults to agree with you'. Well, you can never win in that sense, just because the people concerned (on both sides) don't have fully functioning minds, and so *can't* be persuaded. I'd rather see an alternative definition: `make loads of money'.
G.A. wrote: > "Jeff M." <mass...@gmail.com> wrote in message > news:1100192102.902194.179800@c13g2000cwb.googlegroups.com... > > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a > > rant on either language, so let's not start any flame wars. > > However, as a professional, console game developer (that happens to > > love Lisp), I thought I'd post my feelings on this subject...
> > I'm sure people will agree, disagree and agree to disagree. That's > > fine. But I'd like any [constructive] feedback on the essay.
> > Jeff M.
> On the subject of Naughty Dog, there's a recent post from one of > their guys on a mailing list which indicates that they're starting to > use C++ (apparently with some hacked lisp-wannabe additions). Here's > the quote...
> "After using a completely custom language for our last three PS2 > projects, coming back to C++ has been a pretty rude awakening. We > were hoping we could work around some of the deficiencies of C++ with > a good preprocessor, ideally one that provided more than symple > hygienic macro substitution..."
Do you have a link? I'd like to put that into the essay.
> > "Jeff M." <mass...@gmail.com> wrote in message > > news:1100192102.902194.179800@c13g2000cwb.googlegroups.com... > > > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a > > > rant on either language, so let's not start any flame wars. > > > However, as a professional, console game developer (that happens to > > > love Lisp), I thought I'd post my feelings on this subject...
> > > I'm sure people will agree, disagree and agree to disagree. That's > > > fine. But I'd like any [constructive] feedback on the essay.
> > > Jeff M.
> > On the subject of Naughty Dog, there's a recent post from one of > > their guys on a mailing list which indicates that they're starting to > > use C++ (apparently with some hacked lisp-wannabe additions). Here's > > the quote...
> > "After using a completely custom language for our last three PS2 > > projects, coming back to C++ has been a pretty rude awakening. We > > were hoping we could work around some of the deficiencies of C++ with > > a good preprocessor, ideally one that provided more than symple > > hygienic macro substitution..."
> Do you have a link? I'd like to put that into the essay.
> Jeff M.
Here. Remove the 'JEFF's from the link which I've added to keep spiders away...
> Boy, just reading that made something click. At least one of the recent > Roads to lisp began because some hardcore types on a game development > forum periodically launch into rants on the greatness of Lisp.
It is now two years later to the day, and all my ambitions of working 60-80 hour weeks in a cubicle of some game development house hacking C++ have melted away. Does any one sell "Lisp shattered my life-long dreams" T-shirts? ;)
>> Further down you write "most of the advantages Lisp has in processing >> numbers (bignums, inherent complex data types, etc) aren't used in >> games, anyway". I agree with this, but I do wonder whether such >> features don't just remain unused only because they aren't readily >> available.
> I've often wondered exactly the same thing. I don't know the answer, > but my gut reaction would be to say 'no', only because games are simple > in nature (kids play them, so they have to be). I could possibly see > some of these data types being used, like bit arrays for genetic > algorithms, though.
I was thinking on a larger scale. Common Lisp's built-in data structures are very nice, but that's just one small piece of the puzzle.
Way back when Lisp was young (and was still called LISP) people were using it for things that were absolutely inconceivable in other languages of the time. All that despite these languages all being Turing complete and thus "equivalent in power".
Nowadays, the other language camps have a huge advantage in numbers, and have stolen some bits and pieces from Lisp here and there, allowing them to also pull off incredible feats.
I am very interested to see whether or not, and to what extent, an advantage in language outweighs an advantage in numbers. Can Lispers create really good games that would not be reasonable to create in C/C++/Java/C#? I don't know, but I'd rather try then torture myself with C++ any longer.
>> Overall I like your essay, but with all due respect, I seriously doubt >> its ability to stop any flame wars. ;)
> Thanks. And I agree, but hopefully the next time someone reads Jack > Palevich's article and comes over here to post, the first reply might > be the above URL and "nuf sed".
On Fri, 12 Nov 2004 15:08:03 GMT, Dirk Gerrits <d...@dirkgerrits.com> wrote:
> It is now two years later to the day, and all my ambitions of working > 60-80 hour weeks in a cubicle of some game development house hacking C++ > have melted away. Does any one sell "Lisp shattered my life-long > dreams" T-shirts? ;)
> Kind regards,
> Dirk Gerrits
Naw, but I have a "I lost 10 years of my life to C++" T shirt :)
>>Boy, just reading that made something click. At least one of the recent >>Roads to lisp began because some hardcore types on a game development >>forum periodically launch into rants on the greatness of Lisp.
> It is now two years later to the day, and all my ambitions of working > 60-80 hour weeks in a cubicle of some game development house hacking C++ > have melted away. Does any one sell "Lisp shattered my life-long > dreams" T-shirts? ;)
However, working 60-80 hours a week hacking Common Lisp is hardly a solution :)
"G.A." <smNOecklSPAM...@hotmTHANKSail.com> writes: > "Jeff M." <mass...@gmail.com> wrote in message > news:1100192102.902194.179800@c13g2000cwb.googlegroups.com... > > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant > > on either language, so let's not start any flame wars. However, as a > > professional, console game developer (that happens to love Lisp), I > > thought I'd post my feelings on this subject...
> > I'm sure people will agree, disagree and agree to disagree. That's > > fine. But I'd like any [constructive] feedback on the essay.
> > Jeff M.
> On the subject of Naughty Dog, there's a recent post from one of their guys > on a mailing list which indicates that they're starting to use C++ > (apparently with some hacked lisp-wannabe additions). Here's the quote...
> "After using a completely custom language for our last three PS2 projects, > coming back to C++ has been a pretty rude awakening. We were hoping we > could work around some of the deficiencies of C++ with a good preprocessor, > ideally one that provided more than symple hygienic macro substitution..."
It's interesting to see someone who _wants_ to get away from Lisp actually _complain_ about deficiencies in his language of choice. But perhaps that is not the case here; perhaps this particular developer has a pro-lisp bent anyway.
We've had a lot of experience with customers moving away from CL; we do our best to make sure that it wasn't something we did or did not do, but then we just say goodbye without stressing over it, they need to do what they need to do. We had a sales manager many years ago that would say "OK, goodbye; I'll see you in a year or two" and many times, sure enough, we'd see them back again after a failled attempt to go back to C++...
Sometimes they do not actually _leave_ CL, but just run some parallel development on another language, "just in case".
Tim Bradshaw <t...@cley.com> writes: > * Duane Rettig wrote: > > Lisp will never win this argument. When I mentioned ND and > > Crash may years ago in this newsgroup, it was met with a > > comment like "but that's not _really_ using Lisp for games; > > show me a game that actually _runs_ in Lisp, and I'll be > > convinced". So when Andy Gavin did just that (unbeknownst to me, > > until he asked us for help in optimizing the compiler) - we now > > get "yes, but there are not enough of them to _really_ be > > considered as using Lisp in games". And so on, and so on...
> Well, I think it depends on the definition of `win'. It tends to end > up meaning `persuade people whose minds have been destroyed by various > ideological cults to agree with you'. Well, you can never win in that > sense, just because the people concerned (on both sides) don't have > fully functioning minds, and so *can't* be persuaded. I'd rather see > an alternative definition: `make loads of money'.
But if you mean "everyone makes loads of money", then the only such schemes like that are called "get rich quick" schemes. And if you mean "some people make loads of money", then Lisp has already "won".
> And frankly, seeing what's going on in my nation, I am frankly not > surprised that people will actively work against their own > self-interest, believe the most hyper-simplified binary versions of > reality, and so forth.
"John Thingstad" <john.things...@chello.no> wrote in message <news:opshczwkc1pqzri1@mjolner.upc.no>... > On Fri, 12 Nov 2004 15:08:03 GMT, Dirk Gerrits <d...@dirkgerrits.com> > wrote: > > It is now two years later to the day, and all my ambitions of working > > 60-80 hour weeks in a cubicle of some game development house hacking C++ > > have melted away. Does any one sell "Lisp shattered my life-long > > dreams" T-shirts? ;)
> Naw, but I have a "I lost 10 years of my life to C++" T shirt :)
I should think about making a t-shirt pointing out there's two common language families: the Lisp family, and the LOOP family. ;) The way I deal with programming less expressive languages is to think, "Well, I'm programming using the Loop macro," and suddenly it's the same silly fun as making a LOOP. You know, all these naming ceremonies... "I dub thee tmp1!"
Thank you for the comments (and the spelling mistakes... no matter how many proof reads are done, there's always one more to find).
I understand your request for numbers, but, to be honest, I don't really have the time to try and pump out a mini-game for each, but a co-worker and I have thought about doing it for a "show and tell" argument. The difficulty in doing this is that (as you say) patterns used for each -- even if they were the same end product -- would be very different. Enough so, that perhaps a benchmark would be useless. Then again, this may be exactly the kind of benchmark that is needed.
What I find most difficult to discuss in the essay are the differences in programming styles, and how that would affect the final product. Lisp programmers would (hopefully) take advantage of many things available to him/her that a C++ programmer wouldn't. I wasn't attempting to claim a draw between the two languages anywhere except game-side, in terms of graphical performance. There is so much more to game development other than this (tools, scripting, level design, the list goes on), and that was a point I tried to stress. These are the areas where one language will outperform another (but not necessarily in all areas). Perhaps that didn't get stressed enough. Thanks for taking the time to read and reply.
Some technical comments (I think the rest of the article is pretty good on it's own merits (that is, disregarding all the flame-wars going on right now)):
"Lisp, on the other hand, doesn't need an interpreter. It can just run Lisp code that is stored on the disk (and even compile it at load time for more speed)."
Well, Lisp can also compile code into binary files too. One thing you should also mention is that the structure of most Lisp runtimes permits them to dump the entire application memory image to disk very quickly. Depending on how large the image is and what portion of it is static, this may be a good way to do save games (at least on systems with hard-drives).
I think Lisp's dynamism and malleability is the one thing that not even Greenspun's Tenth can provide an ersatz for. Shiro Kawai wrote an excellent pair of articles on how Lisp and Allegrostore were used for production tracking at Square films that made an impression on me (change-class totally kicks ass), and that I think are relevant to the more general problem of game production pipelines as well: http://www.lava.net/~shiro/Private/essay/gdc2002.html http://www.shiro.dreamhost.com/scheme/docs/jlugm2000.html
I think Lisp numerical mini-languages such as the one used in the Toolkit can be a very big win over C++ in terms of performance, especially on vectored processors. It almost pains me to think of all the effort wasted on trying to squeeze out parallelism from for loops by vectorizing C compilers.
> > And frankly, seeing what's going on in my nation, I am frankly not > > surprised that people will actively work against their own > > self-interest, believe the most hyper-simplified binary versions of > > reality, and so forth.
> I'm curious--what is your nation?
US. I think the main presidential candidates were too similar, and neither offered people what they really needed; unless distractions are what we need.
What is there to say; politicians are salesmen whose currency is votes. MfG, Tayssir
Quoth Tayssir John Gabbour on or about 2004-11-13:
> US. I think the main presidential candidates were too similar, and > neither offered people what they really needed; unless distractions are > what we need.
I feel sorry for Bill Van Auken -- more people voted `None of the Above' than for him. Only 2078 votes from the whole of .us, poor bastard.