Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: I want to learn Wolfram Language
13 points by gsaga on Oct 30, 2018 | hide | past | web | favorite | 7 comments
I'm a relatively inexperienced cs student and am interested in learning Mathematica/Wolfram Language. It's a great tool and can do amazing things, but whenever I tried to actually 'learn to program' in this language, I couldn't get very far. My experience is mostly with OOP. I've heard that it's based on lisp and is a functional language. I've tried to teach myself WL with the tutorials included with the package but they seem to be lacking, in that they assume a level of familiarity with the language, and the official examples look like a brainfuck program to me.

What path should I follow if I want to teach myself Wolfram language?

Since you're a CS student, i recommend incorporating Mathematica into your studies as much as possible. Especially for your more math-oriented courses. That's how I learned Mathematica as a math major. Anything from checking the prime factors of a number, to visualizing a parametric function, so much more.

Couple caveats: Matlab will be more useful for graduate studies and industry (different tool, however). Also, with such a powerful CAS, there's a risk on using it too much and becoming overly reliant on it. Just like any calculator. Use it to check your answers and explore an idea, but don't lose your mathematical intuition by doing all of your thinking with it.

I think it's important to figure out what you want to use the Wolfram Language for. As a reference, I have about a year of experience with it, using Mathematica to do theoretical Solid Mechanics calculations with their phenomenal symbolic toolbox.

Here are two notebooks a friend of mine put together covering a few basic concepts that may help you:


When you see weird syntax I suggest doing FullForm[Hold[whatever]] which is kind of like doing quote and macroexpand in a Lisp.

  f[#u, #v, #u] &[<|"u" -> x, "v" -> y|>] // Hold // FullForm  =>  

  FullForm[Hold[f[#u, #v, #u] &[<|"u" -> x, "v" -> y|>] // Hold // FullForm]] =>
  Hold[FullForm[Hold[Function[f[Slot["u"], Slot["v"], Slot["u"]]][Association[Rule["u", x], Rule["v", y]]]]]]

Just in time for Hallowe'en: The Nightmare before Lisp.

It's debatable whether anything like a traditional "app" can even be built in Wolfram. Unlike most languages, Wolfram consists of a huge library of very specialized functions which are poorly documented and don't related syntactically or conceptually to other functions. This is because Mathematica was designed as a tool for folks who are solving equations, not writing apps.

I think Wolfram is fun to play with but the lack of a real IDE or any serious documentation will hinder your attempts to produce "real" software with it. So definitely have a look but, as another poster suggested, ask yourself what you want to do first and then pick the language based on that.

-- D

look at the docs

one good project could be a fractal generator

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact