
Launching Mathematica 10 - co_pl_te
http://blog.stephenwolfram.com/2014/07/launching-mathematica-10-with-700-new-functions-and-a-crazy-amount-of-rd/
======
gohrt
This made me laugh:

[http://www.wolfram.com/mathematica/new-in-10/key-value-
assoc...](http://www.wolfram.com/mathematica/new-in-10/key-value-associative-
arrays/)

Version 10 introduces fundamental new constructs called associations. They
associate keys with values, allowing highly efficient lookup and updating,
even with millions of elements. Associations provide generalizations of
symbolically indexed lists, associative arrays, dictionaries, hashmaps,
structs, and a variety of other powerful data structures.

~~~
jjoonathan
A very broad generalization of hash tables has been built into the language
since day 1 so this feature is mostly for people who just want a structure
that they are already used to (or don't want the extra behavior for
performance reasons or whatever).

Hash-tables in previous versions of Mathematica:

    
    
        >mymap["abc"]=1
        >mymap[2]=2
        >mpmap[hello]=3
        >mymap["abc"]
        1
        >mymap[2]
        2
        >mymap[hello]
        3
    

Whoa:

    
    
        >myDerivative[a_ x_^n_] = n a x^(n - 1)
        >myDerivative[1.1y^3]
        3.3 y^2

~~~
bburky
More specifically, the the previous hash-table-like method is just assigning
constants as values for a function.

    
    
        In[1]:= mymap["abc"]=1;
                mymap[2]=2;
                mpmap[hello]=3;
                DownValues[mymap]
        Out[4]= {HoldPattern[mymap[2]]:>2,HoldPattern[mymap[abc]]:>1}
    

Defining a function is really just a pattern is matched based on arguments,
and is replaced with an expression with the arguments substituted into it. And
you can set a constant key argument to a value of a constant value — creating
the odd built in hash-table-alike which has been around forever.

That said, Association[] looks nice. Presumably it gets a speed improvement by
bypassing the pattern matching. And I remember being annoyed by using JSON
data in Mathematica structures, this looks nicer. The literal syntax is
appreciated too. Actually I'm kind of surprised they didn't choose another
weird unicode symbol like 〚, for the literal syntax.

~~~
taliesinb
Well, unlike adding and changing definitions for symbols in the symbol table,
associations are actually immutable. So you can pass them around as values,
mutate them, and the old versions are still available unchanged. That's just
not true of using downvalues of symbols.

Also, using definitions on symbols to store key-values is incredibly limiting,
because you can't do reverse lookups without getting into very low level (and
slow) hackery via DownValues. Or list the keys or values. Or even know how
many keys you have.

Associations really will replace basically all uses of symbol downvalues for
storing key-value pairs. And Associations have really nice general-purpose
functions like GroupBy, Counts, Merge, and so on (mentioned below).

Associations even support function application syntax, so you should be able
to drop them in into existing code that expects symbol downvalues as you're
using them above.

Associations are the single most significant language-level improvement we've
had in many versions. And we've integrated them really nicely across the
system -- they're not just some special-purpose data structure.

~~~
bburky
Yeah, using definitions on symbols to store key-values is indeed incredibly
limiting.

Association seems very similar to List: immutable, really good Part syntax for
accessing things in deeper levels, etc. I've started to read some of the docs
on it too, it looks very nice.

------
angersock
I'm very impressed by this stuff--especially the new computational geometry
features.

I'm just a little hesitant to do any meaningful work in such a closed
ecosystem.

~~~
gohrt
For a non-commerical user, it's hard to see Mathematica as more than TODO list
for [http://www.sagemath.org](http://www.sagemath.org)

~~~
_delirium
I'd like that to be true, but I think it's still some years away from being a
similar experience. Sage is impressive but still very much shows its seams:
it's trying to glue together a bunch of separately developed projects, with
their own ideas about things (everything from Maxima to R), and the glue is
often pretty noticeable if you do anything remotely complex.

(That said, I also avoid using Mathematica for most things because I'm
squeamish about ending up with any significant project too closely tied to a
proprietary platform.)

------
taliesinb
Here's the list of what's new since version 9 of Mathematica:
[http://www.wolfram.com/mathematica/new-
in-10/](http://www.wolfram.com/mathematica/new-in-10/)

------
spitfire
ZIPCodeData and many other geographic functions are missing and have badly
mangled documentation. I assume something went wrong in an automated build
process. This is on the Mac OSX release.

So far ZIPCodeData[], NeighborhoodData[] and
MountainData[],BroadcastStationData[], MovieData[], BuildingData[],
PersonData[] are all mangled.

Worse yet, URLFetch is broken also. Something bad happened, at least with the
Mac release.

In[1]:= URLFetch["[http://www.google.com/"](http://www.google.com/")]

General::unavail: ExportString is not available in this version of the Wolfram
Language.

ImportString::string: First argument ExportString[{60, 33, 100, 111, 99, 116,
121, 112, 101, 32, 104, 116, 109, 108, 62, 60, 104, 116, 109, 108, 32, 105,
116, <<19757>>, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62}, <<2>>] is
not a string.

Out[1]= ImportString[ExportString[{60, 33, 100, 111, 99, 116, 121, 112, 101,

~~~
taliesinb
What is your value of $Version and SystemInformation["Small"]? I can't
replicate these problems on any of the 3 platforms using freshly-downloaded
versions.

~~~
spitfire
Would having an old version installed make a difference? I renamed my current
install to "mathematica backup.app" then installed mms 10. It feels like some
part of mms has failed without adequately reporting it.

Mac OSX 10.9.4

uname -a <~/Library/Mathematica/Licensing nyx[33] Darwin nyx.local 13.3.0
Darwin Kernel Version 13.3.0: Tue Jun 3 21:27:35 PDT 2014;
root:xnu-2422.110.17~1/RELEASE_X86_64 x86_64

Session log below.

Mathematica 10.0 for Mac OS X x86 (64-bit) Copyright 1988-2014 Wolfram
Research, Inc.

In[1]:= $Version

Out[1]= 10.0 for Mac OS X x86 (64-bit) (June 29, 2014)

In[2]:= $VersionNumber

Out[2]= 10.

In[3]:= SystemInformation["Small"]

Out[3]= {Kernel ->

> {SystemID -> MacOSX-x86-64, ReleaseID -> 10.0.0.0 (5098698, 5098537),

> CreationDate -> DateObject[{2014, 6, 29}, TimeObject[{20, 38, 32}]]},

> FrontEnd ->

> {OperatingSystem -> $Failed, ReleaseID -> Missing[NotActive],

> CreationDate -> DateObject[$Failed]}}

In[4]:= URLFetch["[http://www.google.com/"](http://www.google.com/")]

General::unavail: ExportString is not available in this version of the Wolfram
Language.

ImportString::string: First argument ExportString[{60, 33, 100, 111, 99, 116,
121, 112, 101, 32, 104, 116, 109, 108, 62, 60, 104, 116, 109, 108, 32, 105,
116, <<19641>>, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62}, <<2>>] is
not a string.

Out[4]= ImportString[ExportString[{60, 33, 100, 111, 99, 116, 121, 112, 101,

> 32, 104, 116, 109, 108, 62, 60, 104, 116, 109, 108, 32, 105, 116, 101,

\-- Snip --

In[5]:= ExportString[]

ExportString::argrx: ExportString called with 0 arguments; 2 arguments are
expected.

Out[5]= ExportString[]

~~~
taliesinb
Looks like it... I would delete both from disk, redownload 10, and reinstall
it. Also check that you didn't run out of disk space.

If all else fails, phone our technical support at 1-800-WOLFRAM, they're
pretty good.

~~~
spitfire
I checked the MD5sum given on the wolfram website
(b58c6bb7393f23137355da923f2734fc), they match.

Completely removing my previous copy of Mathematica and nuking my
~/Library/Mathematica directory made the documentation formatting errors go
away. I'm not sure if that was the cause or not.

However, I still get ExportString messages out of many functions.

General::unavail: ExportString is not available in this version of the Wolfram
Language.

EDIT: I'm trying to hunt down why I get the unveil error message. Might this
be a limitation of a trial mathematica license?

~~~
taliesinb
Turns out the trial version is (probably accidentally) quite broken:
[http://community.wolfram.com/groups/-/m/t/290210?p_p_auth=uf...](http://community.wolfram.com/groups/-/m/t/290210?p_p_auth=uf0Lnir3)

------
programnature
This is an impressive release.

GeoGraphics is amazing example of the power of integration between domains.
Built-in data about the world, with semantic integration into graphics as well
as data analysis. This is way beyond what any existing mapping solution has
delivered.

The geometry stuff is also amazing and very useful for generative design and
"making"

------
reikonomusha
I hate to be that guy, but I wish to share my opinion about closed source
mathematical software.

There is no doubt that what Wolfram Research has done with Mathematica is
amazing and tempting. It is a very complete and uniform engine, and can be
very useful for very different kinds of mathematics.

However, Wolfram Research deliberately keeps their methods and source code
closed. Note that this is more serious than just the "Stallman-esque" open-
source-everything philosophy. Wolfram insists that users do not need to know
implementation details of their methods. This is plainly in their
documentation. You can see the uncompelling argument from Wolfram here [6].
The gist of the argument is that interfaces matter, not implementations.

I strongly argue that users, especially mathematicians and engineers, should
care about the internals of mathematical software, especially when it's being
used, even in a utilitarian fashion, for research and engineering.

Not only this, but Wolfram has litigated against his own employees for
publishing mathematical proofs about cellular automata. Information about this
lawsuit is sparse, but evidence of it can be seen in [0]. More information can
be found here [1].

Unfortunately most responses to the above from users of Mathematica is "well I
just use Mathematica as a calculator, nothing serious" or "I wouldn't look at
the source code anyway, so what gives?" It's an unfortunate response, and I
don't have a technical rebuttal, but a moral one, which many don't want to
hear.

It pains me to see the technical reliance on Mathematica (and other software
such as MATLAB) in professional mathematicians, scientists, and engineers. It
reminds me of an addictive drug; one of the best hackers I know does their
work completely in Mathematica, and can no longer work without it.

As is the case with a lot of closed source, proprietary software, there aren't
a ton of good alternatives. There is a plethora of logistical issues with
existing computer algebra systems, but I nonetheless recommend them. Sage [2]
is a continuously growing system based on Python which has backing from a lot
of mathematicians. They are continually improving it. There's also Maxima [3].
None of these has quite an extensive array of functionality and graphical
capabilities as Mathematica.

I (and others) have written more about this issue more extensively here [4]
for those interested. This is an extension on the article written by Jordi G.
Hermoso [5].

If you took the time to read this, thanks.

[0] [https://groups.yahoo.com/neo/groups/theory-
edge/conversation...](https://groups.yahoo.com/neo/groups/theory-
edge/conversations/messages/5828)

[1]
[http://vserver1.cscs.lsa.umich.edu/~crshalizi/reviews/wolfra...](http://vserver1.cscs.lsa.umich.edu/~crshalizi/reviews/wolfram/)

[2] [http://www.sagemath.org/](http://www.sagemath.org/)

[3] [http://andrejv.github.io/wxmaxima/](http://andrejv.github.io/wxmaxima/)

[4] [http://symbo1ics.com/blog/?p=69](http://symbo1ics.com/blog/?p=69)

[5]
[http://www.symbo1ics.com/files/jordi.pdf](http://www.symbo1ics.com/files/jordi.pdf)

[6]
[http://reference.wolfram.com/language/tutorial/WhyYouDoNotUs...](http://reference.wolfram.com/language/tutorial/WhyYouDoNotUsuallyNeedToKnowAboutInternals.html)

~~~
szhorvat
My impression is that you don't hate to be that guy, but actually love to
express this opinion.

Open source systems like Sage always look desirable, simply by virtue of being
open source. But every time I look at it I'm left with a very bad taste in the
mouth because of the constant badmouthing of non-open-source systems that is
going on in that community. Companies do that sort of thing, and it doesn't
inspire trust. But we know that it can happen just because a few people in the
management made bad decisions. But when a community (!) around an open source
(!) system takes on that attitude, it looks much worse. Don't you realize
you're driving people away?

Why not put all that energy into improving your own system instead of trying
to actively hinder others? Examples of that are forking GMP and making in GPL
(not LGPL); actively pointing out to people (as Mr. Hermoso did to me) that no
you can't link Octave to Mathematica because Octave is GPL (which is just a
hindrance for my research, as well as to others); building on the fallacy that
results obtained with Sage are inherently better because Sage is open sourced
software is _theoretically_ verifiable. All software is buggy, and the only
thing that makes a research result more trustworthy is if it is indeed
verified, not if it's theoretically verifiable, but no one ever does it.
Practical verification is almost never about reading the source code. It's
about making sure the result is consistent and computing it with alternative
tools.

~~~
omaranto
Results obtained with _are_ better because Sage is open: in a mathematical
research paper you can say:

"This reduces the problem to computing blah, which we did using the following
Sage code. The function foo used here uses the algorithm of X and Y as
described in their paper [XY2006]"

You can't say:

"This reduces the problem to calculating blah which the following Mathematica
code computes using an unspecified algorithm for which there is no
accompanying paper proving correctness."

Of course a paper proving that an algorithm is correct can contain errors, and
also even if the proof of correctness is fine the actual implementation can
contain bugs. But if you have no way of knowing how something is computed and
whether anybody at any point in time even tried to prove mathematically that
the method used is correct, you have no moral authority to rely on the result.
That's just the standard adopted in mathematics: you can depend on results you
have good reason to believe are true _and_ are documented in the literature;
you can't rely on stuff that's not written about. I don't know how citing
results works in other areas, but that's how it is in mathematics (at least in
the fields of mathematics I'm familiar with).

~~~
szhorvat
I guess it depends on one's field.

I've never cited a software I didn't write myself, simply saying _trust this
software, here 's the reference_. I wouldn't trust a result from Sage any
better than one from Mathematica, simply based on which system produced it.
I'd trust that _x_ is a solution of an equation if substituting it back
verifies it. I'll trust that two graphs are isomorphic if the software gives
me a vertex permutation that makes the adjacency matrices identical. It
doesn't matter how that isomorphism was computed.

When publishing work, I'll aim to make it verifiable this way.

I believe the vast majority of the use of these systems is not of the type
when one needs to blindly trust the software and refer back to it in the
paper. At least in my field (physics) it isn't. Yet I use programs like this
daily, and I clearly depend on them for my work.

Most of the functionality available in Mathematica (or, I'd argue, most
similar systems) are not of the type that one needs to cite. They either use
standard and well known algorithms that are available in a multitude of
systems (do you cite the methods for matrix multiplication or eigenvalue
computation, and would it make a difference?), or the results are much easier
to _verify_ than to _compute_.

In those cases when I need to rely on a published method, like you mention,
the method is very unlikely to be a built-in part of any system. So I either
need to re-implement it, or use the original code of the authors. If the
authors implemented their method in Mathematica instead of Python, does that
make their program less reliable? No. It's still a published method, anyone
can verify it.

My point is that I hear this argument about Sage very often, and the typical
generalization is: "if you used Mathematica for your research, that's wrong,
because it's not verifiable". This is a fallacy. It completely ignores how
these software are used in practice, and implies that results from open source
software are somehow magically reliable (they're not) and don't need
verification (they do).

I've yet to come across a situation where the argument _does_ apply at all:
point me to a paper which goes truly wrong by citing
Mathematica/MATLAB/Maple/etc this way.

~~~
szhorvat
Note that I'm not saying that one can claim that a result is correct, a
theorem is true, etc. based on the fact that some undocumented algorithm
produced it. That's clearly unacceptable.

Nor am I saying that it's never necessary to rely on an algorithm to get such
a result.

What I'm saying that when people use Mathematica or other closed source
systems, they do not usually commit these mistakes.

Also note that Mathematica programs can be open source and documented (many
are). Several built-in packages have accessible and documented source code
(e.g. Combinatorica). There's nothing wrong with using these to obtain such a
result, and cite the (public and documented) program used to create it.

~~~
omaranto
I think we're in complete agreement: most of the time you don't need a
citation for a program you use because the result can be easily verfied. And I
agree that what you call a fallacy is a fallacy, I was just pointing out that
open source can be _citable_ in a way that closed source isn't and that _that_
is an advantage.

------
nawitus
Interesting features, but I feel like it's a lost cause, as it's not worth
investing in a proprietary platform.

~~~
gress
What platform is not proprietary?

~~~
ISL
Octave, SciPy, etc.

I'm not aware of a replacement for Mathematica's symbolic manipulation that's
even close. It's good enough that it's scared any pretenders out of the
castle.

------
Osmium
Does anyone know if Mathematica 10 is retina-ready for Mac yet? This may seem
petty to some, but when you do a lot of data visualisation, it really does
matter.

As an aside, I've been using IPython Notebooks a lot over Mathematica over the
past year and have generally been really happy with the change – not least
because I know I won't be locked out of my notebooks if I can't afford a
Mathematica license in future! That all said, I recently revisited a
Mathematica notebook I'd made in the past, and it reminded me why I started
using it in the first place. It really is a great piece of software: great
libraries, great performance, generally a pleasure to use.

~~~
carlob
> Does anyone know if Mathematica 10 is retina-ready for Mac yet? This may
> seem petty to some, but when you do a lot of data visualisation, it really
> does matter.

Yes it is.

~~~
Osmium
Great! Thank you. Will look forward to seeing some of the new visualisation
styles in high-DPI :)

------
madengr
We'll see if they fixed the proxy so it can get through our corporate
firewall, otherwise the alpha integration is useless. No other programs have a
problem except Mathematica.

------
bane
I like to dump on Wolfram as much as anybody else, but tbh, these _really_ are
nice looking visualizations backed with a nice set of general purpose tooling.

------
pling
£2050+VAT = yowsers.

~~~
gohrt
300 for non-commercial use.

~~~
dested
Honest question, who uses Mathematica commercially? What industries?

~~~
perardi
There's some customer stories at:
[http://www.wolfram.com/mathematica/customer-
stories/](http://www.wolfram.com/mathematica/customer-stories/)

