Re: [Algorithms] Complexity of new hardware
Brought to you by:
vexxed72
|
From: Pal-Kristian E. <pal...@na...> - 2009-04-22 00:44:23
|
Nicholas "Indy" Ray wrote: > On Tue, Apr 21, 2009 at 12:43 PM, Pal-Kristian Engstad > <pal...@na...> wrote: > >> Goal was a great system - one that we still greatly miss. If we had to make >> a Goal2, then we'd probably: >> >> Use an SML-ish or Scala-ish surface syntax, while trying to retain the power >> of Lisp macros. >> > > Is there any reason you would choose against S-Expressions? I don't > know about Scala, but I find SML syntax to be a little less > maintainable for large systems and a lot less usable for Macros; Is > this mostly a choice of preference by the team, or perhaps you think > it'd be easier to get new employees to learn? > Indeed. Most game-programmers and to some extent game designers, want to work on a lot of 3D math. This requires quite a bit of math and using infix notation for this is definitely mind-boggling, even for seasoned Lisp/Schemers. The second reason is that s-expressions work well for expressions, but for sequencing, the syntax is less than stellar. The third reason is that it is quite possible to have strong macro systems (see e.g. Dylan and to a certain extent OCaml) without s-expressions. And finally, as you mentioned, it does take new employees a rather long time to get used to it. >> Introduce stronger typing features, which is difficult, given the need for >> REPL and hot updates. >> Do more in terms of high-level optimization, though LLVM might negate the >> need for some of that. >> > > LLVM is rather quite nice, and while it'll take some infrastructure, > and certainly a resident compiler instance, I don't suspect that hot > updates would be too much of a problem with a better typed (likely > type inferred) programming language. > The devil is in the details, I am afraid. As an example (and I'm not saying this is impossible with static type checking), in a completely dynamic setting it is quite feasible to: introduce new fields in a data structure (compile and send to game), edit (static) data that uses the data structure (compile and send to game) and finally compile functions that reference the data structure and send it to the game (at which point the new data is actually used). I know AliceML has a solution to this, but from what I've heard, it was quite a challenge. PKE. -- Pål-Kristian Engstad (en...@na...), Lead Graphics & Engine Programmer, Naughty Dog, Inc., 1601 Cloverfield Blvd, 6000 North, Santa Monica, CA 90404, USA. Ph.: (310) 633-9112. "Emacs would be a far better OS if it was shipped with a halfway-decent text editor." -- Slashdot, Dec 13. 2005. |