

What kind of information do you need to invent a new programming language? - kevinburke
http://stackoverflow.com/questions/2575801/what-kind-of-knowledge-do-you-need-to-invent-a-new-programming-language

======
jerf
If you want to just knock about, just start doing it.

If you're serious about getting people to use it, my personal minimum
guideline is ten years experience of serious software development where you
are continually pushing yourself, fluency in at least one major functional,
logic/set, and imperative/OO language, and competence in about ten languages
as diverse as possible, and some specific problem that can't be solved well by
an existing language. By then you'll know what to do.

The reason I would say this is my usual spiel about not actually encouraging
people to do really time-wasting things, even though we have a culture of
"encouragement at all costs". Encouraging a novice mountain climber to take on
Mount Everest as their third mountain isn't friendly, it's evil. Encouraging
someone to write their own new programming language if they don't have the
experience to do it of course won't _kill_ them, but they sure can waste a lot
of time. Whatever you think they may learn from the experience can be learned
faster and more productively by first reaching the standards I wrote out
above, and actually taking _advantage_ of the fact that much ground has been
mapped out already. We all must re-invent our own wheels if only for learning
at some point, but this is a great deal more than a "wheel".

~~~
motxilo
I sort of agree. The only snag is that you present gaining a lot of experience
before tackling that task as opposed to start building up your own stuff. They
are not exclusive by any means. Rather than encouraging a novice to climb
Mount Everest directly by either North or South Ridge, have him start building
his own low-steep slope path surrounding the mountain, with some books about
mountaineering and maybe some friends that created their own roads a while
ago. Maybe, in 15 years, he will reach the tip.

------
slapshot
A purpose other than "my boss wants his name on a language." Once you identify
a specific type of problem that is not solved by today's programming
langauges, you have the basis to go create a new language. Maybe you find that
it's hard to express some AI concept, or complex math, or to make easy web
applications---each of those needs led to very good programming langauges.

Otherwise you're just adding language clutter, re-inventing the wheel, and
wasting a lot of time.

------
raffi
I started to write Sleep when I was an undergraduate around 2002. My goal was
to develop a Perl-inspired language for the JVM with an API to embed it into
applications. Sleep predates a lot of JVM languages.
<http://sleep.dashnine.org/>

It's not mainstream but I used it in After the Deadline, jIRCii, and now
Armitage. When jIRCii was more active I had several scripters using it to
contribute to the client. Scripts ranged from a few lines to several thousand
lines of code. I receive emails occasionally from users but there are not too
many Sleep hackers out there. Still, I'm doing better than most languages
since my number is greater than 1. :)

So my advice for would-be language hackers: go for it. Writing Sleep was one
of the greatest learning experiences for me as a programmer. I now look at
languages through an entirely different lense. I don't get too excited about
fads or syntactic sugar as I know how I'd implement them.

Also, it's not that hard.

------
SwellJoe
This reminds me of the old saying regarding prices on luxury goods: If you
have to ask, you can't afford it.

------
onan_barbarian
Almost nothing. It makes a great deal of sense to make something fun and throw
it away. Pick some frameworks to make it easier (parser, and perhaps a
compiler or interpreter toolkit) and make a throwaway.

There's no such thing as 'language clutter'. No-one is harmed by you making a
pet language for your own edification, and you will almost certainly not build
anything that's more useful than an existing language on your first try. Or
even first N tries.

It's very educational, it does no-one any harm, and it's really fun when
something works. Just don't take yourself too seriously.

