5 ms·
> ... AAA video games? Yes. One of my favorite stories of the ideas of lisp commercially is a dialect that Naughty Dog developed for their game development. I
by spicybright 5y ago
> ... AAA video games? Yes.
One of my favorite stories of the ideas of lisp commercially is a dialect that Naughty Dog developed for their game development.
It started as being developed for Crash Banicoot on the PS1.
Which is really interesting given how limited the system was (1mb to 2mb of ram depending on what you were doing with the system!)
They later iterated on it for Jak and Daxter on the PS2. To quote the wikipedia page:
> GOAL does not run in an interpreter, but instead is compiled directly into PlayStation 2 machine code to execute.
> ...
> GOAL has extensive support for inlined assembly language code using a special rlet form,[1] allowing programs to freely mix assembly and higher-level constructs within one function.
> ...
> It supports a long term compiling listener session which gives the compiler knowledge about the state of the compiled and thus running program, including the symbol table. This, in addition to dynamic linking, allows a function to be edited, recompiled, uploaded, and inserted into a running game without having to restart.
[https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp]
I almost don't believe it, honestly.
In most modern engines I've used we STILL struggle hard for a perfect live-reload system.
I've implemented many types of custom interfaces that let you tweak things on the fly in my games, and it's almost criminal how much better/productive it feels vs. the 'tweak, compile, test' loop we're usually stuck with.
All that said, I see the same reason of why companies always transition away from lisp all the time:
> In all honesty, the biggest reason we're not using GOAL for next-gen development is because we're now part of Sony. I can only imagine Sony's shock when they purchased Naughty Dog a few years back, hoping to be able to leverage some of our technology across other Sony studios, and then realized that there was no way anyone else would be able to use any of our codebase.
It really makes me wish some big company would make a python clone in lisp, but put a tiny escape hatch in to fully utilize the lispy parts.
- adgjlsfhk1 5y agothat's basically Julia. take lisp, remove the s expressions and add a bunch of really good math libraries and you've just reinvented Julia.
- medo-bear 5y agothere was dylan before julia, so julia might just be reinventing dylan :) but that's not what's interesting the julia project is in fact very interesting to me and has a great team developing its ecosystem and i work with it alongside python for numerical work. however one key drawback (compared to common lisp) for me is that it is not self-compiled. it is hosted on llvm and over 30% of its repository is in another language (mainly C and C++)[0]. but i am saying this only in comparison to common lisp. other languages are not different to this, and are much worse. as far as scientific computing is concerned, i would work with julia over python any day [0] https://github.com/JuliaLang/julia https://github.com/JuliaLang/julia
- adgjlsfhk1 5y agoIt would be really cool to make Julia self hosting. The easiest non-julia in Base to replace is the parser which currently is in femtolisp. Most of the c++ code is just LLVM which we keep our own copy of because Julia has pretty specific LLVM version requirements that OS provided versions are unlikely to satisfy. Getting the C code out would be interesting since it's difficult to bootstrap a language that doesn't like being ahead of time compiled, but it would be a cool project.
- eigenspace 5y agoCan I ask why it matters to you whether or not julia is self hosting?
- medo-bear 5y agobecause i want to be able to to go turtles all the way down with my code. julia being hosted on llvm does not provide that. if you want to do optimisations in julia you must learn llvm[0]. in this sense hosted languages are always a front-end. common lisp is not this [0] https://docs.julialang.org/en/v1/devdocs/llvm/ https://docs.julialang.org/en/v1/devdocs/llvm/
- eigenspace 5y ago
- fmakunbound 5y ago> It really makes me wish some big company would make a python clone in lisp, but put a tiny escape hatch in to fully utilize the lispy parts. It’s not from big company but that describes clpython: https://common-lisp.net/project/clpython/index.html https://common-lisp.net/project/clpython/index.html
- vindarel 5y agofor escape hatches, see cl4py: https://github.com/marcoheisig/cl4py/ https://github.com/marcoheisig/cl4py/ and the other way around, calling Python from CL: https://github.com/bendudson/py4cl/ https://github.com/bendudson/py4cl/
- gilch 5y agoHissp is a Lisp clone in Python, with a tiny escape hatch to fully utilize the Python parts. https://github.com/gilch/hissp https://github.com/gilch/hissp