Once you've mastered the basic syntax and control constructs of a language, it probably isn't worth your time to try a dozen different string manipulation exercises.
Perhaps this is beyond the scope of what this site is aiming for, but, I would hope for some exercises that help me understand what each language is commonly used for.
Potential examples:
- Swift: Learn to display and manipulate a GUI
- Ruby: Learn to write a web application
- Python/Julia/R: Learn to fit some data to a model
- Javascript: Learn to use a web framework
- Go: Learn to handle some network connections, concurrently. (I see they have one exercise that emphasizes concurrency, which is a step in the right direction.)
- Perl/PHP/Bash: Learn to cry bitter, sorrowful tears.
This is a common misconception. PHP tears are actually almost sweet and not bitter at all. The only saltiness comes from hearing the opinions of other programmers talk about your primary language.
It's not a perfect language, but none are. I think some people are just jealous of how little setup/barrier to entry there is for PHP ;)
The problem with a cookbook, IMO, is that it doesn't really teach you anything about the language. You could write some really cool (short) image processing code using OpenCV, but would it really help you learn C++ or Python? I suppose you could pick the top 10 libraries/frameworks and go from there.
But.. on the exercise front, there are certainly nifty ways of solving problems in some languages that aren't available in others. Python, for instance, makes a lot of programming challenges very simple with the standard library. Similarly stuff gets a lot more readable if you use C++11 onwards.
I agree there isn't much point if you already know the language inside out (though it's useful to keep sharp), but if you're learning it can be a great way to discover useful constructs like Python's itertools.
For example, you have jQuery, which will expose you to DOM interactions, callback-style programming and even promises.
ugh... How about "Learn about the DOM and web APIs"?
Not to say that exercises emphasizing the intentions or strengths of a language are bad; but precisely those boring repetitive exercises will be the common.. say "conversational mastery" of the language.
Analytical data on which problems you're solving and how you're doing vs how you think you're doing? And who might be interested in purchasing that data...
I like the emphasis on sharing solutions.
Also, as the checks are from tests, there are no single right answer. I've seen some code challenge services (can't remember the name) that would mark fail if you didn't write it exactly as they were expecting, to the line break.
I have learned so much about what was capable in my favorite from those other answers.
How suitable would this be?
Note: I have learned in the past, for about six months, went through K and R's C book, Udacity's intro course, and made some python scripts which are still in use on my site. But, that was five years ago, so I've forgotten everything.
So, I'm not exactly a total beginner, but I currently am unable to do anything through neglect.
The bostonphp group (Now almost defunct, excepting training) ran a class on setting up and running a drupal site, which was good. They had people that run drupal sites helping with the class so if you had questions there was someone knowledgeable). That being said, I've never run a production drupal site, but I feel like I have some idea whats involved.
Many years ago I took a redhat kernel extension programming class. Again with someone knowledgable teaching the class, it was quite helpful. Since it was all people from my workplace in the class we were able to ask the relevant questions about the scheduler and other information we needed.
1. At the time, I could code the kinds of things K & R had me do. But, I couldn't, say, run a wordpress site, because that depends on knowing libraries, how to run php on my system, a bunch of php specific stuff, and other stuff I don't even know I didn't know 2. It's been five years. Without practice, I no longer can do the stuff I did while I was learning. I could pick it up again, I just mean the knowledge isn't currently available.
Basically, I had no project that required me to use the skills, so they didn't grow past what I picked up, and then they atrophied. Pressing business concerns became more important.
But, now I'm at a point where not being able to program has become more of a hindrance.
While there isn't much reviewing going on, I've found it useful to poke through a few other submissions for exercises (especially the ones with comments). I've learned a few things from other users' code.
I've been learning Elixir for this year's challenges and it's just the right amount of challenge required for understanding the idiomatics and idiosyncrasies of a language.
One big takeaway was how thankless and un(financially)compensated the task often is. If you find Exercism useful, I strongly recommended clicking the "Donate" button at the top.
I'm satisfied. Very comprehensive language list.
The idea is great: have a test suite and program your exercises against it. But in my opinion, exercism makes you write a lot of non-idiomatic code. There is value in that, but only so much.