Over the last few weeks I have been working on implementing a programming language to teach myself more about how they work.<p>The point has come where I need to decide on a direction for the project. Now that I know how it all works do I abandon the project? Work toward making it a production language? Or build it into an educational system for teaching people how to program and how programming languages work?<p>I like the last option personally, but I am curious about what others feel is needed in an educational language.<p>My thoughts are:<p><pre><code> * Imperative
* Simple data-types (Int, Float, String, Array, Hash)
* First-class, anonymous, functions only
* Single-threaded
* Simple STDIO-only io
* Local variables only
* Unit testing baked-in
* REPL
</code></pre>
Finally, my main requirement is that the language implementation itself be very accessible. The VM, parser and compiler are all already partially written in Ruby and are concise and clear. The goal is to make a language that you can crack open and understand in less than a week...<p>I would love to hear what everyone has to say about this...
Given the dominance of multi-core processors, why would a teaching language be single-threaded. Shouldn't you train people to think in terms of multiple processes?