Fundamentals of the Mathematica Programming Language note set by Richard J. Gaylord available

From: richard j. gaylord (gaylord_at_uiuc.edu)
Date: 07/13/04

  • Next message: R Fateman: "Re: Fundamentals of the Mathematica Programming Language note set by Richard J. Gaylord available"
    Date: 13 Jul 2004 12:37:05 -0700
    
    

    my pdf and Mma note set are now available at:

    http://library.wolfram.com/infocenter/MathSource/5216/

    to give you a flavor of what i am trying to emphasize in the note set,
    here is an excerpt.

    Mathematica Programming Fundamentals:
    Lecture Notes

    Richard Gaylord

    These notes form the basis of a series of lectures given by the
    author, in which the fundamental principles underlying
    Mathematica'sprogramming language are discussed and illustrated with
    carefully chosen examples. This is not a transcription ofthose
    lectures, but the note set was used to create a set of transparencies
    which he showed and spoke about during his lectures. These notes
    formed the basis for both a single 6 hour one-day lecture and a series
    of four 90 minute lectures, delivered to professionals and to
    students.

    Introduction
    In order to use Mathematica efficiently, you need to understand how
    the Mathematica programming language works. This tutorial (which has
    been extensively field-tested in university courses) is intended to
    provide you with the background that's needed to write your own code.

    Note: While this material can't replace the use of The Mathematica
    Book by Wolfram or Mathematica's online help (which give definitions
    of built-in functions and simple illustrations of their use), it can
    help to make you more comfortable with the Mathematica programming
    language which often seems obscure, even enigmatic, when first
    encountered by someone whose programming experience is with one of the
    traditional procedural languages.

    In this note set, the following aspects of the Mathematica programming
    language are emphasized: the nature of expressions,how expressions are
    evaluated, how pattern-matching works, creating rewrite rules, and
    using higher-order functions.

    How expressions are evaluated
    Mathematica is a term rewriting system (TRS). Whenever an expression
    is entered, it is evaluated by term rewriting usingrewrite rules.
    These rules consist of two parts: a pattern on the left-hand side and
    a replacement text on the right-hand side. When the lhs of a rewrite
    rule is found to pattern-match part of the expression, that part is
    replaced by the rhs of the rule, after substituting values in the
    expression which match labelled blanks in the pattern into the rhs of
    the rule. Evaluation then proceeds by searching for further matching
    rules until no more are found.

    The evaluation process in Mathematica can be easily understood with
    the following analogy:

    Think of your experiences with using a handbook of mathematical
    formulas, such as the integral tables of Gradshteyn andRyzhik. In
    order to solve an integral, you consult the handbook which contains
    formulas consisting of a left-hand side (lhs) and a right-hand side
    (rhs), separated by an 'equals' sign. You look for an integration
    formula in the handbook whose left-hand side has the same form as your
    integral.

    Note: While no two formulas in the handbook have the identical lhs,
    there may be several whose lhs have the same form as your integral
    (eg., one lhs might have specific values in the integration limits of
    in the integrand, while another lhs has unspecified (dummy) variables
    for these quantities). When this happens, you use the formula whose
    lhs gives the closest fit to your integral. You then replace your
    integral with the right-hand side of the matching lhs and you
    substitute the specific values in your integral for the corresponding
    variable symbols in the rhs. Finally, you look through the handbook
    for formulas (eg., trigonometric identities or algebraic manipulation)
    that can be used to change the answer further.

    This depiction provides an excellent description of the Mathematica
    evaluation process.

    However, the application of the term rewriting process to a
    Mathematica expression requires a bit more discussion because a
    Mathematica expression consists of parts, a head and zero or more
    arguments which are themselves expressions. expr@expr1, expr2, …,
    exprnD. It is therefore necessary to understand the order in which the
    various parts of an expression are evaluated by term rewriting.

    The implementation of the evaluation procedure is (with a few
    exceptions) straightforward:

    1. If the expression is a number or a string, it isn't changed.

    2. If the expression is a symbol, it is rewritten if there is an
    applicable rewrite rule in the global rule base; otherwise, it is
    unchanged.

    3. If the expression is not a number, string or symbol, its parts are
    evaluated in a specific order:
    a. The head of the expression is evaluated.
    b. The arguments of the expression are evaluated from left to right in
    order. An exception to this occurs when the head is a symbol with a
    hold attribute (eg., HoldFirst, HoldRest, or HoldAll), so that some of
    its arguments are left in their unevaluated forms (unless they, in
    turn, have the head Evaluate). For example, the Set or SetDelayed
    function which we will discuss in a moment.

    4. After the head and arguments of an expression are each completely
    evaluated, the expression consisting of the evaluated head and
    arguments is rewritten, after making any necessary changes to the
    arguments based on the Attributes (such asFlat, Listable, Orderless)
    of the head, if there is an applicable rewrite rule in the global rule
    base.

    5. After carrying out the previous steps, the resulting expression is
    evaluated in the same way and then the result of that evaluation is
    evaluated, and so on until there are no more applicable rewrite rules.

    The details of the term-rewriting process in steps 2 and 4 are as
    follows:
    a. part of an expression is pattern-matched by the lhs of a rewrite
    rule
    b. the values which match labelled blanks in the pattern are
    substituted into the rhs of the rewrite rule and evaluated.
    c. the pattern-matched part of the expression is replaced with the
    evaluated result.

    note that while i am a strong proponent of the functional style of
    programming, the fundamental (in my opinion) nature of the Mathematica
    programming language is that it is a TERM REWRITING SYSTEM (aka an
    equational programming language).

    i would be interested in your general response to this note set,
    though i can't answer specific questions as that would eat into my
    retirement time.


  • Next message: R Fateman: "Re: Fundamentals of the Mathematica Programming Language note set by Richard J. Gaylord available"

    Relevant Pages

    • Re: Very poor Lisp performance / about Mathematica
      ... his personal experience interacting with Mathematica. ... assume that Jon has the language design and semantics experience to ... , the order of evaluation is not specified, but the ... > Just as you use quote in a Lisp macro. ...
      (comp.lang.lisp)
    • Re: Very poor Lisp performance / about Mathematica
      ... > The site uses Mathematica to do its math. ... backquote and comma in CLTL. ... So,,@q means ``the value of q is a list of forms; splice the list ... available at the time of second evaluation, that is, when the ...
      (comp.lang.lisp)
    • Re: Where comes the myth that Lisp is interpreted?!
      ... operations of Mathematica in OCaml. ... A.4.1 The Standard Evaluation Sequence ... Unless h has attribute HoldAllComplete strip the outermost of any ...
      (comp.lang.lisp)
    • Re: Lisps QUOTE and Mathematicas "Hold"
      ... >> You can see Hold in Mathematica but not QUOTE in Lisp but isn't that more ... At least in Lisp case, the QUOTE form was evaluated and it ... However, despite the difference in method of evaluation, the results are ...
      (comp.lang.lisp)
    • Re: subroutine stack and C machine model
      ...  >> operation and order of evaluation of the operations themselves. ...     a + b ... The C Standard does not allow an implementation to re-arrange this to ... result of the rewrite is not different from the result of the original. ...
      (comp.lang.c)

    Loading