Lisp Macros in Awesome Sauce Java

Well, last night I put the macro calls in the right place and made them work.  Initial tests are solid.  Code looks good.  I'm shocked.  Not because I lack confidence.  I may be kind of broken, but I've written device drivers, medical CAD, memory managers, a bunch of apps, and software that might be considered challenging.

But macros are different.  Maybe they're a little tricky, but once I got where they went and what they did?  I got them.  I was slow to get to understanding, but I knew I'd sort them out.  It's maybe more the beliefs I've had about writing a Lisp implementation, much less a Lisp implementation that's Java-based, merging both Java and Lisp into one language.

For 17 years, I thought about writing a Lisp.  The more I used and learned Lisp, the bigger and more complex the language seemed to be.  While I hoped to one day have the opportunity to write a Lisp, it felt like a huge undertaking, one that would push me to the edge of my abilities and beyond.

Maybe it's because books like OnLisp exist.  Maybe it's because reading smart people on comp.lang.lisp describing writing a parser in 30 minutes before bedtime.  Maybe it's because all I'd coded in were C, C++, Java, and other languages - other people's creations.  Maybe it's because I didn't go to college.

Whatever the reason writing a Lisp felt almost untouchable, it felt like a lot of reasons suggesting there were better ways to spend my time.  It's ironic that what started Awesome Sauce Java was the desire to make just a little language for a scientific calculator.  While it allowed me to start, the language wouldn't be even half the size, with even 1/4 the capabilities, if it wasn't for the design of the internals that I'd love to say I meant to do, but it was more just one of many happy accidents that I blindly stumbled into.

I mean, I knew why I didn't want to design it like a normal Java project, with classes and methods like all the other apps I'd built and seen.  I knew I couldn't build a large program on top of normal OOP strategies, because they don't work.  They lead to confusion, bugs, limitations.  All I knew was what I'd thought, "No way I'm going down that road *again*."  So I chose a different path.

It turns out the path allows a lot of good things to fall in place, plus it's thread-safe.  Now, it allowed macros to happen.  I'm going off to test them and can't wait to mix Java with Lisp for the purpose of making more expressive code with the risks and benefits macros offer.  It'll be a nice perspective to know that with effort, it was possible to make them work.  Especially since I never thought I would ever.  It's like being shown that with effort, anything good is possible.

Maybe after I test macros and get HTML a little further along, I'll take the time to finish the crowd funding campaign I've been trying to sort out.  I haven't been able to put a good presentation together for Awesome Sauce Java - not at all.  They've all been comically bad.  Maybe with a little confidence and effort, I can put a good foot forward for others to see what Awesome Sauce Java is and why they might want to consider helping to fund it.  I hope so.  I'm not building it just to build it.  I'm building it to make tools that empower us to do more in less time and with less energy.  I hope that resonates with others.

Have a great day!
Michael

Comments

Popular posts from this blog

I Was Studying Exceptions, But Got Confused, So I Luckily Designed The Code Editor Instead

Just a Short Update

A Day Away From a Glowing Screen