On 2 Dec 2012, at 11:01, Murray Eisenberg <firstname.lastname@example.org> wrote:
> However, I've always had mixed feelings as Mathematica has grown to > build in more and more mathematical functions. At times this has taken > the edge off what was a valuable exercise for my undergraduate students: > defining more complicated functions -- e.g., div in vector analysis or > nullSpace in linear algebra -- that forced students to understand the > precise underlying definitions and algorithms. And it tended to take > away a sense of power and accomplishment when students could start by > defining the simplest kind of function, such as performing a single > elementary row operation, and step-by-step building ever more > complicated functions, culminating in something relatively > sophisticated, such as finding the orthogonal projection of a vector > upon the span of a given set of vectors, and even going further, such as > using the latter to find the least-squares solution to an overdetermined > linear system.
But what stops you from continuing to do this once Mathematica has these new functions? In fact, one of my favourite methods of teaching Mathematica and mathematics at the same time is to ask students to emulate with their own code some particular mathematical function that exists in Mathematica. There is a great deal one can learn by doing this sort of thing. The the existence of a Mathematica function in this situation (particularly a well documented one) is actually a great bonus. Besides, of course, there is a difference between the needs of teachers and those of researchers and other users - for many purposes user defined functions are too inefficient for serious work (and even more so when these users are not expert programmers). On a personal level: I spend a great deal of my time developing mathematical structures in Mathematica, but far from being dismayed when they are made obsolete in new versions by more efficient built-in functions, I am always happy and excited when this happens. This is because almost always the existence of these new functions opens up new possibilities, and quite often things that were quite unrealistic in earlier versions become easy in a new one. From my perspective, the most exciting thing about Mathematica 9 I have noticed so far is the ability to easily simulate various stochastic processes with functions such as RandomFunction, ContinousMarkovProcess, ItoProcess, etc. This alone is worth the upgrade even though it makes many and perhaps most of my contributions to the Wolfram Demonstrations Project obsolete. But that it the price I am happy to pay as I can already see a number of new things that I can now do with these functions that did not appear ever worth attempting before. The same thing happened with the upgrade from version 7 to 8, with the appearance of the FinancialDerivative function.
The presence of these new functions in no way makes it more difficult to teach students the algorithms behind them, but it also makes Mathematica the best tool I know of for development and application of advanced financial models, particularly in the area of derivative pricing (in which I have been interested for many years).
Of course anyone developing tools for Mathematica for commercial purposes will have "mixed feelings" when Wolfram Research, with all the advantages that it has, builds-in functions that make these tools inefficient and obsolete. However, this is no different from the experience of many developers of commercial software that suddenly finds itself competing with functionality included in the operating system. I have been a user of Apple Macs almost from the beginning and I remember many times reading and hearing complaints from software developers about "unfair" competition from Apple. But now we know that this process is unstoppable and today a vast number of things that once used to need a commercial (or shareware) program are now either done by the operating system or by programs freely provided by Apple with the latest version of Mac OS. (The same thing is true in the Microsoft world). Developers of these programs have either given up or have found a way to add value to their programs which is sufficiently large compared to what if offered form free by Apple, to make them still worth their price to at least some users.
I will take this opportunity to respond to a typical "straw man" argument in another response to this post. I am referring to "those who say that Mathematica users should never buy a third party application". I have never read anybody write anything so ridiculous in this forum so I would like to see some references (if they exists). In fact, I myself have purchased third-party applications which, not surprisingly, have eventually become obsolete, but I would never give this as a reason against buying them. They more than paid back their price once and I also learned a lot from them. The point I have tried to make is this: before a user decides to purchase a commercial package he should first master enough Mathematica to judge whether the kind of things he wants to do with it can be done without much effort with the standalone version or not. The decision should be his and it should be an informed one. What I object to is habitual pouncing on new and obviously not fully informed users, without even fully finding out their real needs, and suggesting or insinuating that they should bypass the necessary learning process by buying a commercial add on package. Also, even when an add-on package is found useful, it should never be a reason for skipping the need to learn such things as basic syntax and the working of the very basic (non mathematical) programming constructs. This is also the main reason why I am less than enamoured with packages that provide supposed "short-cuts", that often only appear to be such to people who have not mastered the foundations of the language.