31
$\begingroup$

Currently I am trying to learn Python. Searching for relevant material I came across

X in Y minutes

and books with titles such as Learn Python in one day, in 24 hours, etc.

Similar material exists for other programming languages. Of course you cannot learn (starting from zero) a programming language in such a limited time, but still you may grasp the basics.

However a quick "googling" reveals that it is not an easy task to find something relevant for the Mathematica language (i.e. Wolfram language). E.g. Wolfram Language Fundamentals from M. Gaylord comes very close.

So consider the scenario that someone wants to grasp the basics of the Wolfram language or someone wants to present the basics of Wolfram language. We have one hour or one day, it depends:-)! We may even want to write a 20 pages hands-on document.

Which material is considered absolutely indispensable?

$\endgroup$
  • 11
    $\begingroup$ Perhaps this: Wolfram Language: Fast introduction for programmers. $\endgroup$ – C. E. Feb 22 '17 at 14:24
  • 3
    $\begingroup$ @C.E. If anyone has the time, please do make a community ad for that. I suggest just re-using any appropriate (copyrighted) graphics from the Wolfram site. Once the ad is done we can ask for permission before the ad goes live—it is usually granted. $\endgroup$ – Szabolcs Feb 22 '17 at 15:25
  • 13
    $\begingroup$ I've been using Mathematica for 28 years, and I estimate I have learned about 2% of it. $\endgroup$ – Mark Adler Feb 22 '17 at 16:38
  • 10
    $\begingroup$ It is impossible to learn Mathematica in one day, unless one lives in planet Venus may be, where the day there is 5,832 hours long, and I do not think that is enough time still :) $\endgroup$ – Nasser Feb 22 '17 at 17:04
  • 2
    $\begingroup$ By the way I forgot to thank everyone that has taken the time to post an answer or leave a comment:-)! All the replies and comments are very helpful. $\endgroup$ – Dimitris Feb 22 '17 at 18:23
15
$\begingroup$

For learning what I consider "just the wolfram/mathematica language" I would proceed as follows and start at the very low-level basics:

  • Learn what is meant by a symbolic expression:

    SymbolicExpression ::= Symbol | SymbolicExpression[SymbolicExpression, SymbolicExpression, ...] 
    
  • Ignore issues like $Context, consider a Symbol to be an arbitrary UUID. Ignore all the syntax shortcuts for now. Ignore all built-in atomic types besides nested expressions of symbols. The built-in atomic types can be considered optimizations (+syntax) - Integers could be implemented as symbolic expressions: integer[one,zero,one,zero,zero] and appropriate definitions for Plus.

  • Learn everything about the interpreter, i.e. the expression-rewriting system, including the basic magic cookies (Evaluate, Sequence, ..., HoldAll, SetAttributes, SetDelayed, DownValues, SubValues, OwnValues) and evaluation order. As an exercise, implement the Mathematica interpreter within Mathematica. Make it operate on held expressions.

Everything up to this point could be executed by hand on a piece of paper and you could make a mathematical theory of this symbolic rewriting system.

Now you can proceed to strip away from this idealization to get a usable real-world programming system.

  • Realize that you are given an imperfect implementation of this abstract system in an environment, on an operating system, with files and a timer and input-output devices and whatnot. On a computer with finite memory and an internet connection. This means you can do more than just implementing computable functions in a rewriting system. But it also means that computing things takes time and that things like $RecursionLimit are necessary.

  • At this point, you can proceed to learn about the "standard library" of built-in functions, knowing that you could implement all of this by yourself (except for the fancy syntax and graphical presentation within the notebook) within the rewriting system and by using an external C library. The standard library is vast and ever growing, you will never know or use it all. I would make a distinction between pure functions of the symbolic rewriting system (such as First) and functions that go beyond what is representable in the mathematical rewriting system implemented by Mathematica (e.g. Import). Realize that Mathematica functions can be implemented in C which can talk to the OS which can let you do anything your computer can.

  • Learn about the FrontEnd, what it can render in GraphicsBox and Graphics3DBox, what a Cell is etc. Press Shift+Ctrl+E. Realize that it is a declarative 2D/3D vector-graphics rendering framework and language, much like html/svg/x3dom in a web browser, but unlike opengl, directx, webgl and canvas. Realize that the front-end live-parses your code and allows you to navigate the AST (== expression tree) using Ctrl+.

  • Learn about Dynamic.

  • Consider learning about parallel kernels.

Note that this is not exactly how "the Wolfram Language" is advertised: It is usually considered inseparable from the "standard library" and its UI.

However, this way of learning about things has helped me understand what Mathematica/the Wolfram Language is and does.

keywords, key phrases: basic or fundamental principles of Mathematica or the Wolfram Language. mathematica just the language. mathematica from scratch. mathematica for dummies.

$\endgroup$
  • $\begingroup$ Any advice on how to learn more about GraphicsBox? Is there any documentation about it? $\endgroup$ – Gustavo Delfino Oct 13 '17 at 13:16
24
$\begingroup$

I would recommend these two, in the order listed:

  1. Wolfram Language: Fast introduction for programmers

Besides the generic edition, there are currently two special editions of this tutorial available for programmers with previous experience in Java or Python. It appears that they are working on more versions for programmers with backgrounds in various languages, such as C, R, Haskell, etc.

  1. Mathematica Cookbook

An hour is a little bit too short for the Mathematica Cookbook, but a day should be sufficient to read the introductory information about the important aspects of Mathematica, as well as trying out a few recipes to get an idea about what Mathematica can do.

$\endgroup$
17
$\begingroup$

The Official Elementary Introduction is also very good to learn some basic stuff.

$\endgroup$
  • 2
    $\begingroup$ If you like it, vote for the ad! I am pushing this because I hope that if visitors to SE see this ad, and read some of the introduction, the quality of questions will improve. $\endgroup$ – Szabolcs Feb 22 '17 at 15:31
15
$\begingroup$

Mathematica Programming: An Advanced Introduction by Leonid Shifrin is my personal favorite. It may not be a "24 hour" exercise, but it's a breezy and fairly comprehensive introduction to the fundamentals.

$\endgroup$
7
$\begingroup$

There are already very good answers(it may be a summary), but I thought of adding mine(may very little additions though, but helpful for future visitors).
This contains some good video lectures(it is helping me a lot, after Mathematica Stack Exchange(constant helper)). Even I have downloaded all the videos(for future learning, and passing them to my friends). Here, the introduction is bit general(basic). It assumes that the viewers have no background in Mathematica.

(i*) Mathematica - 1 Similarly you can check for more lectures Perimeter Mathematica Lectures(pain stacking to write all the links).

(ii) Another by Piedro Viera, just scroool to the bottom to Mathematica - Pedro Vieira.

(iii**) Now time for-> Wonderful: Wolfram: The Mathematica Book, Fifth Edition, this book is by Wolfram itself. Please use Google Translate for this reference Mathematica(Wolfram book link), :).

(iv*)Obviously, Mathematica Programming: An Advanced Introduction, this my most of the time good lookup. Thanks to @Chris(who has mentioned it).

(v*) Beautiful link by @C.E. Wolfram Language: Fast introduction for programmers, this link was first given to me when I joined MMSE.

Regarding time, I can't say. I am sorry(it depends on your background, the amount of material you want to learn and your grasping power :) ).

$\endgroup$
  • $\begingroup$ The Mathematica Book is effectively the best documentation about a software I have ever seen, but it is 12 years old. The OP must be aware of that. $\endgroup$ – andre314 Feb 22 '17 at 21:20
  • $\begingroup$ @andre effectively right, I was thinking of writing that Mathematica has stopped focusing on the book and has started concentrating on developing documentation centre. Good point by the way $\endgroup$ – L.K. Feb 22 '17 at 21:27
  • $\begingroup$ Another meaningfull information : Mathematica Book = 1500 pages $\endgroup$ – andre314 Feb 22 '17 at 22:22
  • $\begingroup$ The Perimeter Institute video is badly produced: at times when you should be seeing his laptop's screen, the camera instead is showing the view of the presenter talking. $\endgroup$ – murray Mar 12 at 18:23
2
$\begingroup$

In the old days when Mathematica was new, you needed to spend some time learning to work with the program to get the most out of it. Today, this is totally different, you hardly need to learn anything beforehand, the help features are integrated into the system in a way that allows you to learn Mathematica on the fly within just hours. You can use the resources on the Wolfram page as you get familiar with using Mathematica to learn more. This is how you should be able to learn a fair deal within one day. If you attempt to do it in a more structured way by reading the resources first, you'll not be able to get to a useful working knowledge of Mathematica within a day.

$\endgroup$
  • 1
    $\begingroup$ Since the beginning, the number of build-in functions has exploded. Now, it's a jungle. Novices can't find their way. So, at the beginning, things was simpler. $\endgroup$ – andre314 Feb 22 '17 at 21:24
  • $\begingroup$ @andre No one forces you to use any build-in functions. $\endgroup$ – Count Iblis Feb 22 '17 at 21:34
  • $\begingroup$ I don't understand. By definition, programming in a language is equivalent to use the build-in functions of that language. There nothing else ! $\endgroup$ – andre314 Feb 22 '17 at 21:40
  • $\begingroup$ @andre If you want to run the LLL algorithm, you can use the command LatticeReduce, or you can go ahead and program the algorithm in terms of more basic operations. $\endgroup$ – Count Iblis Feb 22 '17 at 21:45
  • $\begingroup$ OK, so I wanted to say: at the beginning there was only the basic operations, so it was simpler to grasp the whole vocabulary of Mathematica. $\endgroup$ – andre314 Feb 22 '17 at 21:51
2
$\begingroup$

There is in fact one attempt for Learn X in Y minutes where X=Wolfram. It is not complete but nevertheless it may serve as a starting point (for Wolfram language).

The link: https://learnxinyminutes.com/docs/wolfram/

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.