> besides the company that did crash bandicoot on the PS1. And even that one I'm unsure of as I feel it's been mythologized with how often it's pointed to.
Well, good instincts, because it wasn't. Naughty Dog used Lisp to write a compiler for an s-expression based C-like language called GOAL (it was kind of a macro-assembler with a register allocator). The reason for using s-expressions was to get a syntactic macro system at compile time.
The game engine was written in this GOAL language. There was no list processing (car, cdr) or garbage collection happening on a PS2, only during compilation in macro-expansion.
I know less about GOOL, but the following seems to imply that GOOL was probably also a s-expr based non-Lisp language:
> As a language GOOL borrows its syntax and basic forms from Common Lisp. It has all of Lisp’s basic expression, arithmetic, bookkeeping, and flow of control operators.
Note that Andy explicitly only mentions things like syntax and arithmetic, but not any kind of list processing. Again, I am not sure, but I wouldn't be surprised if GOOL isn't a Lisp either, but only a Lisp-flavoured DSL for event-based AI code.
What would be the defining characteristics of Lisps, that separate them from other languages? Surely it can't be simply s-exps, since that is pretty much all GOAL and Lisps share. Would a C written in the form of s-exps qualify as a Lisp?
Io and Rebol both have homo-iconicity and a macro system. Would you call them a Lisp? No wonder Lisp is the most powerful language in the world, when all powerful languages are secretly Lisp – without even knowing it!!!
I mean, the name "Lisp" is short for "List Processing", it's disingenuous to claim that Lisp doesn't need runtime List Processing.
Lisp needs list processing. But it's much more. Lisp has several kinds of numbers, symbols, strings, characters, vectors, arrays, hash tables, records, classes, objects, natively compiled functions, ... -> and all those are not made of lists. An array in Lisp is not made of lists underneath. A natively compiled function is not a list, it's a vector of machine code.
Putting aside the sarcasm, don't mistake Lisp from 1960 with what came after.
"First released in 1997, Rebol was designed over a 20-year period by Carl Sassenrath, the architect and primary developer of AmigaOS, based on his study of denotational semantics and using concepts from the programming languages Lisp, Forth, Logo, and Self. "
"Io is a pure object-oriented programming language inspired by Smalltalk, Self, Lua, Lisp, Act1, and NewtonScript.[2] Io has a prototype-based object model similar to the ones in Self and NewtonScript, eliminating the distinction between instance and class. Like Smalltalk, everything is an object and it uses dynamic typing. Like Lisp, programs are just data trees. Io uses actors for concurrency. "
Exercise for the reader how much from e.g. Common Lisp might be found in IO or Rebol.
Well, good instincts, because it wasn't. Naughty Dog used Lisp to write a compiler for an s-expression based C-like language called GOAL (it was kind of a macro-assembler with a register allocator). The reason for using s-expressions was to get a syntactic macro system at compile time.
The game engine was written in this GOAL language. There was no list processing (car, cdr) or garbage collection happening on a PS2, only during compilation in macro-expansion.