Amiga E and C with DICE were both hard slogs for me (my high school had BASIC classes and an AP Pascal class, still taught on Apple IIe computers--but I took them for the easy A rather than actually learning anything...from day one I knew more about software development than the instructor). ARexx was easier to grasp for someone who cut his teeth on writing games for the Color 64 BBS system (in BASIC). I also did a little 6510 assembly, but that was really unpleasant after the initial coolness factor wore off (and I embody one of Larry Wall's three virtues: Laziness, so the coolness wore off just about immediately). But, compared to Perl, Python, Ruby, Lisp, Scheme, etc. plus the resources available to everyone on the Internet, I'm kinda sad to think back on how much time I wasted slogging through poorly written books about poorly written compilers. If only I'd known to seek out K&R early on. (I knew enough to want the Amiga 3000UX when it came out, but I wasn't quite sure why!). What was a nerdy kid in the suburbs in the poor southeast to do?
Re:What is your recommended beginner's hacker training course?
by pc on Thursday May 10, 2007 @01:30PM
(#21097)
s/DLT Scheme/PLT Scheme
Re:What is your recommended beginner's hacker training course?
by SwellJoe on Thursday May 10, 2007 @06:46PM
(#21182)
Quite right. Thanks for noticing. Fixed.
Re:What is your recommended beginner's hacker training course?
by comatose_kid on Thursday May 10, 2007 @01:33PM
(#21098)
A bit of an aside, but I too was an Amiga user back in the day. Bought an Amiga 2000 in 1987. I recall reading the hardware reference manual and programming the blitter in 68K assembly. Those were the days :)
Re:What is your recommended beginner's hacker training course?
by SwellJoe on Thursday May 10, 2007 @06:59PM
(#21183)
Yep, those were the horrible horrible days. I loved my Amiga. Really, really loved my Amiga. But programming today is so much better than programming back then. And everything that was good about the Amiga community is great about the Linux, Ruby, Python, Perl, etc. communities today.
I mentioned ADUni above. It's a great way to spend part of your first six months of learning. I've been a hacker since I was eight (I went the Commodore 64 route someone else mentioned starting in 1981, but I don't recommend that path for anyone...Open Source and modern languages provide a far better learning experience...hell, I didn't see C until I got an Amiga in '88 and didn't see Scheme until I started using Linux in '95...there's never been a better time to learn software development), and I still found several things to learn from the coursework.
Find and download an Open Source project that does something you find interesting, and figure it out. Add a feature. A small one. Get it accepted by the developers. This will teach you a lot of skills you absolutely must have that aren't "programming": Revision control (because you'll need to work on the SVN or CVS or bzr or monotone version of the software in question), making patches (use "diff -u" for single-file changes or "diff -uNr" for whole directory changes), and communicating with other developers (you need a co-founder who is a stronger hacker than you, and you need for him or her to not be infuriated by the way you communicate with them...Open Source folks are generally happy to help if you're doing something useful for their project).
Notice I haven't mentioned any languages here. They're not irrelevant, but close to it. Some languages are better learning languages than others (Python, Ruby, PLT Scheme, which are all interactive and very clean), but if you can't see how to get started making something useful (almost) right away due to language choice, pick something else. All of the stuff you learn in the next few weeks is going to apply equally to pretty much all languages. If you do SICP, plus start working on some open source project (maybe in Ruby, Python, Perl, or PHP), you'll get to the meaty stuff right away.
Avoid hard problems (for now). Don't learn Java (you might make an exception for the ADUni Java courses--they teach programming and it just happens to use Java as the language, but it's way too easy to get mired in the minutiae of Java). Don't learn C. Don't learn Common Lisp. Don't learn edge cases in Perl or PHP (just the ones used in the Open Source projects you've picked to work on). Don't get bogged down reading standards documentation.
Do learn good tools. vim, emacs, or Eclipse. If you use a Mac, maybe TextMate. There is no other editor you should waste your time on, if you're in a hurry. Later on, you can flit between some of the others, if you feel dissatisfied with what you've landed on. Learn to use the UNIX command line tools, as you need them when you need them, to make yourself more productive. If ever you find yourself wishing there were an automated way to do something to several files (and you will), just remember that there is a UNIX tool that can do that for you (maybe sed, maybe awk, maybe perl, maybe grep, maybe diff, maybe patch), and set out to find what it is and how to use it. (Not using UNIX? mingw or Cygwin can help.)
Let me re-iterate something...if you're in a hurry, you must write a few lines of code today. Writing code is the single most useful thing you can do in learning to code.
Oh, yeah, for JavaScript, you cannot beat Douglas Crockford's awe-inspiring JavaScript videos at the Yahoo Developer Network.