For a slightly more advanced level do take a look at these two free books:

Mathematic Programming: an advanced introduction, by Leonid Shifrin

Power Programming with Mathematica: The Kernel, by David Wagner.

The second book is again old, but very useful. It was released for free recently.

Regarding the natural language (Wolfram|Alpha) integration, I'd say forget about it if you want to do serious work. I find it useful in two ways: if you're a beginner, you can try to type in something in Engish and have the system translate it to a program Mathematica expression. That will be a starting point for you to

*find *and to

*learn* the correct syntax. I also find it useful to retreive data from Wolfram|Alpha, but that's not really Mathematica programming, just querying for data.

To learn, use the tutorials I linked, and browse the main active Mathematica forums (this one and

Mathematica.SE).