这是第一个回答(Faysal Aberkane):
Here's a collection of resources that I started on Mathgroup (A collection of Mathematica learning resources ) and updated here at StackOverflow. As this site is dedicated to Mathematica it makes more sense to maintain it here. This represents a huge amount of information; of course it's not exhaustive so feel free to improve it! Also, don't hesitate to share it and suggest other interesting links! Remember, you can always search the online Documentation Center of Mathematica, that is identical to the built-in help of the latest software version.
Links to more advanced aspects of the program that you can start to appreciate once you understand the basics are provided in separate answers (below) as this post became too large.
Introduction
- If you're just beginning try to have a look at these videos.
Mathematica Basics, Elementary Programming in Mathematica
Hands-on Start to Mathematica
Several introductory videos by Jon McLoone
and many other Video introductions and tutorials from the official Wolfram website - Is it necessary to have a prior computational background or is it possible to learn Mathematica as a first programming language?
- What are the most common pitfalls awaiting new users?
- How To-s: full solutions for particular tasks from the online documentation
- Easy-to-understand animations explaining common Mathematica functions
- Sal Mangano's videos for using pure functions,
Partand patterns - Introductory videos of various applications of Mathematica
- What is the best Mathematica tutorial for young people?
Basic advices for people new to Mathematica
Functional styleAvoid iterative programming using loops like
For or Do, use instead functional programming functions Map, Scan, MapThread, Fold, FoldList, ... and pure functions. This makes the code cleaner and faster. - Functional Programming, Functional Programming: Quick Start
- Pure functions
What does # mean in Mathematica? - Alternatives to procedural loops and iterating over lists in Mathematica
- An example: Programming a numerical method in the functional style
- Something not easy to guess alone at the beginning: if you have
x={1,2}andy={3,4}, doingTranspose[{x,y}]or{x,y}ESC tr ESC in the front end will produce{{1,3},{2,4}}(format compatible withListPlot). This animation helps understand why. - You can also use the second argument of
Transposeto reorder the indices of a multidimensional list. - Don't forget to regularly control the output of the lists you generate using
Dimensions.
@, &, ##, /@, /., etc.)- Operator Input Forms
- It may happen that you are not sure about which shorthand expression
will get executed first, in this case test the correctness of your
input using something like
Hold[inputExpression]//FullForm
- Getting help: Execute
?Mapfor example for a short description of a function, or press F1 on a function name for more details and examples about it. You can solve many problems by adapting examples to your needs. - Auto-completion: Start typing the name of a function and (in Mathematica 9+) select from the pop-up auto-completion menu, or press Ctrl+k to get a list of functions which names start with what has already been entered. Once the name of the function is written completely press Ctrl+Shift+k (on Mac, Cmd+k) to get a list of its arguments.
- Function templates: In Mathematica 9, after typing a function name, press Ctrl+Shift+k (on Mac, Cmd+Shift+k) and click on the desired form from the pop-up menu to insert a template with named placeholders for the arguments.
Other useful shortcuts are described in the post Using the Mathematica front-end efficiently for editing notebooks. - Use palettes in the Palettes menu especially when you're beginning.
- In Mathematica 8, use the natural input capability of Wolfram Alpha, for example type "= graph 2 x + 1 between 0 and 3" without the quotes and see the command associated with the result.