10.20.2010

Enough for now

I found a book called "Practical Common Lisp" and read some pages through the first chapters. It is a rather useful book because it also explain how Lisp treats it's data without having substantial knowledge gaps. I started to read a lot of tutorials, but they don't really tell me exact work behind a Lisp compiler/interpreter and simply don't guide you well. This time it was different. I even forgot an IM conversation I had started before and to my surprise I actually read so concentrated and captured that 40 minutes later I heard to logout sound of conversation partner cause I simply forgot him. That's a good sign for a reader, it signals that your book is worth reading.
I'll try to find an english copy of it. I don't want to read another bad german translation - keep material close to the source and you get what was originally written, not what another translator thought was a better term for it.

In addition, Lisp is getting more and more interesting. The book started with general syntax without using it's later necessary keywords. And even during this stage I soon realized how well you can create functions and data if with some internal list manipulation operations. And this is essentially what I want to do. I haven't discovered any other use of Lisp than creating code dynamically, but this is what Lisp is about, I think. I don't know anything else about, so I'm pleased to get more indepth information about it. The more I read about it, the more I get an idea how useful it could be for me. And what I learned so far makes it quite useful.

Though I understand why it's syntax and evaluation system is great for everything, I'll have to rewrite all my code. I don't really like this, but better rewrite once in a more elegant and save environment than a dozen of times with too many possibilites so simply let it fail or be crippled. That's the main reason I'm learning Lisp and also the main reason why game should be written in Lisp. I see my happyness about C++ wander  away since I can't quite get stuff like I want. What's left back is C. I know how to write everything I'm coding C without much trouble. It's just very fixed and not so convenient to simplify code as it is in C++. But thinking about it, both three languages are useful for something and C++ is definitely more useful for making applications with a know way to solve. So often I was annoyed by the fact that I'll have to rewrite my complete code again just because I changed a method to work better in all cases. Maybe this will change with Lisp. In all cases I'll be able to finally create my generalization to a more interesting structure. Not sure if I told it here before, but as I created a strongly generalized tracer calls for all kinds of problems involving heavy multidimensional array work and even more specialization in many many cases (like different modes for rendering sprites or polygons or image analysation), I started to work on a generalization for one-dimensional arrays with static size. This is useful for creating 3D position classes, RGB/RGBA/HSV color formats, arrays with comparison data between them, etc. It's kinda reversed version of my tracer class: a tracer is to cover a dynamic area in a randomly sized array and do operation on region defined by a more specialized tracer to finally only apply the necessary formulas and callbacks defined by another further specialized tracer. The static variant will work in a similar way, but just with direct inline insertion. So I'm having my tracer for random, n-dimensional data and the other class for static data. If I think about, I could also make an n-dimensional version of the static variant. Hm, I could also put them all into on class and select wether to insert it directly or dynamically...

Well, whatever comes to my mind, I'm optimistic that Lisp can do this. Most of the code in game requires heavy multimensional array-based work, so it's quite obvious that I need a flexible system that also incorperates the mix other higher and lower dimensions. The more I think about how much possiblities is in just these few pages I read, the more I can free my mind to think about an essentially totally unified system. Wow. It feels good to not limit my thoughts to such fixed concepts. If everything works right, I'll focus on this multidimentional class construct to make me ready for everything possibly to come. I feel there's a big and unexplored area of consciousness I'll be able to reach some time.

That's the most Zen-powered post I ever wrote. Geez.

No comments: