It seems a common occurrence that a programmer wants to create a new domain-specific language. Well, perhaps not domain-specific. More general purpose.

It’s a strange thing when you look around and see so many existing languages that might do the job just as well.

At Amazon I seem to run into it even more often. We hire bunches of people that have a good and traditional computer science background — a lot of them straight of of college. You take your compiler design classes and whatnot and you want to put your training to use.

Yeah.

You might want to look around first.

So, you want to create a functional language? Look at Scheme, Erlang, or F# to see if they can fit the bill.

Dynamic language pique your interests? Python or Ruby might be what the doctor ordered.

Scripting? Why not Perl, or perhaps TCL?

Unless you have the wherewithal to go and make an IDE, debugger, and the rest of the toolchain awesome… yeah, you might want to stand on the shoulders of giants.

Of course you might actually have a deep need for something new. Each of the languages I listed above started from scratch too. Before you create your baby, think some deep thoughts about how it’ll grow and how you’ll nurture the community that’ll hopefully build around it.

But think hard again, is writing a new language how I’m going to win?