Build Up your Skills AND your Portfolio
In my opinion that would be a very good learning experience as it will:
- force you to look under the hood,
- guide you to learn how things are internally done,
- encourage you to look at and compare other implementations,
- keep your algorithmics skills up to speed,
- make you code (and hopefully document) a lot, which isn't a
- give you a significant project and codebase you could share online
for all to see, for:
- personal enjoyment and gratification,
- showcasing your skills to potential employers,
- communicate and exchange with peers interested in the same area,
- potentially let it grow into something more...
So I do see this as produce, useful, and overall "worth it".
Now you can use different approaches, depending on how much time you
plan on spending on this...:
- If you have a limited time-frame, I'd say dive in and code the thing.
- If you have a wider timeframe, then you could indeed go the
long-winded way and write specs, tutorials, manual, etc...
I would rather recommend you to start small. No one has ever, that
I know of, written directly an awesome language just like that. You
stumble and fall, and fail, and fail and fail. Then you succeed, in
that it works but still sucks, so you start over once more. And you
add new features and it's finally getting cool, but suddenly you
realize that there's a fundamental concept that you screwed up at the
beginning. So you start over once more...
Seems very educational to me.
Go ahead (and share the link with us).
Small, as in "short"
But again, I'd recommend you start small. Don't be afraid if
people say it's going to take a lot of code and time. Not necessarily,
if you don't aim for a complicated language. Alan Kay and other
Xerox PARC engineers allegedly developed an early version of
Smalltalk that fit on a single sheet of paper, as an objective
for terseness (read Xerox PARC: Dealers of Lightning for details
about the history of the PARC). Seems a good, educational and
constrained enough approach (as long as it doesn't sacrifice
Small, as in "constrained"
You don't need to support right away an advanced type system,
higher-order funcitons and a mix of 42 different paradigms. It could
just be a mathematical expression language.
Re-use (and Peek at) Other's Knowledge
You may also want to have a look at tools that are used to write
languages from scratch. You can re-implement everything youself, but
maybe it's also worth looking at existing lexers and parser
generators, for instance.
And obviously, you may want to read up on compiler construction at large.
Now, if we modify your question to be "would it be THE MOST productive
use of your time?" it becomes an entirely different issue :)
There are tons of other learning projects you could tackle, and that
would train and showcase your skills equally well, if not better. It
depends what you want to aim for.