Mac OS X comes with something important that Windows doesn't: development tools.
(continued beneath the break)
A standard install of Mac OS X Leopard has:
(plus various scriptable shells like Bash, and near-programming tools like Automator, and with a little effort you can get PHP up and running on the built-in Apache web server)
On the install DVDs, under "Optional Installs", is Xcode, the primary development tool for Mac OS X. Xcode is a professional IDE (Integrated Development Environment: an editor, compiler, debugger, profiling tools, and project management tools all integrated into one big tool) for Objective-C/Cocoa, C, C++, PyObjC (Python for Cocoa), Java, RubyCocoa, AppleScript. The Xcode you get free is the same one Apple uses, the same one I use. It's as good or better than the $3500 IDEs I used just a few years ago.
Of all those languages, Python, Perl, Java, Ruby, C, and C++ are standard and portable to any platform (Objective-C is specific to the Mac, but it's VERY powerful). You can make a really good living from any of them (Objective-C, Python, Perl, and Ruby are a little harder to find jobs in, but they pay well; Java is easy to find work in and pays very well), but more importantly, learn any of those and you develop the programming skills to learn any other language.
Getting started in Python is almost as easy as BASIC was on the Apple ][ 30 years ago:
- Open /Applications/Utilities/Terminal.app
- Type python
- Type print "Hello, World!"
Obviously, I'm a big fan of teaching Python to new programmers (and it's fun and useful for experienced developers, too!), but the above applies to all of the Mac languages.
All Linux distributions ship with Python, Perl, C, and C++. Some have others around, but you can't rely on that, and almost none ship with a usable Java. Linux is certainly programmer-friendly, or at least hostile to non-programmers, but very few kids or programming novices are going to be exposed to Linux; mostly it sits quietly in data centers and serves web pages.
But MS Windows ships with nothing. No BASIC. No C compiler. You're trapped, stuck playing with Solitaire and MS Paint.
If you poke around the Microsoft site, you can find out about "Visual Basic Express 2008", try downloading it, installing it, and then reading incomprehensible tutorials full of screenshots and generated code. No non-programmer is going to go through that just to see a "Hello, World!".
Back in the '80s, Microsoft shipped QBASIC with DOS, just like every microcomputer maker did. But in the '90s, they stopped developing the classic BASIC, and went to Visual BASIC. Visual BASIC is a superficial copy of the NeXTstep and Turbo Pascal environments, but they got some things fundamentally wrong: "code-behind" and generated code from wizards made it impossible to build large systems, and kept people from playing with the internals; changing generated code would just ensure that the tools would break or your code would be wiped out. Getting real development tools for Windows is expensive, and they perpetrate the same kind of generated-code sins as Visual BASIC.
Hobby programming, on Windows, died out.
That sounds melodramatic, doesn't it? But for the last 10-15 years, Microsoft hasn't shipped a real language with Windows, and their "introductory language", Visual BASIC, became increasingly useless for newbies, only suited to gluing together Access, Word, and Excel. It became the domain language of corporate "code monkeys", just as COBOL had been 20 years before. With VB.NET, the last pretense of it being "BASIC" were dropped, and it's now just an ugly, incomplete syntax for the much more complex world of .NET.
Even if you learned it, all you can do after Visual BASIC is more Visual BASIC, getting paid half as much as real programmers for the rest of your life. Visual BASIC is madness, and teaches nothing about real programming.
There are other starting languages for Windows (even Python, etc.), but all of them have to be downloaded and installed, and sharing your Python or Java program with another random Windows user is a pain (they have to download and install Python or Java, too). While Turbo Delphi is free, the pro version necessary to even try another language is $900.
To become a professional programmer on Windows is even worse. Microsoft's serious tools aren't free, they cost $300 for the lowest-end version, with no support, $1200 for minimal MSDN support, $2500 for full MSDN support. So in other words, you work for a large corporation which can pay for it; hobby programming for Windows is a waste of a significant amount of money.
The result is that kids raised with Windows today don't generally have programming tools available.
So why is hobby programming, especially getting instant access to programming on a computer and teaching kids to program, important? Because that's where new programmers come from.
There's a massive shortage of younger programmers now. Some people blame this on the dot-com bust scaring kids out of computer science. That's obvious nonsense to anyone who knows programmers; once you teach someone to program, it's completely addictive. They'll do it every chance they get, until they die, regardless of consequences. You can't beat programming out of someone who got it in their system as a kid.
If you wait to teach them until college, it's almost always too late; adult brains generally can't form the deep structures necessary to learn real programming, only rote copy-paste code monkeying. Before microcomputers, most programmers were mathematicians, because math is similar enough to leave the brain receptive.
In the '80s, there were many competing microcomputers, almost all of which included BASIC or Pascal or LOGO, or HyperCard on the Mac. Hundreds of millions of kids and teens were exposed to programming. Millions got "infected", and became programmers.
In the '90s, Microsoft murdered everyone except Apple (and Apple only barely survived), just as they were also putting an end to hobby programming on Windows.
It is not a coincidence that we're low on programmers now, 10-15 years later. It has nothing to do with a temporary economic problem. It has to do with Microsoft's incompetence and negligence smothering a generation of young programmers in their cribs, and they're still at it.
The One Laptop Per Child (OLPC) project tried to put Linux and Python in the hands of millions, maybe billions of poor kids, to make a Mouse Army of programmers, but they failed, and now if any OLPCs ship, they will ship with Windows, with no programming tools.
Everyone with a Mac has a really great development environment, full of the best languages and tools available. If you know a smart young person, give them a Mac and show them Python.