Short version
I think mathematica is a good first programming language, and Stephen Wolfram has dropped some hints in a few places that it should get even better at being a beginner programming language soon:
It'll probably be related to my goal in the next year or two of making Mathematica definitively the world's easiest to learn language...
More detail
There are a few things that, in my opinion, contribute to Mathematica being a good first language:
- High quality interactive environment suitable for exploration
- Support for several different programming paradigms
- Good documentation
Let's take these in order.
1. High quality interactive environment suitable for exploration
Of all of the programming languages that I've learned the fastest, I've had some way of entering some code and getting immediate feedback on what the result was. Even as far back as my first programming language, Atari BASIC, I could type in a single line and see immediately what its impact was, or if the syntax was even correct.
Don't underestimate the power of being able to type ??Table
in the Mathematica front end to immediately get a quick reminder of what it does and how to use it. Or even better, something like ?String*
to get a list of all of the things Mathematica knows that begin with "String".
2. Support for several different programming paradigms
You'll hear over and over (and it's probably one of the things that have you presently intimidated) that Mathematica code should be written functionally whenever possible. But the fact is that none of us are born thinking like Functional Programmers do. Recipes and procedures are ubiquitous and even deeply ingrained by school and other institutional experiences that we all have.
One thing Mathematica is very good at is letting you program as procedurally or as functionally (or with constraints, or logic, or term rewriting, or a host of other programming paradigms).
This enables you to stick with what's comfortable, but to push yourself in exploring new techniques and pushing yourself to learn to use new tools to get the job done better and faster.
3. Good documentation
The Mathematica help is almost tuned for exploring the system. With each help article featuring the Scope section that'll quickly run you through the whole gamut of things that a given function is capable of, and ending off with a Neat examples section of things to get you imagining what else is possible. Not to mention strong hyperlinking among help topics to get you lost in a wave of exploration almost like what happens on Wikipedia.
I should also shout out to the many book authors who hang out on this site, and say that Mathematica has an array of "how to get started" and "how to go deeper" tutorial-style books that give the much more popular programming languages a total run for their money. I'm not the most qualified to recommend any books, but there are other questions on this site that do a good job of listing some gems.
Other thoughts
The Mathematica community doesn't seem as good as other programming language communities at sharing code with each other. I think there are a couple of reasons for that, but the biggest one is probably that the price of admission keeps almost all hobbyist-tinkerer types away using the freely available languages like Python, Ruby, Java, and even C#, leaving mostly the I've-got-real-work-to-do crowd with access to a Mathematica license.
Finally, Mathematica 8 (and beyond) have begun to include some promising features that allow you to type what you'd like to do in plain English and have Mathematica (with Wolfram|Alpha's help) craft the actual code that you'll need. I haven't found this to be a very good way to learn how to do new things, but it seems like it could be someday.