Frequently Asked Questions

WReach? Is that connected to WRI somehow?

The "WR" in my name has nothing to do with the company that develops Mathematica. It is just a coincidence. If I had known that I was going to post so much about Mathematica when I first joined StackExchange, I would have chosen a different handle.

Why do you start all your global variable names with $?

I use dollar signs for ad hoc global variables because I have been bitten too many times by accidentally assigning an own-value to a symbol that I happen to use, for example, in a symbolic equation. So I am in the habit of writing $x instead of x. I stick to that convention even for longer symbols like $initialUrl. Just like the regular symbol convention, Mathematica's predefined global symbols all start with a capital letter after the $. My ad hoc symbols always start with a lower case letter, so there is no conflict.

Why do you put semicolons and commas at the beginning of the line instead of at the end like a normal person?

I don't think of it that way. Rather, I switch from horizontal to vertical layout when a single expression is too long to fit on one line. This has the interesting side-effect of making the important delimiters stand out and line up. I first ran into this practice in the SQL community. SQL "programs" have the unpleasant property that they must be written as a single statement -- even if that statement is a hundred lines long (or more!). Sometimes Mathematica expressions share that property. This style is alien to languages like C or Javascript in which punctuation like semicolons are terminators. But it pops up surprising often in languages where semicolons are separators (like SQL, XQuery, Pascal or Mathematica).

Why don't you like to answer questions about Mathematica performance?

The Mathematica performance model is very opaque. Unless a performance question specifies a very specific set of circumstances, there are a lot of factors to take into account:

  • performance goal: speed vs. memory vs. quality
  • symbolic vs. numeric operations
  • the data types of the operands
  • the size of the collection objects (lists, associations, etc.)
  • the presence or absence of packed arrays
  • packed array preservation or stripping by operators
  • system properties and expression characteristics that control auto-compilation
  • method selection within operators
  • compilibility of operators
  • various system caches, some visible some not, some flushable some not
  • the version of Mathematica being used (expression performance has been known to change by orders of magnitude microrevs)
  • ability to verify correctness

It is hard to write good answers that make performance claims without qualifying these factors.

people reached
  • Member for 9 years, 3 months
  • 9,012 profile views
  • Last seen 11 hours ago

Top tags (228)

Score 1,017
Posts 125
Posts % 23
Score 792
Posts 94
Score 601
Posts 36
Score 598
Posts 62
Score 448
Posts 42
Score 437
Posts 39

Top posts (554)

View all questions and answers

Badges (400)