Skip to content

Latest commit

 

History

History
35 lines (20 loc) · 3.61 KB

File metadata and controls

35 lines (20 loc) · 3.61 KB
title Q & A

Why did you create Ghost?

This is an entirely selfish project, brought on by the desire to learn how programming languages work under the hood. I'm a professional developer, and work with many languages (primarily PHP) throughout the day. I continue on writing code, accomplishing tasks, building libraries and platforms without actually understanding what's going on "underneath". I know computers are logical machines and are incredibly fast. Millions and millions of computers are flipping 0's to 1's and back to 0's non-stop to power the world we live in.

I just so happened to come across Crafting Interpreters after a quick google search "create a programming language" (or something like that) and instantly got hooked. I decided to torture myself and skip over the java interpreter implementation and dove head-first into createing the C bytecode virtual machine.

I'd be a liar if I said the majority of the code here is all mine. It's not. Maybe 0.5% of it is "mine". The rest comes straight from the book and the mind of Bob Nystrom. I'm slowly making my way through the book and massaging the language into what I'd like Ghost to be.

Over time, I do hope that I will one day fully understand everything that's going on. But until then, I'll continue adding and changing small things here and there as I wrap my brain around it all. I do have some ambitious goals here, because the programming language is just the tip of the iceberg in modern-day systems. There are entire ecosystems around languages. Common libraries, package managers, editor color syntax support, and more. I hope to tackle each of these with time.

What's behind the name?

Ghost was initially going to be called "Adascript," but after much thought decided to not go that route as I didn't want it to be confused with the Ada programming language.

I also didn't want to introduce another Java/JavaScript type pairing in the world 👻

None-the-less, Ada Lovelace and Alan Turing were the two influential people for the concept behind the language. Or At least, the naming aspects of it. The idea was to create a language that would sort of play on history. Having a language called "Adascript" that was Turing complete seemed magical.

So, given the quandaries of using "Adascript" as a name for this language I'm wanting to create, I had to come up with a new name.

Oh boy.

Naming things is half the battle when it comes to programming (I'm sure you can apply that to other fields as well). I didn't want an abstract name to give it, like a single letter. I didn't want to piggyback off another language's name. I wanted this language to have a personality. A character. Something that could embody it and make it feel alive. Even though programming languages are something completely made up and intended to be generalized, in some sense, they still seem to come out with certain quirks. Some languages play off of this, even if its just at the surface of the language; such as PHP and it's elephant. Others take it a little further, like Go and its Gopher embodiment.

One of the driving factors and themes behind my interest in computers and programming, is artificial intelligence. I definitely knew I wanted to play off of this with the language. So I started thinking: Adam, Atom, Axiom, and then I look up from my desk and see this:

I'm a pretty big Ghost in the Shell fan, so I immediately frantically Google searched if there was another language called "Ghost". Nothing prominently came up.

It plays well with my intial theme of artificial intelligence. It sounds bad-ass. It's simple. It has character. It's perfect.

Say hello to Ghost.