Wow, this is very impressive- Very clean, Haskell-like code in the programming examples. I'm still looking for the right tool to get my young daughter started on programming, and this is probably the best option I've seen so far (gotta start 'em early with that Hindley-Milner type inference :-)
The main weaknesses I see are (1) the sample programs are all 20+ LOC long... a young child doesn't want to write more than ONE line of code without a meaningful result. (2) The syntax is so unforgiving... I think the ideal tool for learning programming would follow the mantra "do what I mean not what I say" and fill in gaps to generate a result (sort of like how web browsers will go to great lengths to render even the most flawed html.)
These are not really limitations in your software, just additional enhancements that could be added to your software that would really make it shine!
Not sure why kp25 was downvoted. I've been working with a 12-year old for the last couple of months to teach him programming and some web development.
> a young child doesn't want to write more than ONE line of code without a meaningful result.
This is something that I completely agree with and found to be true in my experience. To this end, I've found IPython to be an excellent way of giving feedback while coding. The notebooks have a nice UI, documentation is readily available and its much easier to edit mistakes by simply editing the cell.
Hey! I built CodeWorld. Thanks for the kind words!
Yeah, the examples are a mess right now. Let me point you to a couple things: first, there's a partially complete tutorial (click the Help button) with some simple examples. Second, (and this is very early on, so please be forgiving!) there's a draft of a textbook at https://docs.google.com/document/d/1NbMtySIDNK40Bk4ImrUAE95S... So yeah, we're working very hard on fixing the documentation issues. Patience!
I don't have such a good answer about syntax. The syntax is about as good as I can make it. There is autocomplete (Ctrl-Space) for built-in function names, and brace highlighting, and I'd love to work on more features to make the programming more interactive with immediate feedback. I also wrote a simplified version of Haskell's standard library and wrote a simple post-processor to reword the more confusing error messages, in an attempt to make it easier to find and fix problems that do occur. If you have ideas or find particularly bad examples, please add a quick example at https://github.com/google/codeworld/issues/new
If this doesn't work, and you look for alternatives to teach programming to your daughter, you might consider Scratch or (if you're still into doing it with functional programming) bootstrapworld.org.
Yes and no... not to make it easier, per se, but to make it more like math. I built CodeWorld, not to teach Haskell, but to teach middle school math! So the main motivation was to make it easier for students to see the connection between the functions they write here, and the f(x,y) that they see in algebra.
That said, uncurrying functions also has a huge benefit when it comes to understanding error messages in Haskell. I love currying in Haskell, and it's very powerful... but it's one of the features that sometimes leads to obscure or misleading errors -- especially when you leave out type signatures... which I do for the first month or two.
The main weaknesses I see are (1) the sample programs are all 20+ LOC long... a young child doesn't want to write more than ONE line of code without a meaningful result. (2) The syntax is so unforgiving... I think the ideal tool for learning programming would follow the mantra "do what I mean not what I say" and fill in gaps to generate a result (sort of like how web browsers will go to great lengths to render even the most flawed html.)
These are not really limitations in your software, just additional enhancements that could be added to your software that would really make it shine!