When learning new languages, by far the best project I've seen is the minimalist task manager. It accepts only command line parameters, and just actions to add, edit, remove and print. But it covers:
- control flow
- strings
- arrays
- standard input/output (when adding/editing and printing)
- file IO
- using modules
- reading command line parameters
- output formatting
- editing and running programs (this is important)
All that in very few lines with very simple logic. And then there's the challenge to minimize it. The smallest I have seen is 6 lines of python, less than 270 characters total. To do this you must abuse the language, and it requires a deeper understanding of what's going on behind the curtains.
It doesn't take more than a day, and from there you can dive into more abstract concepts with much more fluency.
I actually hosted the site off my SliceHost account for a bit, and tried to write a new skin for it that didn't look like MediaWiki. Looks like this is inaccurate, but it's funny to see the languages bit from 3 years ago for me: http://rosettacode.org/wiki/User:Qrush
This is excellent! A real help for people who like to learn from example. I'd love to see some more math stuff translated to source code. It's a great help for people who suck at math but are able to read source (like me).
I love Rosetta Code. For common problems, the solutions cover a very long list of languages, sometimes with multiple solutions. It's a great tool when you're learning a language and want to see why the code you've written doesn't feel natural.
For me, it's also been useful for finding new languages. Scrolling around, you occasionally see a language with a particularly clever or readable (or just quirky) solution, and you can bounce around the wiki to see what other examples in the language look like.
http://99-bottles-of-beer.net/ is also a great page for browsing languages. Of course, it's a bit more whimsical and the focus is on a single problem (a good one, though: it covers conditionals, looping and I/O), but it covers a large number of languages and is easy to browse.
I really like the idea, but http://rosettacode.org/wiki/Rosetta_Code:Add_a_Task is dissuading me from contributing. I'd much rather clone a Github repo and make a pull request to submit my version of something.
It does take a bit of work to add a new task, but it's important work. Without it the problem is difficult to understand and the correctness of solutions is impossible to verify.
I don't know how effective a suggestion is, but my bet is that the interesting ones are processed quickly. I've been visiting the site and it has grown very rapidly, owing in no small part to all the work shortcircuit does.
I really can't get my head around how Rosetta Stone could possibly be a protected term with regards to any kind of language comparison or translation. I mean, people know where they got the name from, right?
I think Facebook has a case, at least with regards to dogbook/catbook/petbook, because why the hell would you call something "dogbook" unless you were trying to say "it's Facebook but for dogs"?
But Rosetta stone named themselves after the Rosetta Stone which is an ancient translation tool, for them to then turn around and try to protect that as if it was their copyright is just mind boggling (to me, anyway).
Great idea, but I think this would be much improved by some standardized test cases, especially for the algorithms. I saw a lot of haphazard 3-input tests.
It doesn't take more than a day, and from there you can dive into more abstract concepts with much more fluency.