JacquesC

Prof. Jacques Carette

2401 Reputation

17 Badges

20 years, 83 days
McMaster University
Professor or university staff
Hamilton, Ontario, Canada

Social Networks and Content at Maplesoft.com

From a Maple perspective: I first started using it in 1985 (it was Maple 4.0, but I still have a Maple 3.3 manual!). Worked as a Maple tutor in 1987. Joined the company in 1991 as the sole GUI developer and wrote the first Windows version of Maple (for Windows 3.0). Founded the Math group in 1992. Worked remotely from France (still in Math, hosted by the ALGO project) from fall 1993 to summer 1996 where I did my PhD in complex dynamics in Orsay. Soon after I returned to Ontario, I became the Manager of the Math Group, which I grew from 2 people to 12 in 2.5 years. Got "promoted" into project management (for Maple 6, the last of the releases which allowed a lot of backward incompatibilities, aka the last time that design mistakes from the past were allowed to be fixed), and then moved on to an ill-fated web project (it was 1999 after all). After that, worked on coordinating the output from the (many!) research labs Maplesoft then worked with, as well as some Maple design and coding (inert form, the box model for Maplets, some aspects of MathML, context menus, a prototype compiler, and more), as well as some of the initial work on MapleNet. In 2002, an opportunity came up for a faculty position, which I took. After many years of being confronted with Maple weaknesses, I got a number of ideas of how I would go about 'doing better' -- but these ideas required a radical change of architecture, which I could not do within Maplesoft. I have been working on producing a 'better' system ever since.

MaplePrimes Activity


These are replies submitted by JacquesC

It is true that Maple's unapply is the same as Church's lambda abstraction operator. However, take a look at programming languages out there, at those languages that have first-class functions. You'll notice that very very few of them have something akin to Maple's unapply. LISP and Scheme have it. You can fake it in PHP (for example). Mathematica, MuPAD and their kin have it. In a lot of languages you can write inline lambdas, but what you can't do is to compute an expression and then abstract it. This is one of the very few features of Computer Algebra languages which cannot be found in other mainstream languages. And it is quite fundamental.
The main issue is that David Jeffrey's solution is not so easy to implement, but the silly answer is that, at the time this was suggested, it would have been quite difficult to integrate into the existing architecture for Maple's int. Now, int has since been seriously revamped, so I don't know why this has not been done. I know some people prefer the close-to-right answers because they look more elegant, while the fully correct answers can be somewhat unwieldly (I could repeat my previous comment about users and the truth). Stepping back, I spent a very long time combing through a lot of bugs in integration, to classify them. This classification allowed us to fix quite a lot of them. But one conclusion came through loud and clear: the Fundamental Theorem of Calculus (FTOC) is a wonderful theoretical tool, but seems to be much less useful in practice. In other words, it is frequently the case the computing an anti-derivative, then finding all the singularities, then computing all the necessary limits, is a huge amount of work, much more so than seems necessary to compute the original definite integral! Other techniques (like the ones based on MeijerG functions for example) can be much more effective; of course, they have their own defects as well (too much built-in analytic continuation for many people's taste), but seem to point in an more interesting direction. Other techniques, like contour integration, are likewise quite promising; Maple's own implementation of this technique used to be quite flawed and thus was thought to be inferior by developers, but that was an artifact of the bad implementation rather than inherent in the technique. Anyways, the original issue still stands: research in definite integration seems to have stopped, yet it is an area with lots and lots of interesting open problems.
You show (in part) that neither Maple nor Mathematica are optimized for quickly computing integrals of things like sin(x)^10000. This is true -- but the question is, how much does it matter? (I ask genuinely). This is an easy integral to enter "for fun", but how likely is it to occur in practice? One can include hundreds of "tricks" to computer algebra software to make certain integrals faster. This bloats up the code base severaly (making maintenance that much harder), and often introduces many more bugs. So the reward really has to be clear to do such things.
The most fundamental issue is that there is very little that has been done on the theoretical side for this problem. There are several papers by David Jeffrey on this from a few years back, but no one continued this research. In other words, no one really knows how to fix this problem; what really saddens me is that the researchers who should be attacking this problem don't seem to care. In fact, looking at ISSAC for recent years, integration seems to have almost disappeared as a topic of research!
From the perspective of being in an exclusive club (rather than the perspective of Maplesoft), there are too many people in the "Maple Fan" club... "Curmudgeony Maple Fan"?
I would suggest that you contact the publishers of books that already have Maple versions (with bad, old code), and offer your services directly. Actually, Tom 4, once he's back, might well be able to put you in touch with the right people at Maplesoft who could introduce you to some publishers in need. Such introductions seem to work a lot better than cold-calling. Once in a while, Maplesoft gets requests for consulting on Maple, and sometimes they even have to turn them down because there is no available staff with the required Maple and Math knowledge to do it [I have done some of this consulting in the past, and would do it again if the opportunity came up]. While there are a few people inside Maplesoft who can (and have) done this in the past, their time tends to be seriously over-booked, so that being able to draw on a few knowledgeable externals can be handy. About 6 years ago, Maplesoft had an official program for external consultants, but the demand wasn't there (yet). Since the market has changed quite a bit in the meantime, I would not be surprised if the demand had picked up since. See Mathematical consulting (74 hits), Matlab consulting (397 hits), most of which seem to be relevant. A similar search for Maple does not reveal a single relevant hit (at least none of the variations that I, where I used the terms 'math', or 'programming' to weed out the chaff).
I would suggest that you contact the publishers of books that already have Maple versions (with bad, old code), and offer your services directly. Actually, Tom 4, once he's back, might well be able to put you in touch with the right people at Maplesoft who could introduce you to some publishers in need. Such introductions seem to work a lot better than cold-calling. Once in a while, Maplesoft gets requests for consulting on Maple, and sometimes they even have to turn them down because there is no available staff with the required Maple and Math knowledge to do it [I have done some of this consulting in the past, and would do it again if the opportunity came up]. While there are a few people inside Maplesoft who can (and have) done this in the past, their time tends to be seriously over-booked, so that being able to draw on a few knowledgeable externals can be handy. About 6 years ago, Maplesoft had an official program for external consultants, but the demand wasn't there (yet). Since the market has changed quite a bit in the meantime, I would not be surprised if the demand had picked up since. See Mathematical consulting (74 hits), Matlab consulting (397 hits), most of which seem to be relevant. A similar search for Maple does not reveal a single relevant hit (at least none of the variations that I, where I used the terms 'math', or 'programming' to weed out the chaff).
Oh yes please, what can I do to officially be called a 'curmudgeon'?
Rosen's book, at least the 4th edition, had some really good code for some of the chapters. I know who wrote that code (the authors are credited in the print version), and they knew how to write good code. I also know that most of the code was written for Maple V R3 and R4, and seems never to have been touched since. It is really too bad that Maple does not have its own Roman Maeder who can make Mathematica do some amazing stuff. Of course Maple has its own programming wizards, though few have written good Maple-based textbooks, no one has written anything modern.
Rosen's book, at least the 4th edition, had some really good code for some of the chapters. I know who wrote that code (the authors are credited in the print version), and they knew how to write good code. I also know that most of the code was written for Maple V R3 and R4, and seems never to have been touched since. It is really too bad that Maple does not have its own Roman Maeder who can make Mathematica do some amazing stuff. Of course Maple has its own programming wizards, though few have written good Maple-based textbooks, no one has written anything modern.
I'll make sure to change all my bookmarks. Actually, I should really start using Harmony for that task instead. Harmony is a data synchronizer (mostly for XML), in the same way Unison is a well-known file synchronizer.
phi really is on the circle, the problem is that Maple doesn't recognize this. Or at least, the ``simplification'' that evalc() performs needs to be restricted. Instead of argument and evalc, one can use ln and diff to get the same 0=1. My all-time favourite is still 1/(1/(x-x)). To infinity and beyond!
phi really is on the circle, the problem is that Maple doesn't recognize this. Or at least, the ``simplification'' that evalc() performs needs to be restricted. Instead of argument and evalc, one can use ln and diff to get the same 0=1. My all-time favourite is still 1/(1/(x-x)). To infinity and beyond!

In Maple 6, new structures were introduces that bound regions of code, like the then part of an if statement. These were try and module. Even though it has been pointed out that there exists at least one language (find it!) which uses eludom as a terminator, it seems that yrt and eludom somehow did not have the same geek chic of fi and od. So in the interest of cleaning things up, end foo for any structure foo seemed reasonable. Trivia 1 [easy] : there are 3 different words that Maple's parser will recognize as terminating a Maple session. What are they? Trivia 2 [medium to hard]: for some reason, someone decided that, in the Standard GUI, if you want to end your session, you can't just type away (as you can in TTY say). Well, you can't type any of the above 3 words and end your session without an annoying popup. You can however end your session by using Maple commands. How?

In Maple 6, new structures were introduces that bound regions of code, like the then part of an if statement. These were try and module. Even though it has been pointed out that there exists at least one language (find it!) which uses eludom as a terminator, it seems that yrt and eludom somehow did not have the same geek chic of fi and od. So in the interest of cleaning things up, end foo for any structure foo seemed reasonable. Trivia 1 [easy] : there are 3 different words that Maple's parser will recognize as terminating a Maple session. What are they? Trivia 2 [medium to hard]: for some reason, someone decided that, in the Standard GUI, if you want to end your session, you can't just type away (as you can in TTY say). Well, you can't type any of the above 3 words and end your session without an annoying popup. You can however end your session by using Maple commands. How?

First 113 114 115 116 117 118 119 Page 115 of 119