Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

Having used Mathematica as a "gateway" language, where to from here?

I have been using Mathematica for about a year. It is the first language that I have attempted to learn. I'm still very much a newbie, but there are moments I feel more like I am waving than drowning. As with many addictions, at first it left an unpleasant taste, but with time, using Mathematica started to open up new possibilities and I have come to depend on it.

It has occurred to me that there are a number of reasons why at some stage I would like to learn some new language(s) to complement Mathematica and further nurture my 'coding brain'. At times I feel slightly handicapped by not really understanding the capabilities/pitfalls of, for example, Do loops and other constructs that seem common in many languages. Indeed, it would be nice to be able to understand/relate to programmers that don't use Mathematica.

Although a lot of coding paradigms can be used in Mathematica, I feel it would be instructive to spend some time learning strictly procedural, object-oriented, etc. programming styles in the context of another language. Which other programming languages should a Mathematica-only user be interested in, so as to appreciate the underlying programming principles and constructs that one takes for granted with Mathematica?

Alternatively, I understand that there are a number of languages that can be implemented or interfaced from within Mathematica. Would it be a worthwhile trying to learn other languages/coding styles without leaving the notebook environment?

Answer*

Cancel
3
  • $\begingroup$ +1 I think this could be an interesting discussion ;) $\endgroup$ Commented May 23, 2013 at 3:19
  • $\begingroup$ Considering how blurry the boundary between code and data is in mma, I take it then that mma is homoiconic? $\endgroup$
    – rcollyer
    Commented May 23, 2013 at 3:20
  • $\begingroup$ It was mentioned in the question that it would be good to explore procedural languages. My knowledge of these things is limited, but it seems that Scala is very much functional. This doesn't mean that this isn't a good answer, but I think it's important to note how this does and does not satisfy the question. $\endgroup$ Commented May 23, 2013 at 3:42