Lambda the Ultimate

inactiveTopic Lisp powers Jak & Daxter at Naughty Dog
started 3/11/2003; 7:03:07 AM - last post 3/12/2003; 5:11:53 PM
Noel Welsh - Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/11/2003; 7:03:07 AM (reads: 2547, responses: 7)
Lisp powers Jak & Daxter at Naughty Dog

An interesting success story for a DSL in a very demanding environment.

What is GOAL?
  • GOAL is our custom compiler based on Lisp (well, actually Scheme).
  • Practically all of the run-time code (approximately half a million lines of code) was written in GOAL.
  • Only the IOP code and a small amount of kernel code was written in C.

Posted to DSL by Noel Welsh on 3/11/03; 12:43:39 PM

James Hague - Re: Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/11/2003; 10:06:41 AM (reads: 1417, responses: 2)
The "A" in GOAL stands for "assembly." My take on GOAL is that if it didn't use s-expressions, people would be much less inclined to compare it with Lisp or Scheme. It expect it has enough low-level, imperative constructs to horrify most Schemers.

That said, I think it's extremely cool, and shows that Lisp is a fantastic environment for developing compilers. I have such a hard time dealing with Lisp's foibles after being exposed to Erlang, though :-)

John Fraser - Re: Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/11/2003; 2:27:28 PM (reads: 1363, responses: 0)
Lisp is an great language for implementing DCLs, even if you have to disguise it as XML first. I recently created a lisp-like interpreter for migrating data from legacy systems. It greatly reduced the time to move data from a highly normalized system to a normalized system and it took only a few hours to train the staff on how to use. Some of them weren’t even programmers.

Ehud Lamm - Re: Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/12/2003; 3:03:20 AM (reads: 1312, responses: 0)
I have such a hard time dealing with Lisp's foibles after being exposed to Erlang, though

Please elaborate :-)

James Hague - Re: Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/12/2003; 7:49:19 AM (reads: 1242, responses: 1)
I think most of it has to do with the ease of Erlang's pattern matching syntax (similar to most functional languages) and method of introducing locals (similar to Python), combined with my personal annoyance at the baroqueness of local variables in Lisp via LET. Not only do you need more local variables in Lisp, but they're more awkward to introduce.

Noel Welsh - Re: Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/12/2003; 8:32:36 AM (reads: 1283, responses: 0)

I read the Gamasutra article referenced from the UseNet post and it appear it isn't too low-level. They given an example of code they hopefully won't mind me repeating:

  (dotimes (ii (num-frames idle))
    (set! frame-num ii)
    (suspend)
)

Not too imperative. Note that use cooperative multitasking (hence the suspend. Also note they allowed inline assembly, using there VM opcode, not the CPUs native op codes (the PS2 has 5 processors). This is really clever as it enables portability over the different processors and gives the speed boost you'd get from native assembly (assuming the VM is defined quite close to the hardware level; no reason it shouldn't be.) This ability to switch levels is something lacking from almost all programming languages.

Other things they talk about are the benefits of macros, and the costs of having one wizard implement the system, who then becomes a bottle-neck on improvments. Sounds like they need to hire some LtU readers!

Noel Welsh - Re: Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/12/2003; 8:34:23 AM (reads: 1283, responses: 0)
This is OT, so in brief: check out http://download.plt-scheme.org/doc/203/html/mzlib/mzlib-Z-H-19.html#%_chap_19 for how you do pattern matching in Scheme.

Darius Bacon - Re: Lisp powers Jak & Daxter at Naughty Dog  blueArrow
3/12/2003; 5:11:53 PM (reads: 1169, responses: 0)
James, I worked on a Lisp dialect at JPL with pattern-matching and more-or-less Python-style locals, called Quirk. (Ed Gamble was the main designer.) It's a pleasant way of coding, yeah -- I wish the language were available.