CodeCombat (YC W14) Wants You To Learn To Code By Playing Games
techcrunch.com
techcrunch.com
The game looks like fun and I'm sure it'll be able to spark the interest of a bunch of young people. Once they get out of this, hopefully they'll look to other sources to learn more in-depth skills. But IMHO services like this need to stop advertising themselves as "Learn to code", and instead admit what they are, which is something to pique the curiosity of a newbie and get them started on their own path. That's a noble goal in itself, but passing off the absolute basics as knowing how to "program" could be dangerous.
In the end, I do think there will be things we can't teach. Like choosing an editor, compiling code, working with APIs, etc, etc. But I wouldn't consider things of that nature to be "coding." That's practical software development, and isn't something taught at most "computer science" programs in the US (it certainly wasn't taught at my alma mater). We could argue the semantics of "learning to code," but in our experience, it's the closest approximation to what we're doing. For the sake of argument, I don't think it would be feasible or helpful for the newbies on the site to change our homepage text to something like "Learn the fundamentals of formal notation, logic structure, and procedural execution." To someone that doesn't know what the terms variable, object, and parameter are, the distinction between "learning to code" and the first (arguably more accurate statement) would be lost. And if we can spark an interest in a few more people by over generalizing a bit, I'm willing to do it.
I've done quite a bit on Codecademy, and I get it, but there are still a lot of things I am just ignorant of, like where you actually type code (what's a good source code editor?) and so on.
I've noticed a lot of tech resources (tutorials, guides, manuals) routinely fail to explain basic, foundational concepts that are required for a beginner to understand what they are doing. And it drives me effing crazy.
To answer your question, the editor, etc. depends on what language you're programming in.
For HTML, all you need is a simple text editor, notepad on windows, textedit on mac, gedit on windows. Sublime if you want syntax highlighting.
Type in a few lines of code, save it with a .html extension and double click the file. The offline webpage should open up on your browser.
Javascript is pretty similar, just save the file with a .js extension. You'll have to make sure the JS file is linked to your HTML file.
I think the best resources are still books if you want to learn to program. They generally recommend software to use as you work through the book.
That's what they should be doing. Having been trying to teach myself this stuff since photo.net and Ars Digita were hot, I can tell you, I spent 10 years stuck in Windows not knowing where to turn. Then I spent ten years learning all about everything around programming: editors, OSes, managing remote servers, languages, what those languages are for, algorithms, half-adders, little-endian vs big-endian, blah, blah, blah.
And only in the last few years have I really gotten a handle on actually writing code that does stuff.
Now I'm at the point I realize I'm way behind the curve on data structures but I have to say, I really wish I had been learning about data structures instead of how Bill Joy developed vi to cope with a slow modem.
Sure, picking up Perl now, I can grab Padre and the Llama book and within a few exercises branch off on my own and add rewrite them with recursive functions and pretty interface elements, but I wish I'd been learning about advanced parsers instead.
Fwiw:
Perl 5 is no slouch in the parsing department (via CPAN modules, including partial backports of some Perl 6 technologies).
Perl 6 directly delivers a powerful but relatively easy-to-use parsing environment with its composable grammars and rules (http://en.wikipedia.org/wiki/Perl_6_rules).
I've often recommended the less exciting, but excellent EdX courses, if you want to "get into programming'.