| Every time I see a project pop up touted as being simple and a good "teaching language", it has some weirdness or pet features thrown in that turns enough people off to keep adoption low. If you want a good teaching language which will receive substantial adoption, do this: * syntax-wise, use curlies and semicolons like C, Java, Perl, JS, etc. * use many of the good function names that Perl uses. * have all variables be refs to objects, like Python does. * use nice normal lexical scoping like Scheme et al * this shouldn't have to be mentioned, but provide data literals for lists, maps, and sets * keep it small, and written in C, like Lua. * resist the temptation to complicate things by adding this really amazing advanced feature that it's just got to have to distinguish itself. * plan for it to become used for general purpose programming, as it very likely will. And some "don'ts": * don't worry about performance, that can come later * don't worry about lack of libs --- your implementation is in C, and you should get good ffi down the road. And with the substantial adoption you'll see, libs will come later anyway. * don't have it be on the JVM, LLVM, or any other existing VM. Keep it simple. Even an interpreter is fine for now. That's it. That's all you need to do for amazing success in a teaching language that will also see serious adoption. That said, no one does this. Presumably because if you're skilled enough to implement it, you have some neat but obscure features you'd like to add, or a unique syntax you'd prefer, which ... turns users off and keeps adoption low. |
Some of these lead to endless bikeshedding (e.g., curly syntax) without much of a way to resolve it. Pyret has one position on these, others may have others.
And some of these are just plain invalid in some contexts (e.g., implement it in C). Our target audience is browser-bound: many of the schools we work with cannot install software on their desktop (so no compiler, IDE, etc.). Implementing in C is therefore a non-starter.
Pyret is therefore built atop JavaScript, targeting JavaScript. However, Pyret is built entirely in Pyret, so if we were to build a different back-end codegen, it would be straightforward to port it.