Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

My experience has been the opposite of this. Mathematica/Wolfram lang seems to be a much more functional(as in paradigm) language, because of anonymous/lambda functions and “Tables”. Even loops are discouraged.

I use it for math/science stuff and I am delighted every now and then when I figure out how to use mappings in a smart and concise way. My coding style in Python changed quite a bit after learning Mathematica. However, I am not a professional coder so take this comment with a rock of salt.



sort by: page size:

tl;dr: The Wolfram Language is an ok 30-year-old language with a huge standard library. You can do really amazing things in a single line of code... as long as there's a built-in function to do that thing. Hmm.

I actually really like Mathematica as a tool for symbolic/mathematical stuff – they're the best at what they do best. But all this Wolfram Language stuff is just way overblown, and realistically a proprietary standard library – however huge – just can't compete with the open source ecosystems of Python and friends.


Really the Wolfram language itself isn't anything spectacular. It makes more sense to mathematicians than most programmers.

What really sets the Wolfram language apart is its gigantic library of functions. Want to look up stock quotes? easy. Weather? easy. Plus tons of other built in functions that would make a machine learning prediction of Coppertone suncreen's stock price based on weather forecast a couple of lines. In another language you'd have to set up the API queries yourself with a library, parse the returns with another library, and do the machine learning with another library. Then you'd have to cross your fingers and hope that an API or library update doesn't break your code. Wolfram promises easy access to clean data and much less heartache maintaining it.


Mathematica user here. It is nice that the Wolfram language has an insane amounts of builtin features (graphics, charts, massive amount of math functionality, tables, database stuff, GPU, 3D printing, blockchain, audio analysis, web scraping, one load function that can interpret over 100 different file formats...etc) it is insanely powerful for a lot of things.

Some of the drawbacks are that it is closed source, costs money (although cheap as far as this kind of software generally goes), but most importantly the succinct benefits of the language can make it painful to deal with. Yes, I can probably write 3 lines to do something that would take a 1/2 page of Python, but I first need to know which of thousands of functions to use and the eccentricities of the language. I'm sure Wolfram employees are that skilled, but I'm not and will not be anytime soon.

With that being said, I spent a few hours writing a notebook demonstrating key fundamental and scientific formulas in my industry this weekend. It was easy and the resulting code, pictures, and graphs look fantastic. I exported it as a PDF for others to use. Even the console is pretty cool. I think it would be a very popular language and environment if it was free and open source. Another problem is running something in production. My solution is to not even bother and just write the final solution in Julia if I need it. I think Mathematica really makes sense though if you're at a lab where everyone else uses it and can pass around Notebooks. In short I really like having it around, but don't like dealing with licensing issues.


I use my university Mathematica license rather than use WolframAlpha because I can never figure out exactly what the latter can do. Wolfram Language, in contrast, has ok enough documentation and a predictable programming model. (It's not perfect---I have a long list of complaints about its design---but it seems to be the best for the kinds of symbolic calculations I'm doing right now.)

I really like both Python and Mathematica, but if I have a mathematics-based task, 90% of the time I'll choose Mathematica over Python. Why? Well, Mathematica's programming language is pleasant to work with, resembling a dialect of lisp with pattern-matching built in, but the real win is in the libraries. If you have a numerical or symbolic computing task, chances are excellent that either there's a function to do it already in the Mathematica standard library, or Mathematica will let you write it in under a page of code.

Don't know why you are being downvoted. Mathematica is a pattern matching language. You set downvalues or upvalues usually. It does have functional syntax and functional methods but the base of it is pattern matching. That contributes to its rather poor performance and necessity to use Compile for C level perf. Most likely Wolfram was inspired by a couple other CAS being developed around the time he started developing Mathematica.

Mathematica is also a lot like Lisp and Mathematica also supports imperative programming. It's also a lot faster than Python.

In fact, I would argue that the only drawback with Mathematica is the fact that you become locked in. (whether or not you care about that is your prerogative.)


This is why I wish Mathematica would just support Python. It is a world-class math software tied to a dead-end language.

While mostly agree with your criticism of NKS, in Wolfram's defense, I have personally found Mathematica to be a joy to use. Under its unfortunate syntax, there's a great functional programming language there. While you can do many of the same things in Matlab or Octave, I always prefer to use Mathematica.

Is there an outline somewhere of the differences between ordinary Mathematica syntax and "Wolfram Language"? I was a bit disappointed when I first discovered that it seemed so only resemble Mathematica, which is excellent for REPL style programming but pretty hopeless for large scale structured programming, much like Matlab.

I'm curious to know what you think makes Wolfram Language (which is the language used in the desktop program Mathematica) hopeless for large scale structured programming.

Cool, is Wolfram programming language basically Mathematica + some special domain-area libraries?

Wolfram Mathematica. It's very high-level language for doing maths. In some ways it's more like a software package with a text interface than a general programming language.

I came across Mathematica via Wolfram Alpha while studying for a Maths degree. I was quite astonished by its capabilities, and have been playing with it ever since.

For context I work full time in an industry unrelated to software, and have kids and all the chaos that goes with them, so have relatively little time to devote to programming. I need something that 'just works'.

I've always felt that I should enjoy programming, and have had several false starts including HyperCard and Eiffel back in the day. But Mathematica / Wolfram Language is the first time programming has actually clicked.

There are various aspects to the Wolfram Language that make it work for me;

- The documentation is enormous, comprehensive and even editable and executable (desktop install). I haven't seen anything that comes close in any other language (Racket would probably be a distant second). In the snatches of time I have, all the information I need can be found using the F1 key, I don't have to waste time going to Stack Exchange and asking others for help

- The concept of everything being an M-expression makes the language very logical. Sub-expressions can themselves be evaluated and understood, larger expressions built out of smaller ones etc

- Lots of syntactic sugar IMO makes the M-Expressions more readable than Lisp S-Expressions, while retaining their usefulness in making code understandable

- Very powerful pattern matching and structural operations on expressions, which are great tools for manipulating expressions and extracting code or data

- Strong support for functional programming, which I find to be more enjoyable than procedural programming

- The language is symbolic, which often allows you to 'play' with programs and understand how they will work in an abstract way before using with real data. As a toy example you can literally fold an abstract function with abstract expressions, e.g. inputting Fold[f,x,{a,b,c,d}] returns f[f[f[f[x,a],b],c],d].

- a huge standard library built in, all working in a way that is remarkably consistent for such a wide diversity of domains, and a language that has been in development for 30+ years

- interactive notebook programming allows me to document my notes and progress along with the code

I did try a few FLOSS options primarily for access to their communities and also ease of deployment (e.g. F#, Clojure, Java) but haven't found anything comes close for my particular needs. I suspect that Racket would be the next best thing.

I think the Wolfram Language does suffer from the Lisp curse, in that it is sufficiently powerful and well documented that individual developers can go a long way without recourse to a community, which in turn hence hinders the establishment and growth of such communities.

I would strongly recommend spending some time learning the fundamentals of the language. My favourite resource is Paul Wellin's An Introduction to Programming with Mathematica (2013). I suspect a lot of the criticism of Mathematica comes from those who haven't learnt the fundamentals, and expect it to work like Python or Java etc, when in fact it is more like a cousin of Lisp.


I used Mathematica a lot during my PhD. Now, using Sage and I am disconcerted by it. The great things about the Wolfram Language is that it is functional, which is a very nice way to think about maths, and how I am now used to. Sage is not functional. You create mathematical objects and those objects have properties that have to extract using Python class functions.

My other gripe, more objective than the above, with Sage is the lack of good documentation. The documentation is certainly complete, but it is painful to read. Mathematica documentation is a treat to read. Every function has its own page with plenty of examples to show capabilities, and show relations to other functions.

With Sage I constantly have to search the web to how to do things, while in Mathematica, I rarely had to leave the inbuilt help.


I worked on Mathematica for 2 years, and really the biggest downside is how its an incredibly powerful tool that fails in many practical applications. It failed to power the backend of a search engine (Wolfram Alpha), and based on my latest version of Mathematica, the dynamic computing features, visualization, and JIT compilation features still have a long way to go. It's an incredible and fascinating tool when you're given these toy models to put into it, but I don't really see a Wolfram Language revolution happening anytime soon.

One aspect I think Mathematica will excel in is code generation. Using symbolic constructs in a very high level language to generate constructs of a low-level language is much easier to do in Mathematica than basically any other language.

On a side note - Linus Torvalds thought naming his operating system "Linux" was too arrogant. I think it's pretty bad marketing to name your programming language after yourself, but then again, the same social conventions that apply to us regular human beings certainly don't apply to Stephen Wolfram.


Mathematica, on the other hand, is brilliant. It's a wonderful language with wonderful libraries and functionality, and it's quite clear how to write robust code in it.

Exactly. Implementing the language is one thing. Mathics does it well. But implementing the vast library is much harder. (Though the essentials are possible as proved by Mathics.) Let alone assembling the countless example data it comes with.

Also nitpick but you can run Wolfram code without Mathematica directly using the Wolfram Engine.


Wolfram Language is essentially Lisp with M-expressions instead of S-expressions, coupled with a clone of MIT’s MACSYMA symbolic mathematics system built around term rewriting.

Mathematica is the Wolfram Language plus a user interface similar to the Symbolics Dynamic Listener that acted as your command line front end. Jupyter Notebooks are quite similar since the idea of a scientist’s or engineer’s notebook where content is “live” is a pretty common one.

next

Legal | privacy