WAAVScript – Part 1, Motivation

Is that a “digital me”? Have we hit “peak programming”? Well, we certainly have not reached the end of automation by any means. After 40+ years of programming, I do believe we’ve reached a level where our understanding of computation, algorithms, and data structures, has reached a certain plateau. We are currently experiencing the second “rise of AI”. The first rise was during the 1980s and 90s, and saw lots of explorations such as Lisp, Prolog, even Object Oriented. We even already had ‘neural nets’, ‘expert systems’, ‘back propagation’, and the like. The machines of that time just weren’t capable of delivering on the promise.

Roll forward 30 years, and we’re in the age of the LLM. Still no ‘intelligence’, the thing even admitted as much, but they can deliver quite a lot of productivity gains when wielded by the right hands.

So, what does this have to do with WAAVScript? Well, it is about motivation. Over the 40 years that I’ve been programming, I’ve seen a lot of languages come and go. I started by looking at Fortan printouts, even before I knew what programming was. Then onward to 6502 machine/assembly, then BASIC, Pascal, C, Forth, Python, Objective-C, Java, JavaScript, SQL, Quel, Lua, C#, C++, Postscript, Cobol, Ada, Modula, SmallTalk, and probably a couple I’m forgetting. In all those years, and all those languages, clear patterns have emerged, and they’re baked into the very fabric of current processor designs.

Today’s processors have a fairly standard design. For CPUs at least, there’s memory, registers (special form of memory), stack, and that’s about it. then there’s all the myriad instructions, but they all amount to things like ‘push something to the stack’, ‘push something to a register’, ‘pull something from memory’, perform some computation. There are myriad instructions sets, dozens of processors, big and small, but they all amount to this.

And so, in the age of AI, it seems to me, once the machinery can truly understand these fundamentals, my task of “programming” in the traditional sense, is finished. Right now, through various languages, I translate my ideas from a spec, or from my head, into intermediary languages, which then ultimately just turn that into the very simple instruction set these CPUs understand.

Well, enter WAAVScript. This might be the last programming language I ever learn. Why? Because I’m writing it to encapsulate my accumulated knowledge of programming, so that I can teach it to an AI, so I will never have to “write” code again. Right now the task of getting a ChatGPT, or other tool, to understand how to program is tedious, laborious, error prone, and just downright wasteful. For a senior programmer, it’s probably easier and faster to just write the code yourself, even though the LLMs save you a ton of time on boilerplate kind of stuff. But as far as providing novel insights, and actual new discoveries, it’s far too hard. I want to change that. I want to use a language to truly teach the AI, to be my ‘digital me’.

WAAVScript has started as a mimic of PostScript, made famouse by Adobe. But, even Postscript itself is based off Forth, which was probably the first stack based programming language. Forth is interesting because it’s really simple to understand and implement. A simple stack based machine, with a few key data types, and an ability to construct paradigms you want in terms of data structures, algorithms, data encapsulation, and the like. A Forth is interesting, because it’s so small and simple, it can fit any size of machine, down to microcontrollers. I think this is an important point, as I want to have a language that can find its way down to running on a microcontroller running a motor on a CNC, all the way up to a rack of computers managing hundreds of cameras in a warehouse, and everything in between.

WAAVScript needs to be really small. It needs to be really efficient. It needs to be easy to maintain, easy to extend. These are the basic requirements. On the efficiency front, I’m really talking about energy required to perform any single operation. If it’s to run on really small stuff, that stuff might be battery operated. I want it to be efficient enough to allow such systems to run months on end if possible.

OK, so what is it, how is it constructed. Let’s start from the very beginning.

Previous
Previous

WAAVScript – Part2, Scanning for Tokens

Next
Next

WAAVScript – The birth of a language