[Date Index] [Thread Index] [Author Index]
what kind of a programming language is Mathematica?
One of the reasons that many people have problems with writing Mathematica programs is that they fail to understand how Mathematica evaluates an expression that has been entered and this is directly related to how Mathematica works as a TRS. In order to program in Mathematica, it is ESSENTIAL to understand the evaluation process. I taught the fundamentals of the Mathematica programming language for about 15 years (until i retired 18 months ago) and have lectured to well over 1000 students, profesional scientists and engineers in university courses, tutorials, one-day courses at scientific conferences, and industrial sites and government labs). In the course of doing this i have devloped and refined a set of lecture notes explaining the inner workings of the Mathematica TRS evaluation process. I am presently having the note set (which prints out to 55 pages in a large font size) made into Mathematica notebooks (readable with MathReader), ps files and pdf files. As soon as these are ready later this month. i will post this material on a website and i will inform you where to go to retrieve it. I personally not a fan of copyrights or patents (although i do understand that (time limited) patents and copyrights provide incentive for innovation which is what makes a better life possible for everyone - sorry, i just got sidetracked onto my 'information wants to be free' soapbox) so i have no personal objection to your reading the files and trashing them, or sending them to other people, or printing them out (you can even take you printed copies (55 pages + section dividers) copied double-sided is only 30 pages) to kinko's and have them bind it into a book form with spiral binding or whatever sort of binding you like . I might mention that i have taught 6 hour tutorials on this material and have also presented it in 4 ninety minute lectures. i used transparencies of the note set and the students did not sit in front of computers while i lectured (i don't like computer-based education systems). they did of course have copies of the note sets and were free to interrupt with questions during the lectures. I also have a set of five exercises included in the note set which i gave out (in my university courses) for the students to do between the lectures (they were not graded). i hope this material will be of use to some of you and i would like to hear back from you regarding your opinion vof the material and your suggestions regarding improving it - i can't of course respond to specific individual questions because it would cut into my priceless retirement time :) a final note regarding elegant vs. non-elegant programming - note: RJF: don't feel compelled to make a response to this, especially of a personal , nasty nature. as it might set off my ICD :) - the issue of elegance in programming is very much a personal matter (de gustibus non disputum). i personally love the style of APL and J which is so succinct and compact (the famous one-liner) but barely readable. On the other hand a program consisting of a series of rewrite rules employed in a shell for applying the rules' is very appealing to me (and my students have indicated the same). it makes modifying the program trivial - all one has to do is delete, add, or change the rules. the longer runtime the program may take to execute allows one to think of other things or go do something else.