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

This adds one more way that I know of to get Maple to ``prove'' that 0=1. Thank you.
This adds one more way that I know of to get Maple to ``prove'' that 0=1. Thank you.
The URL stays the same, the page just seems to reload with nothing changed. It happens every time. One thing that may matter: I let Firefox fill-in my username/pw combo for me. I know Firefox 2.0 is out, but I make it a policy never to use .0 software, it is usually much too flaky. I wait until at least one point release, if not two, have been released before I upgrade any software that I actually use to get work done.
As announced last friday, Google code search now includes a lot more languages (including two of my top 3, Haskell and OCaml), but still no Maple (and get a perfect 3/3). For mathematical languages, one has to make do with Mathematica, but also also R. Even though R is for stats, it has a number of remarkably Maple-like features. Oh, and Matlab too. Maybe I should lobby for Axiom, MuPAD, Reduce and Macsyma to be put on there -- see if they'll show up before Maple does!
Classic does have that 'get your work done smoothly and efficiently' feel, where Standard, with all its bells and whistles, just seems to slow me down. That keeps me going back to Classic. But perhaps I am in the minority: I use Maple to get work done, not to make pretty documents (that's what LaTeX's for). That comment about computers 'not powerful enough' seems to be a poor excuse - all 3 of my computers (they are all 3-4 years old) do strain with Standard. But they all work flawlessly with the latest releases of Firefox, Thunderbird, Acrobat, Cygwin, LaTeX, iTunes, Excel and PowerPoint (ie the software that I use all the time for one reason or another). And Maple Classic (and tty too). I guess I am a real believer in ISO 9241 - 11's definition of usability:
 Usability is defined in terms of measures of effectiveness, efficiency 
and satisfaction. Ease of operation is an operational metric for effectiveness. 
For simple products this component of usability is the most important: the 
percentage of users who can successfully complete the main intended tasks with 
the product. For more complex products efficiency of operation may also be 
important: that the main task goals can be achieved in an acceptable period of time.
Maple is not a simple product. 'nuff said.
Classic does have that 'get your work done smoothly and efficiently' feel, where Standard, with all its bells and whistles, just seems to slow me down. That keeps me going back to Classic. But perhaps I am in the minority: I use Maple to get work done, not to make pretty documents (that's what LaTeX's for). That comment about computers 'not powerful enough' seems to be a poor excuse - all 3 of my computers (they are all 3-4 years old) do strain with Standard. But they all work flawlessly with the latest releases of Firefox, Thunderbird, Acrobat, Cygwin, LaTeX, iTunes, Excel and PowerPoint (ie the software that I use all the time for one reason or another). And Maple Classic (and tty too). I guess I am a real believer in ISO 9241 - 11's definition of usability:
 Usability is defined in terms of measures of effectiveness, efficiency 
and satisfaction. Ease of operation is an operational metric for effectiveness. 
For simple products this component of usability is the most important: the 
percentage of users who can successfully complete the main intended tasks with 
the product. For more complex products efficiency of operation may also be 
important: that the main task goals can be achieved in an acceptable period of time.
Maple is not a simple product. 'nuff said.
The problem is one of scoping. When k=5 and you do zz[k] := x -> x^3 + C[k] what you actually define is zz[5] := x -> x^3 + C[k]. Note how the inner k is still there? What you really want is zz[k] := unappy(x^3+C[k]), x). Why are you getting the errors in the above? That's because after the end of your loop, k=8, and so zz[1](4) tries to do (4^3 + C[8]) !
The problem is one of scoping. When k=5 and you do zz[k] := x -> x^3 + C[k] what you actually define is zz[5] := x -> x^3 + C[k]. Note how the inner k is still there? What you really want is zz[k] := unappy(x^3+C[k]), x). Why are you getting the errors in the above? That's because after the end of your loop, k=8, and so zz[1](4) tries to do (4^3 + C[8]) !
Maple went through a serious modernization and rationalization between Maple V (Release 5.1) and Maple 6. Including some changes to the grammar. In particular " became % and . became ||. The idea was that " was so common for proper strings (which Maple only got in Maple 6) that it would be better to be consistent with users' expectations, so % was chosen to mean previous result. Additionally, the needs for LinearAlgebra for a non-commutative but short common symbol for multiplication far outweighed the need for concatenation, and thus the switch between . and ||. Those were the most visible changes -- Maple 6 also introduced a whole lot more new ideas that made it quite different than the Maple V series. Some users complained bitterly, most users just moved on [we did provide some tool, namely updtsrc which took care of most of the translation]. However, the current management at Maplesoft is firmly committed language-level backward compatibility [even if that means that past mistakes cannot be fixed].
.ms files go all the way back to the original Maple V GUI on Windows (I should know - I wrote most of it). Like the .mws format, it was not a very clever format (too much context-sensitivity, placement-sensitive semantics, very little possibility for error-recovery, inclusion of unecessary information, etc). I could dissect the .mw format as well for design flaws, but I am sure that its authors know very well by now where they've goofed. [A good XML DTD design is just as hard as a good design for a program, which is not widely known, and thus most XML DTDs out there are dreadful]. The .ms did manage to have one redeeming feature for its day: it was all ASCII, so that it could be emailed around, unlike the .m format of the time. But that's back in the days where most mailers really had a hard time with binary data!
.ms files go all the way back to the original Maple V GUI on Windows (I should know - I wrote most of it). Like the .mws format, it was not a very clever format (too much context-sensitivity, placement-sensitive semantics, very little possibility for error-recovery, inclusion of unecessary information, etc). I could dissect the .mw format as well for design flaws, but I am sure that its authors know very well by now where they've goofed. [A good XML DTD design is just as hard as a good design for a program, which is not widely known, and thus most XML DTDs out there are dreadful]. The .ms did manage to have one redeeming feature for its day: it was all ASCII, so that it could be emailed around, unlike the .m format of the time. But that's back in the days where most mailers really had a hard time with binary data!
Your
`type/FST` := proc(f)
   type(f, 'function') and op(0, f)='FST' and nops(f)=2 and type([op(f)], 'listlist') and 
   andmap(proc(a) evalb(a >= 0 and a <= 1) end proc, op(1,f))
end proc:
should take full advantage of structured types and should be
`type/FST` := 
    'FST'([list(And(numeric,
                    satisfies(proc(a) evalb(a >=0 and a  <= 1)),
           list(anything)])
This has several advantages. First, it is significantly faster since the overhead of a function call in Maple is so large. Second, it will give better error messages when something goes wrong. Third, the above makes sure that the first list contains numerics before checking for ≥ 0 which can give you infamous "cannot evaluate boolean" otherwise. Using
type(f, 'function') and op(0, f)='FST' and nops(f)=2 
is particularly hideous. However showed you this as a good way to do things should read a Maple manual from the early 90s or later... The above is assembler-style Maple, shudder. Structured types are your friends. Get comfortable with them. And then you'll see how powerful indets, evalindets and typematch really are.
An old feature of Maple (from the pre-GUI days!), the alias function does just what you want. alias(A={a,b,c}) will result in every occurence of {a,b,c} to print as A
A good suggestion. A more workable alternative might be to allow Maple to read .mw.gz files directly. Many browsers already know to deal with files like .ps.gz, etc. Or to create a .mwz format for compressed worksheets. This reminds me of Wadler's The Evolution of Language poster, which I now have hanging on my door. I have become a real fan of Descartes...
The man was an astounding genius. His work will keep mathematicians busy for another 50 years, if not more. While I don't know how to relate much of his work to the ``applied sciences'', it is relatively easy to link Computer Algebra with many of the advances in Category Theory due to Grothendieck. For example, all the mathematics that a computer can do must be ``constructive'' in an appropriate sense. So the right universe to look at is in a Topos, where you are working in the inner language of the Topos. This is alrealy well-known to people doing Functional programming. Bart Jacob's book "Categorical Logic and Type Theory" talks about this. Another nice reference for these ideas is Barr and Wells' "Category Theory for Computing Science". My current favourites, for their applications to the theory of Computer Algebra that is, are Kripke, Carnap, Montague [for their work in logic], Joyal [Species] and Kolmogorov [for his work in complexity].
First 114 115 116 117 118 119 Page 116 of 119