Interesting features, but I feel like it's a lost cause, as it's not worth investing in a proprietary platform.
Launching Mathematica 10
31–40 of 82 posts
Re: Launching Mathematica 10
#32Interesting features, but I feel like it's a lost cause, as it's not worth investing in a proprietary platform.
Re: Launching Mathematica 10
#33Earlier quoted context omitted.
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_]…
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 consta…
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.
Re: Launching Mathematica 10
#34Earlier quoted context omitted.
To be fair, fast immutable hash tables have only been around as a technology since around 2005. (Yes, Mathematica is mostly based on immutability) .Other than internal R&D, Wolfram never add experimental methods to Mathematica. Of course, its always had lists of rules as a far more general (though much slower) form of the hash table concept.
I assume you mean persistent , not immutable . a[x] = 1 b = a a[y] = 2
And b[x] there gives 1 as you would expect.
Re: Launching Mathematica 10
#35Earlier quoted context omitted.
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 consta…
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 le…
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.
Re: Launching Mathematica 10
#36Earlier quoted context omitted.
300 for non-commercial use.
Honest question, who uses Mathematica commercially? What industries?
Re: Launching Mathematica 10
#37Interesting features, but I feel like it's a lost cause, as it's not worth investing in a proprietary platform.
What platform is not proprietary?
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.
Re: Launching Mathematica 10
#38Re: Launching Mathematica 10
#39So 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/"]
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, >, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62}, >] is not a string.
Out[1]= ImportString[ExportString[{60, 33, 100, 111, 99, 116, 121, 112, 101,
Re: Launching Mathematica 10
#40There 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...
[1] http://vserver1.cscs.lsa.umich.edu/~crshalizi/reviews/wolfra...
[3] http://andrejv.github.io/wxmaxima/
[4] http://symbo1ics.com/blog/?p=69
[5] http://www.symbo1ics.com/files/jordi.pdf
[6] http://reference.wolfram.com/language/tutorial/WhyYouDoNotUs...