Why Wolfram Mathematica did not use Lisp (2002)
ymeme.com
ymeme.com
They had tried to use Macsyma for their physics work, and found experimentally that it was too slow on what they considered to be "medium" problems, and could not handle "large" problems at all. They were trying to do things that were pushing the limits, and pushing them hard, of what could be done on the hardware of the day [1].
They showed some benchmarks comparing SMP to Macsyma using the kind of problems that had arisen in their physics research. For "small" problems, SMP was a bit faster. Maybe 2 or 3 times or so faster.
For "medium" problems, it was 100 times faster.
And it could do "large" problems.
I don't think I ever heard Wolfram say anything about Lisp being 100 times slower than C in general. I only heard claims like that when he was talking specifically about building systems like SMP, and was comparing basing such systems on top of a general purpose high level language (Lisp) vs. basing them on something built and optimized specifically to support a system like SMP.
[1] The SMP work was done on CITHEP's (Caltech High Energy Physics) VAX 11/780. I was an undergrad at Caltech at the time, working part time at CITHEP as a system programmer and admin, so knew many people involved in SMP development and got to watch it as it progressed, and then was put into production by working physicists.
The number of diagrams that have to be evaluated quickly explodes beyond the first order and in the case of QCD already at two loops would require herculean efforts to do by hand. In fact Schoonschip was one of the first computer algebra systems and developed for just this reason.
Beyond that areas like Supersymmetry and certain parts of General Relativity would be very painful to work in, if everything had to be done by hand.
Wolfram's doctorate was in high energy physics, so they were probably things in those areas.
I tend to use some proprietary scientific software, but a lot of it is because academia already has already invested in codebases for, say, Stata, GAMS, Matlab and so on. But Matlab is two steps removed from raw Fortran; and what sets it apart from the many identical-syntax clones are a few narrowly-oriented toolsets aimed at some kinds of engineers.
Mathematica is the only one I buy versions for my home computer. It's very, very good.
Isn't the world littered with such examples? Office is more feature-full than OpenOffice, Photoshop is more feature-full than GIMP, Illustrator is more feature-full than Inkscape, InDesign is more feature-full than Scribus, Avid|Final Cut|Premiere is more feature-full than any open-source NLE.
Mathematica, on the other hand, is squarely in the terrain usually covered by open source.
Still, for a lot of people, GIMP is a very valuable open source alternative to Photoshop; not as full-featured, of course, but then again, nothing is. There are lots of tutorials for achieving interesting effects using GIMP. I've never heard it described as something people learn to pad their resumes.
Krita is pretty cool, too. If I'm not mistaken, it's not a full-featured Photoshop replacement either.
And GIMP doesn't really lack many features Photoshop has, and even has some that Photoshop doesn't. UI could be much better (especially controls for transformations), but it's not that horrible either. The reason why GIMP sucks in comparison with Photoshop is that few features it lacks are absolutely game-changing. Like effect masks. If you use effect masks (and pretty much every proficient Photoshop user does), software without them is not an option for you. And I believe it isn't that easy to introduce them to GIMP either.
Like colorspaces, effect masks, etc.
I found Krita to be a far better photoshop replacement than GIMP, actually. (With two differences: moving selections is a bit more complicated, the option for that is hidden by default, and it does not have a simple contrast-brightness slider filter)
This is a matter of debate, depending on what circles you're traveling in. If you're working in a "mixed environment" where some people are using OpenOffice and some people are using Microsoft Word, you're likely to run into problems that range from minor annoyance to show-stoppers very quickly. Some of this can be blamed on Microsoft's weird file formats, but this is true not only for .doc files but for the better-documented (if arcane) .docx and, in my experience, even with RTF. I'm in contact with a fair number of small-to-medium press fiction editors, and while a fiction manuscript is one of the simplest use cases you can imagine in terms of formatting, almost every editor I've talked with has complained about OpenOffice (and to a lesser degree LibreOffice) screwing up comments and revision tracking. I don't really want to use Microsoft Word, but so far I haven't found an open source equivalent for my needs that is good enough. (The closed source Nisus Writer Pro and even Apple Pages seem to do better, ironically. But that's not to say they don't have their own problems.)
I tend to think of open source's most well-established terrain as languages and server-side components where UI is not really a major issue.
The fact that 90% of the world is using Microsoft's format is certainly relevant for everyday use, but it's orthogonal to the question of whether an open source project can achieve feature parity with a closed source product.
File format compatibility is always hard and I'm not convinced MS does a better job reading odt than LibreOffice does with OOXML. But LibreOffice does have a reasonably comparable feature set, even if the UI is not as attractive.
Pile up all the features Office has but LibreOffice doesn't on one side, pile up all the features that LibreOffice has but Office doesn't on the other. What pile's larger?
It's kind of a pointless argument over whether or not LibreOffice has ENOUGH features; enough features for who? It's a global question with local answers. It's pretty easy to count who has MORE features, though, and Microsoft Office wins there.
But, FWIW, most of the new "features" Microsoft adds to Word seem to be UI improvements (e.g. https://support.office.com/en-us/article/What-s-new-in-Word-...). And if you want to claim that Office is more usable than LibreOffice, and that this is generally true of closed source vs. open source projects, you won't get any arguments from me.
The opposite is very common, as your list demonstrates. Also another big category is CAD, and CAM. There are no decent open source programs in that space at all!
I think the canonical example has been web browsers, for instance.
[1] Safari is kind of a border case -- all the chrome is closed source, but the rendering engine and I think the Javascript engine are open source. I am lumping it in as an open source project here, I can understand why someone might argue the point though.
Linux is a lot cheaper than Windows. More importantly, it's a lot LOT cheaper than most proprietary Unices. And it's freely modifiable. If that makes it "better" for you, have at, I am not going to quibble.
If you are talking about Linux as a desktop, rather than server, operating system... there are reasons that Windows users outnumber Linux users on the desktop on the order of about 90 to 1. It's not all because Microsoft is evil. If you use Linux as your primary desktop operating system, I'm happy for you. If you think it's better for you, great. May you go forth and prosper. If you think Linux far surpasses Windows as a desktop operating system in the general case, then you are incredibly delusional and should seek some help.
Yeah you seem unbiased...
And Linux and the BSDs are getting a lot more love on consoles, too – look at the SteamBox.
With 16% of all current generation games being able to run on linux, often (like in the case of the new Batman game) even running better than on Windows (or expected to do so), it is getting more and more towards equality.
You are literally making stuff up. The OSX/Linux port of Arkham Knight doesn't even have a release date yet.
And about the 16%: Look at the Steam games catalogue.
To me, it seemed like a software package. Of course, it /is/ a software package, but making models in CAD doesn't feel like writing software to me. Making models in CAD reminds me of playing with LEGOs, a very visual activity. Typing in coordinates just seems wrong.
Now, I failed to effectively learn the software. It is totally possible that if I were a faster learner, or had more perseverance, I would be born again as a BRL-whisperer. I was just hung up on how wrong and difficult it felt compared to SolidWorks.
“Does anyone want to bet as to which will gain self-awareness first: Wolfram Alpha or Wolfram, Stephen?”
I mean, Wolfram's bizarre confirmation bias about discrete automata is (apparently) apparent to the computer-y people because we've seen discrete automata and have goofed with all sorts of complexity-generating simple formalisms (L-systems, genetic algorithms, ...) that are impressive for giggles (and some industrial applications) but don't amount to a kind of Kurzweilian Transcendence.
... but we're not all mathy enough to pick apart what string/brane theorists or even orthodox quantum gravitationists are doing and say with (possibly misguided) confidence that it's no hope for a theory of everything. The people who do are continental philosophers who tend to get laughed out of the room, often because they have silly overarching theories (Zizek has a couple of points about quantum physics, but then, he thinks psychoanalysis explains human history) that must be relentlessly mocked.
And for good reason. For example, philosophers (Zizek included) raved about Badiou's Number and Numbers. It is a nice history of the approaches to formalizing the concept of number, but there is no philosophy there. As soon as Badiou or Derrida or any other continental philosophers try to do anything else with mathematics it just becomes a grossly inappropriate and confusing analogy.
The kind of theoritical psychoanalysis Zizek talks about is not really classic psychoanalysis at all. Even Marxism at the lowest level is a theory of psychology.
Not that it excuses his sentiment at all. Seemingly too arrogant to take the time to contemplate himself in an honest light.
If that's not extreme NIH, I don't know what is.
Worked well for him though...
After that, I didn't even suspect it didn't use Lisp until today.
[1] I think in Hofstadter's Metamagical Themas
This would not, of course, be a good comparison between the languages, but it might well give you a 100x speed difference. Taking Pitman's story at face value, it sounds like Wolfram wasn't very sophisticated about these things, and wasn't open to listening to explications. So he might have extrapolated a single dumb benchmark into a universal truth.
At the same time, it sounds like Pitman tried to convince Wolfram to represent floats as the ratio of two bignums, "with lots of other hidden bits to assure that any decimalization had enough bits to be precise." I can understand Wolfram not particularly wanting to taste any of that pie. I have worked with a simulation platform that uses paired BigNums just for time values (other values in the simulation use regular double-precision variables), and it was a big drain on simulation speed.
We're able to use higher-level languages because they've developed the trick of identifying inner loops and hard coding them in C (this is how we get Torch and train big-ass neural networks in Lua).
Of course, the problem with that is the Lisp data representation used, not Lisp itself.
Lispers aren't stupid, which should be distinguished from how easy it is make a simple Lisp. Making a performant one takes effort on the scale of making any similar language implication good and fast.
What I meant to be saying is that Wolfram plausibly may have looked at a bad data representation for matrices on Lisp, and concluded that Lisp was inherently 100x as slow.
P.S: Maxima actually uses a list-of-lists to represent a matrix.
This guy was a friend of Wolfram's mother who asked for help because 8 year old Stephen was "bored with dinosaurs" and wanted something else to think about.
http://blog.stephenwolfram.com/2013/06/there-was-a-time-befo...
It might be biased or self-serving but it's more interesting than an offhand USENET recollection about a brilliant and arrogant young man.
It seems clear Lisp would have been a perfectly fine choice, as would a number of other languages. It also seems unlikely the world (or even Mathematica) would be dramatically different for it.
I wish more "X is better than Y because of Z" discussions would admit aesthetics were an important factor. Instead we end up with convoluted justifications that just annoy everyone (Lisp is slow, C is fast, C++ is complicated)
He remains two of those things to this day. I have no doubt Wolfram is legitimately a genius (despite his arrogance and tendency to take credit for other people's inventions) and I adore Mathematica as it is, but I can't help but wonder how much better it would be if Wolfram's personality was less... abrasive.
He strikes me a clearly very smart, just not as smart as he thinks he is (not uncommon, but more rare at his level of talent I think). An aside: For what it's worth, I find the "genius" label problematic in general, not just for him. I think it's a concept that probably has useful application, but to < 1% of the people to whom it's applied.
His abilities as a technical writer are middling, unfortunately, and at some point being able to communicate your ideas is almost as important as the ideas.
I too wonder how much further Mathematica could have got if he hadn't pushed away a number of clearly talented people.
I'm certain there is a small, interesting, well written book hiding in all that verbiage somewhere, but it's well hidden.
And I agree wholeheartedly... I once had students ask me why I put so much emphasis on lab reports in an [upper level engineering course]. My sincere belief is that at least 50% of working in a technical field is your ability to communicate. The most genius answer has little value if you can't properly articulate it.
ANKOS is the exact example I have in mind when I think about this. Really I find the premise that cellular automata are somehow fundamental to computation and the universe interesting (though maybe I don't buy into it to the same degree as Wolfram), but his presentation of this thesis is so dreadfully tedious and conceited as to squash any desire I might have to investigate it.
According to this (https://en.wikipedia.org/wiki/Macsyma#Commercialization) Wikipedia article, Macsyma (a Lisp-based CAS that Mathematica was designed to compete with) was running on 68000 Sun-1s in the mid-80s and a Windows port came out about a year after Mathematica came out for the Macintosh (1989 and 1988, respectively). The pain must have been real because Mathematica ended up with all of Macsyma's market: "Macsyma's market share in symbolic math software had fallen from 70% in 1987 to 1% in 1992"
Commercial Macsyma is ... a special, and rather sad case. As explained to me by Danny Hillis in 1982-3 when he wished my company, LMI, could provide Lisp Machines for Thinking Machines, Inc. to help develop the Connection Machine 1, one motivation was Symbolics' pathological business practices, and the nastiest example then was Macsyma. Back then the MIT Technology Licensing office was still horrible, and it was arranged that Arthur D. Little, I think, recommend how Macsyma be licensed, and it ended up being exclusively to Symbolics, which was not a common approach.
As far as we could tell, Symbolics bought it primarily to keep it out of the hands of LMI and anyone wanting to run it on conventional hardware, and went so far as to try to get people who have Vaxsyma copies to send them back and stop using it, which was not well received as you might imagine. That helped Fateman, using the DoE which had sponsored much of the work, to force MIT to release a snapshot as open source, which eventually became Maxmia.
In house, Symbolics treated it with benign neglect, and I don't think it was massively improved. This situation became ironic as their hardware business declined and the Macsyma unit became an important cash cow, but as these things go, for the usual internal political reasons, it never got development resources commensurate with its actual status and potential.
MIT also didn't reward the people who'd originally written it at MIT, something Joel Moses, who I happened to be directly reporting to in the 1987-8 time frame when he was the EECS department head, was obviously not happy with, along with I'm sure many others. So in short, Symbolics did nearly everything they could to mess up the Macsyma community and product, and the noted decline, once there were good alternatives, was inevitable.
RMS is not 100% wrong in his loathing of Symbolics....
How so? Don't you think they tried and explored that? In reality in early 90s nobody was interested in Lisp anymore. Macsyma was still sold to the market, but didn't have much success. Nichimen's N-World had a small customer base, ran on SGIs (which were still expensive) and then under Windows NT. Statice on non-Lispms never left the beta status.
> I read on Usenet somewhere that there was an unsuccessful attempt to acquire Macsyma as a separate business.
That's false. See Macsyma, Inc. The company was founded in 1992 and in 1999 acquired by 'Symbolics Technology'.
There is a lot of butthurt from various people, who seem to know better how to run a company in hindsight. Symbolics sold Macsyma on various platforms: Lispm, Windows, DEV Vax, Sun Unix.
> it never got development resources commensurate with its actual status and potential.
Symbolics was still selling Macsyma at a time when competitors like LMI or TI were no longer in the Lisp business.
The exclusive licencing to Symbolics resulted in a delay in porting it to non-Lispm platforms, due in part to the cited internal opposition. And not too much later Symbolics effectively exited the market; they too have a lot to say about how not to run a company.
Symbolics was still selling Macsyma at a time when competitors like LMI or TI were no longer in the Lisp business.
Yet for some explicable reason people stopped buying it and its market-share crashed to 70% to 1% in 5 years.
A[B, C][X, Y][Z]
does not straightforwardly translate into an S-Expression but is potentially convenient for symbolic algebra. I believe that I read this emphasis on currying in one of Wolfram's own accounts on how Mathematica came to be. It is probably also important that the internal data structure used by Mathematica is not a list, I think the support for "level specs" points at how internally the data is most likely represented, although I'm not sure.
(((A B C) X Y) Z)
We could clean up this syntax and write a macro. Let's call that M. Then one could write
(M A (B C) (X Y) (Z))
The definition of M is quite simple.
Secondly, Lisp only uses lists for the representation of most of its source code. Actual computational data structures of course need not be lists. Mathematical expressions need not be represented as lists in Lisp.
(-> A [B C] [X Y] [Z])http://www.aleph.se/andart/archives/2009/04/monumental_egos....
This would be a great question to answer using Wolfram Alpha, since it does have nanodijkstras[2] and Wolfram[3]. Alas, the conversion is beyond it[4].
[1]: https://www.youtube.com/watch?v=Xoyw8LHGtzk
[2]: http://www.wolframalpha.com/input/?i=nanodijkstra
[3]: http://www.wolframalpha.com/input/?i=wolfram
[4]: http://www.wolframalpha.com/input/?i=wolfram+to+nanodijkstra
Example:
applysymmetry(exp,opdum,symtype):=block(
[getdum:get(opdum,symtype),piece,inflag:true,partswitch:true],
if getdum=false then return(exp),
subst(lambda([[arglist]],
apply('aplsym1,append(getdum,[arglist,opdum]))),
opdum,exp))$
If you know Lisp, you will recognize typical constructs like IF, RETURN, SUBST, LAMBDA, APPLY, APPEND, ...I've always thought Mathematica would have been a better system build on top of a "real" lisp, and would have got there faster. I've never heard any of Wolframs statements about the parallels that have made me question that, but I could be missing something.
M-expressions is what I meant, I think I misremembered the name.
Mathematica uses a fixed-point evaluator; that is, expressions continue evaluating until they reach some stable state. Every common Lisp I've seen will only evaluate once unless you explicitly code for it.
While this evaluation behavior is very useful for mathematics, I find that it makes Mathematica a poor general-purpose programming language. It's pretty easy to wind up with confusing evaluation behavior, and controlling evaluation in Mathematica is a very complicated topic. There are myriad language constructs used to do so: Unevaluated, Hold, HoldForm, HoldAllComplete, other Hold*; see http://stackoverflow.com/questions/1616592/mathematica-uneva... and http://library.wolfram.com/infocenter/Conferences/377/ for more information.
http://www.stormtiger.org/bob/humor/pournell/story.html
"Personally, I'd just turn off his account. It's not like it's the first time, and he not only flaunts his use of our machines but stabs us in the back with grumblings about why he doesn't like this or that program of ours when he gets a chance. (Am thinking particularly of an article he wrote which condemned Lisp for reasons amounting to little more than his ignorance, but which cited Teach-Lisp in a not-friendly light... The man has learned nothing from his presence on MC and sets a bad example of what people might potentially accomplish there. I'd rather recycle his account for some bright 12-yr-old...)" -KMP
Interestingly, Pournelle was the kind of guy who could exercise Macsyma, or at least his first computer program solved a system of 60 or so linear equations on a IBM 650, an "affordable" machine back in the '50s that used a magnetic drum for its main memory.
"Mr. Pournelle bids me tell you that if you intended to annoy him, you have succeeded, and that his next column in BYTE will have a lot to say about the ARPANET...."
"One thing that is known about ARPA: you can be heaved off it for supporting the policies of the Department of Defense. Of course that was intended to anger me. If you have an ARPA account, please tell CSTACY that he was successful; now let us see if my Pentagon friends can upset him. Or perhaps some reporter friends. Or both., Or even the House Armed Services Committee."
And by the way, it was POURNE, not JERRYP:
MIT Maximum Confusion PDP-10
MC ITS.1488. PWORD.2632.
TTY 57
16. Lusers, Fair Share = 86%
*:login pourne
That account has been temporarily turned off.
Reason:
Think of it as evolution in action.
Any questions may be directed to USER-ACCOUNTS
*
And you have to admit, he did asked to be dumped off the net, so he got what he asked for (although he failed to deliver what he promised in return: seppuku):"thank you. if left to you I suppose I cewrtainly will find my accounts terminated. Your nice private message appreciated. seppuku follows.. maybe you ought to have me dumped off the net and be done with it? or must you work through someone else? J. E. Pournelle"
Kyoto Common Lisp was available in the late 80s and was fairly portable since it compiles to C.
I don't know enough about lisp implementations to know if these differences still hold, but they still hold for Clojure and ClojureScript, for example. Though some people have done some experimentation like https://github.com/kovasb/combinator
In the email under discussion though Wolfram was beginning work on SMP, which preceded Mathematica by about 6 years and influenced the design of Mathematica both in what to do and what not to do: http://blog.stephenwolfram.com/2013/06/there-was-a-time-befo...
On the one hand I feel a conflict of wanting to use every new, shiny tool. But a dose of this attitude would help me get a lot more work done.
What does hair (or lack thereof) have to do with anything?
It's also one of the main reasons I have been using Octave and Python/Anaconda.
None of the GPL Lisps compare to what is offered by the likes of Allegro Common Lisp and similar environments.
Care to elaborate?
Additionally their optimising compilers are quite good.
One thing I'm sure was very significant was an IP fight with his institution, Caltech, which prompted him resigning in 1983, the same year RMS gave up on Lisp Machines and started the GNU project.