8 ms·
I tried to look beyond that because it seems like a personality disorder he has little control over, but after spending some time on the site I still don't have
by michaelwww 13y ago
I tried to look beyond that because it seems like a personality disorder he has little control over, but after spending some time on the site I still don't have a good idea of what Mathematica is or why I would want to use it. It seems to be all things to all people. If it's a computer language, then you could say that about any computer language. Mathematica seems to be a computer language with an IDE that provides a multitude of components (25 yrs worth.) It's even got a web dev component, but I couldn't figure out what benefits it brings.
- jfarmer 13y agoIt's a programming language and an associated IDE for doing mathematical and scientific computing. It is similar to Matlab in some ways, although Matlab has a strong "numerical" flavor and Mathematica has a strong "symbolic" flavor. As a language it use an M-expression-like syntax. See http://en.wikipedia.org/wiki/M-expression http://en.wikipedia.org/wiki/M-expression
- mjn 13y agoI believe its IDE was also the first widely used one to take the "mathematical notebook" approach where you can sort of free-form arrange formulas on a page and link them to each other. Unless I'm mistaken, at the time the other computer-algebra systems (Macsyma, Maple, etc.) all used REPL style sequential interfaces. I mostly prefer the REPL interfaces myself, but a lot of people like the notebook style, and I think Mathematica's approach to that has been influential on some recent open-source interfaces like Sage Notebook and iPython Notebook.
- whyenot 13y agoMathCAD[1] was the first to use the notebook approach. It was/is a neat application, more along the lines of Matlab than a CAS like Mathematica. [1] http://en.wikipedia.org/wiki/Mathcad http://en.wikipedia.org/wiki/Mathcad
- taliesinb 13y agoWeirdly, Mathematica integrated support for high-performance numerical linear algebra libraries from Intel and others a couple years before MATLAB did. So your point about symbolic versus numeric flavor might have been correct prior to version 6, but it is no longer true (Mathematica 10 will be released later this year). In fact, they now use many of the same libraries for pure numeric work. Numeric (as well as hybrid numeric+symbolic) computation is possible in Mathematica. In MATLAB, symbolic math requires a clunky add-on that is far from competitive with what Mathematica can do. I work at Wolfram.
- jfarmer 13y agoNeat! I haven't used Mathematica regularly since 2006-or-so, when I was studying mathematics at the University of Chicago. If memory serves, 5.2 was the then-current version. It's an amazing piece of software.
- opminion 13y agoThat's because probably most of their revenue comes not through direct marketing but through site-wide licensing. This is compounded with the fact that Mathematica's main advantage is in its combinatorial possibilities (just like other more popular programming languages), and not in any specific application. Think of it as marketing Lego blocks as a business-to-business product. So your university / company has a licence, and you are naturally sceptical about something that has a definitely weird syntax, they need to tell you "this can help you somehow" and "it's actually better this way". And if your employee asks you for a licence, and you are naturally sceptical, they need to tell you "this is actually useful in tons of other problems".
- michaelwww 13y agoIt must be a hard sell at the prices they charge compared to free and open source Python Scientific, Financial, etc... (http://www.scipy.org/ http://www.scipy.org/)
- reeses 13y agoI'm not sure they have to do much 'selling'. They had a product on the market at the right time to become 'the' solution for computational math. As with many applications or languages (or, in this case, both), being exposed to it at the right time creates a client for life. Those lifers become evangelists in the same way lispniks do (and watch out for those of us who are both), requesting that employers license the software. If you are between, say, 35 and 45, went to a "decent" university (i.e., one Wolfram and/or NeXT targeted), and have an applied math background of any sort (CS, physics, engineering, etc.), you were very likely exposed to Mathematica. It's just a few steps from there to having a prof use it in a lab or using it because an employer had made a previous investment in development. At that point, much as with C, or Java, or CLISP, or whatever, it becomes a fallback computational tool. SAS acquires many of its licensees in a very similar way.
- IvyMike 13y agoAs I work through the Project Euler problems, I'm constantly amazed by the Mathematica solutions. Very often, I look at their answer and think "that's cheating... it was way too easy in Mathematica". So as a non-Mathematica user, it certainly appears to be a very effective technology, and in the right hands and right domain, it seems like it could pay for itself very, very quickly.
- cschmidt 13y agoIf R is a programming language that knows how to do statistics, then Mathematica would be a programming language that knows how to do math. It has built in support for just about every kind of math I've ever needed. It is very good at doing symbolic algebra, which I use quite frequently. It can do symbolic calculus (taking derivatives and integration), which I've also used extensively. Supposedly it can compute every one of those symbolic integrals in the big, fat integral table books they have at the library. The programming language can be used various ways, but it is most naturally used with a functional approach. The "Map" function is frequently used, and I naturally end up using anonymous functions quite a bit. I also like the graphics package, and find it quite intuitive to build up complex plots. I prefer it to matplotlib or R's graphics. (That said, some of that is just my years of experience.) There's a lot in there.
- cschmidt 13y agoAs a very simple example of that, you use variables that behave like mathematical unknowns. When I run the following line of Mma code, x, y, and z are undefined. It finds values for these unknowns. That's kind of different than many languages. Solve[{x + y + z == 3, y + x == 4, z + y == 7}, {x, y, z}] gives: {{x -> -4, y -> 8, z -> -1}}
- taliesinb 13y agoHere's a more hacker-ish explanation about what is different and cool about Mathematica: https://news.ycombinator.com/item?id=4015695 https://news.ycombinator.com/item?id=4015695
- mietek 13y agoThank you for this very interesting explanation. I've tried to get into Mathematica a couple years ago, but struggled. Can you suggest a good way to scale the learning curve?
- taliesinb 13y agoWe're acutely aware of this. It's always a challenge to onboard users to a tool this broad and deep. Refactoring our documentation a bit for M10 will help, the predictive interface in M9 helps, and there are some cool "code hint" ideas that are coming in M10 that will hopefully make it easier to keep learning. We'll also soon be launching a community site to make it easy to discuss functionality, seek answers, and share code. For now, http://mathematica.stackexchange.com http://mathematica.stackexchange.com is a good resource. We're also working on getting some materials about the Wolfram Language that should make it easier for people with existing programming experience to grok what is unique and different about WL, and how they might go about learning it. Probably the best resource remains the existing Mathematica documentation. It is vast -- containing for example more than 100,000 evaluatable code snippets that demonstrate each function being used in multiple ways. It is available online (http://reference.wolfram.com/mathematica/guide/Mathematica.html http://reference.wolfram.com/mathematica/guide/Mathematica.h...) as well as in-product (double-click function you want to know about, then press F1 or Cmd+Shift+F). Following hyperlinks from familiar territory can get you a long way. It's quite easy to get lost in it, of course, so here's a short list of "bread and butter" functions that I think every WL programmer should know really well: https://gist.github.com/taliesinb/5848321 https://gist.github.com/taliesinb/5848321 Lastly, here is an eclectic mix of guides that might serve as good 'anchors' for some documentation spelunking: http://reference.wolfram.com/mathematica/guide/LanguageOverview.html http://reference.wolfram.com/mathematica/guide/LanguageOverv... http://reference.wolfram.com/mathematica/guide/RulesAndPatterns.html http://reference.wolfram.com/mathematica/guide/RulesAndPatte... http://reference.wolfram.com/mathematica/guide/Patterns.html http://reference.wolfram.com/mathematica/guide/Patterns.html http://reference.wolfram.com/mathematica/guide/StringPatterns.html http://reference.wolfram.com/mathematica/guide/StringPattern... http://reference.wolfram.com/mathematica/tutorial/BlocksAndLocalValues.html http://reference.wolfram.com/mathematica/tutorial/BlocksAndL... http://reference.wolfram.com/mathematica/tutorial/LevelsInExpressions.html http://reference.wolfram.com/mathematica/tutorial/LevelsInEx... http://reference.wolfram.com/mathematica/tutorial/ApplyingFunctionsToPartsOfExpressions.html http://reference.wolfram.com/mathematica/tutorial/ApplyingFu... http://reference.wolfram.com/mathematica/tutorial/ManipulatingValueLists.html http://reference.wolfram.com/mathematica/tutorial/Manipulati... http://reference.wolfram.com/mathematica/tutorial/IntroductionToDynamic.html http://reference.wolfram.com/mathematica/tutorial/Introducti... http://reference.wolfram.com/mathematica/guide/SymbolicGraphicsLanguage.html http://reference.wolfram.com/mathematica/guide/SymbolicGraph... http://reference.wolfram.com/mathematica/Compile/tutorial/Overview.html http://reference.wolfram.com/mathematica/Compile/tutorial/Ov... http://reference.wolfram.com/mathematica/guide/GraphsAndNetworks.html http://reference.wolfram.com/mathematica/guide/GraphsAndNetw... http://reference.wolfram.com/mathematica/guide/MatricesAndLinearAlgebra.html http://reference.wolfram.com/mathematica/guide/MatricesAndLi...