Why program Excel? For solving complex calculations and presenting results, Excel is amazingly complete with every imaginable feature already in place. But programming Excel isn't about adding new features as much as it's about combining existing features to solve particular problems. With a few modifications, you can transform Excel into a task-specific piece of software that will quickly and precisely serve your needs. In other words, Excel is an ideal platform for probably millions of small spreadsheet-based software solutions.
Programming Excel With VBA And .NET: Solve Real-World Problems With Excel
The best part is, you can program Excel with no additional tools. A variant of the Visual Basic programming language, VB for Applications (VBA) is built into Excel to facilitate its use as a platform. With VBA, you can create macros and templates, manipulate user interface features such as menus and toolbars, and work with custom user forms or dialog boxes. VBA is relatively easy to use, but if you've never programmed before, Programming Excel with VBA and .NET is a great way to learn a lot very quickly. If you're an experienced Excel user or a Visual Basic programmer, you'll pick up a lot of valuable new tricks. Developers looking forward to .NET development will also find discussion of how the Excel object model works with .NET tools, including Visual Studio Tools for Office (VSTO).
This book teaches you how to use Excel VBA by explaining concepts clearly and concisely in plain English, and provides plenty of downloadable samples so you can learn by doing. You'll be exposed to a wide range of tasks most commonly performed with Excel, arranged into chapters according to subject, with those subjects corresponding to one or more Excel objects. With both the samples and important reference information for each object included right in the chapters, instead of tucked away in separate sections, Programming Excel with VBA and .NET covers the entire Excel object library. For those just starting out, it also lays down the basic rules common to all programming languages.
I am aware of applications where the use of Mathematica is fully justified. In my own work, I have used Mathematica to price complex derivatives products, a field in which it excels. Likewise, I am somewhat familiar with Phil Zecker's work at EQA Partners, where he produced an outstanding risk management solution using Mathematica. In both these cases, however, there is no standard, specialized alternative offering in the field of risk management, as there are, for example, in engineering, CAD, app design, or music. In these areas, it seems to me, Mathematica is like a Swiss Army Knife: sure you can use it to dabble in almost anything; but I have screwdrivers, knives and corkscrews that do a better job for their specific purpose.
The real question then is: Why doesn't Mathematica have a greater penetration in science, education and the commericial world? This is a problem to be solved. If Wolfram Research doesn't see it as a problem then it won't be solved. Mathematica aquires more nice features with each version but this hasn't solved the problem. Here are some of my suggestions, for what they're worth.
3) Mathematica is not as stable over versions as they nonchalantly claim. I think I read a claim that Mathematica 10 would run a Mathematica 2 notebook. Maybe, but not necessarily a Mathematica 7 notebook. The graphics paradigm comes to mind again. It is not at all uncommon to extract information from a graphic by extracting primitives. Roman Maeder was showing how to do it back in Mathematica 2. However, WRI keeps adding new graphical structures and changing the old ones and that breaks a lot of code that depended on it. Sometimes it might be worth the price but often it's just ad hoc. And sometimes WRI introduces new problems. An example is that Graphics3D has an option Lighting. It no longer works. Instead Lighting options must be put in the specification of each surface drawn. Serious Mathematica users cannot live with this kind of stuff.
(1) Difficult to learn. Mathematica was, for me, one of the easiest programming languages to learn. The sheer size of it, as you say, makes it time-consuming to become familiar with all of its functionality, but that is a completely different issue, in my opinion, than learnability.
But, for instance, why don't I just use a specific image processing tool from the market? I think that the answer is integration. If it is integrated on a well known environment, I can just start using it, with a very favorable learning curve, and mixing up with other fields, without being a programming specialist.
"money changed hands" surely does not equal real-world. Because now you exclude basically all academics! A HUGE number of academics do there analysis using Mathematica/Matlab/...... without getting money for it! It is to publish something. But not directly getting money.
I think you have to give an example in order to say if it will be worthwhile to code it in the Wolfram Language, or if another (C#, LabView, Excel, Matlab, Python,...) if better suited. I specifically added also not-real programming languages like LabView and Excel. If one wants to work a lot with tables in a grid like pattern, than Excel might be much more useful than to use Mathematica or Matlab. Also LabView can be incredibly useful if one wants to control a lot of external apparatuses. The coding (drawing) is very slow and not very coherent and often leads to spaghetti code... but in some things it is far superior. If you want to make a simple program that does some image-analysis, Mathematica might be a very good place. However I would not use it controlling external apparatuses; simply too complicated. Or if you want to make software that periodically creates graphs from live data, Mathematica might be very useful to do that!
I think all the graphs that are made by it and published in all the journals are all good examples of real-world use I would say! Or all the theoretical derivations made using it, also very good real-world usages. Or the courses in Calculus that use Mathematica to get students familiar with integration and differentiation, again, very good real-world use. If you're talking about real-world application deployed online (like WA), yes those are limited, but all the small little ones that are not 'deployed', but rather small script that people run to edit/analyse/view/process data; I'm sure these are used in a lot of places.
1) DataModeler. Evolved Analytic's genetic programming add-on makes use of Mathematica's facility with symbology to perform symbolic regressions. It is in many ways an ideal application, since its plays to several of Mathematica's strengths in symbolic representation, while adding real value to the core product.
These observed real-world usages are mostly "accidental", in that I'm not really in a position to hunt for Mathematica in the real-world, and so I suspect that others could expand this list greatly. I don't think anyone is making a claim that Mathematica is a silver bullet that solves all real-world problems, nor that Mathematica's breadth of functionality is such that no other applications will ever be needed. So, again, I'm curious about the point you're trying to make, what actual relevant question you're trying to ask, or what methodology suggests your specific criteria.
Let's dispense with any continuing misunderstanding of the criteria I specified to qualify an application as "real-world". I did NOT say that the application had to be "re-sold" in order to qualify. What I said was that "money changed hands". This could involve re-selling (and I gave several specific examples of such applications in subsequent posts) or it could involve consulting fees. That deals with the straw-man objection that my criteria would disqualify Excel as a real-world application - because vast sums of money have been earned in consulting fees in relation to projects in which the deliverables included an Excel workbook and/or VBA code. As if that was not enough, I went on to make clear that "money changed hands" also included applications that were developed by paid researchers, because their salaries constituted money changing hands. Enormous sums are expended on the salaries of Wall Street quants, almost every one of whom, in my experience, makes extensive use of Excel. So - subject closed.
We also use Mathematica in teaching, mostly because the excellent documentation system makes it so easy to grasp for complete novices, and because it already comes with all the functionality that you might have to install separately in some other languages. (Like graphics capabilities in 2D and 3D, or all sorts of specialized functions.)
I've read this thread with great interest, and just wanted to say that I feel @Eric Rimbey has touched upon a very important point. We can't really compare the Wolfram Language to other programming languages in a context of commercial software development.
I'm not an expert in Matlab. I've used it for a couple on-line courses, including convex programming and computational neuroscience.I think that Mathematica's symbolic manipulation is a distinct advantage but I think there are other advantages. Mathematica supports procedural, rule based and functional programming. Matlab only has procedural programming. Also, in Matlab, the core data type is a 2nd rank matrix of real numbers whereas Mathematica is more general. I started an online course on probabilistic graphical models but dropped it because I got frustrated with trying to deal with higher than 2nd rank objects in Matlab.
I have degrees in EE, math, and physics, and have worked in engineering disciplines for about 45 years. My work has included electronics engineering, embedded system programming, material science, optical engineering, and physical modeling. The first years were done with Fortran and a slide rule. The last 20 with computer tools which have become more capable each year.
This is a few of the concrete uses I have made of Mathematica in the past few years. But it does not come close to describing it's true usefulness. It somehow gets opened up early in any piece of work, and not closed until the end of the day. One very important reason for that is that, at its heart, it is a symbolic math tool. For me, the first step in looking at most problems is to look at the mathematical dependencies. This means looking at equations and relationships in symbolic form. After that, even more intuition can be gained by trying real numbers and viewing these relationships graphically. Mathematica excels at both these tasks. 2ff7e9595c
Comments