Something that seems to come up often enough in computers is the idea of computer languages — not the ones that are already out there, but making new ones.

Now I’m not talking about domain-specific languages. That’s something else entirely that solves problems that are fundamentally hard to represent in a more typical existing language.

No, I’m talking about just new languages.

It’s like the Great American Novel of many programmers, something to aspire to.

The problems with inventing a new language are many fold. First off, no one knows the language. This is a huge stumbling block in general. Second, chances are you don’t have a good development environment. Hell, you probably don’t even have good error messages. Third, you need to solve the same problems that everyone before you has already solved.

Take an issue I ran into recently… the problem at hand is needing to store snippets of code in a database. (I’m really generalizing, so bear with me) The rationale is that these functions need to change often and out of sync with the main code base. So far, so good.

They called it “configuration” since it’s not in an existing language.

When you invent something that’s likely a Turing Complete system you have to cross the bridge from configuration to code.

So, instead of inventing something new, there are plenty of alternatives.

I’ll start off with restating something that’s well known: much of Amazon runs, not surprisingly, off of Java code.

So, given that constraint you can choose from a palate of different options.

Ruby in the form of JRuby, Python as Jython, or perhaps NodeJS form Nodyn.

Each of these is perfectly good language that can exist inside Java. Each of these have a rich vendor-supported community with a wide range of IDEs to choose from. Any of these, given a quick-and-dirty test harness could be used instead of a janky home-grown solution.

If the underlying language wasn’t Java, there are similar options for any other mainstream language, just Google it.

But it’s not as cool, eh?

Just something to think about the next time you feel the urge to make a new language.