Why Atom?

Whenever a new programming language pops up, the natural question is "What's the point?" Many times a person or group builds a new programming language for the purpose of creating a paradigm shift such as the D programming language. The creator may have a vision and a new language is a chance to pursue the dream and generate income at the same time. Maybe the developer sees a niche that has not been filled and is trying to fill the void, such as in the Parrot Virtual Machine . Many times though, it is simply a vehicle for the author to create something new and enjoys sharing the experience with other like-minded users, such as in wxBasic.

Atom falls into the last category. In fact, Atom owes its beginning to the creator of wxBasic, David Cuny. Being an avid user of wxBasic and watching with interest David re-write the language, I was inspired to create my own little programming language. Through David, I discovered the Parrot Virtual Machine and was struck by both the simpliciRy and power of the system. I thought it would be both instructive and fun to try my hand at creating my own Virtual Machine, Atom.

Some may wonder why I am calling my little language Atom. Atoms are the building blocks of all matter in the universe, and since the Atom VM is a building block for me in learning to create my own language, I thought the name was appropriate.

I have no aspirations (or illusions) that Atom will create any paradigm shift, will generate any income for me, or will be all that useful, in the final analysis. Rather, Atom is an adventure, a personal exploration into an area that I have not yet explored in the realm of programming. If it turns out that Atom ends up being useful, or acquires some fans, then that will be a very happy and welcome side effect. On the other hand, even if no one ends up using Atom other than me, it has still served it purpose of personal exploration and growth.

That being said, I do have definite goals for Atom. The first goal is to create a virtual machine that is independent of any particular high-level language. The language of the Atom VM is Atom Assembler, an Assembler-like, high-level language. This will enable any number of high-level languages to be created that can be compiled into Atom bytecode that the VM can run. This is the initial goal at least. Time will tell whether this turns out to be feasible.

Once the VM is running properly I plan on creating a higher level language that will use the VM. I haven't really worked out details on this yet, but it is on the list. It is the natural next step after the VM is working, and will offer some new territory for me to explore.

In strictly technical terms, Atom is not going to have any advantages over other, more mature programming languages. I might come up a novel idea to implement, but I would not hold my breath! That is not the purpose of Atom. Atom is an adventure, one that I am willing to share with others. Together, we may learn some new things, and after all, isn't that the point?