MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A kernel, multiple notebooks, and Global?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg87882] Re: A kernel, multiple notebooks, and Global?
  • From: AES <siegman at stanford.edu>
  • Date: Sat, 19 Apr 2008 03:35:13 -0400 (EDT)
  • Organization: Stanford University
  • References: <fu1u15$ojn$1@smc.vnet.net> <fu21b9$rap$1@smc.vnet.net> <fu4fc7$nak$1@smc.vnet.net> <fu6mhj$nni$1@smc.vnet.net> <fu9fps$cbb$1@smc.vnet.net>

David,

I'll not try to respond to your (appreciated) response, as appended 
below for completeness, by interpolating a lot of comments into your 
message (always find lengthy posts like that, with interpolated replies, 
hard to read, in fact); but will instead top-post a few more general 
responses as follows:


NO OBJECTIONS TO DISTRIBUTING MATHEMATICA NOTEBOOKS, AS A 
LIMITED MEANS OF COMMUNICATION TO SMALL AND SPECIALIZED 
AUDIENCES -- FINE IDEA, IN FACT

I have no basic objections at all to distributing notebooks I've created 
-- even interactive ones -- to colleagues, or pretty much any one who 
wants them.  In fact, I've mentioned the availability of notebooks in a 
few journal publications, and gotten a few email requests for some of 
them as a result.  Can be a useful means of technical communication, in 
a limited universe of users.


BUT MATHEMATICA CAN NEVER BECOME A UNIVERSAL OR EVEN VERY 
WIDESPREAD MEDIUM OF COMMUNICATION, EVEN FOR THAT TYPE OF 
AUDIENCES -- **AND THE VERY ATTEMPT TO EXPAND MATHEMATICA
FOR THAT PURPOSE IS DAMAGING TO MATHEMATICA ITSELF**

I am totally unsupportive of the proposition that Mathematica can become 
a universal, or even very widespread, publication medium, where I use 
"become universal" to mean that Mathematica notebooks will displace 
and/or replace many other current publication formats like TeX, PDF, or 
even Word or PowerPoint (as much as I loathe Microsoft!), for many 
current media applications like reports, journal publications, 
presentations, dissertations, and so on.

In fact, I think the attempt to expand Mathematica to accomplish this is 
not just misguided but actively damaging, to Mathematica and to its 
users.  Reasons for this include:

a)  I view Mathematica as a very sophisticated *computational* tool, and 
secondarily as a similarly sophisticated graphical and textual *display* 
for outputting its computed results -- and I consider it to be of high 
quality and highly successful at both of these tasks.  

But, viewed just as a high-grade and sophisticated computational tool, 
Mathematica is already (and unavoidably) enormously large, enormously 
complex, with complex syntax, and many complex internal interactions -- 
which means a large learning curve, and a huge documentation, just to do 
the computational task.  

Don't try to tell me about how a novice can type in and evaluate 
a=2;b=3;c=a+b;Plot[c x, {x,0,5}] the first time they sit down in front 
of it.  That's certainly true, but as soon as you get to any significant 
level of computational sophistication, there's a _large_ learning curve, 
and many ways to go wrong in using what you've learned -- and a very 
large "remembering task", to retain all this knowledge from one time you 
use it to the next.

[As I worked my way from v1 through v5, each time I leaned some new 
coding trick, or got one of the more sophisticated commands to work, I 
would toss a brief template and explanation into my own personal "notes" 
notebook, which was permanently accessible by being locked at the bottom 
of the "Open Recent" menu.  It's now 0.5 MB in size -- and of course 
made more or less useless by 6.0.]

b)  Add to this the graphic and textual (and animation) display 
capabilities that we all want to have from Mathematica, not as 
publication quality output but just as useful output.  Adding these 
display capabilities may not exactly double the size and complexity of 
Mathematica, and of the learning curve, and of the documentation, and of 
the "remembering task" associated with it -- but doing so very 
substantially  expands all of these aspects, as well as introducing all 
the complexities of interactions between the output routines and the 
computational routines.

[Plotting a result, or making a Table, can leave the _computational_ 
state of Mathematica different from what it was before you produced this 
output, right?  And Plot and Table change it in _different_ ways.  Not 
complaining about this -- just noting it.]

c)  So, you're proposing to add publication-quality output and 
presentation quality capabilities to the Mathematica core -- meaning 
adding all the added complexity of the program, the added syntax, the 
added learning curve, the added documentation, and the added 
"remembering task" associated with this function on top of the 
computational and display complexities already present.

Forget it!  ***Doing this is simply going to seriously damage the 
utility -- and commercial value of Mathematica for its primary 
computational and display functions, and for its "ordinary users"***.

d)  And, from what I know of journal publishing, commercial and by 
professional societies, it's not going to happen!


Finally: 

THE MULTIPLE NOTEBOOK PARADIGM IS FINE, FOR THOSE WHO LIKE 
IT -- WHICH I THINK CAN INCLUDE A LOT OF "ORDINARY USERS"

In arguing this, some interpolation can help:

> If you follow the multiple notebook paradigm, you also have to devise some
> kind of organization for the notebooks. 

All the organization that's needed is that all the notebooks that are 
needed for a given project are right there, visible and editable, in the 
folder (or a subfolder) for that project!

>You have to remember that for
> WorkingNotebookA you need ModuleNotebooks a, c and f. But for
> WorkingNotebookB you need ModuleNotebooks a, b, and c. Pretty soon you are
> designing your own system, which is not the standard Mathematica system.

Nope.  If I need (more accurately, "want to re-use some part") of 
notebooks a or c from project A in project B, I just copy 'em over to 
the Project B folder! (Rule #N -- Disk space is cheap!).

And once there, I can modify them for project B  -- without screwing up 
the copies left back in the project A folder.

And nothing I do will be modifying Mathematica itself -- don't intend to 
get into that (I'm after max simplicity, not complications).

> People who might use your notebooks not only have to learn the standard
> system (because they might be doing other things as well) but they also have
> to learn your special system.

The only thing they have to do to _use_ my notebooks as written (i.e., 
to produce further results from them) is start a standard copy of 
Mathematica fresh, open my notebooks, and run 'em.  

If they've modified their copy of Mathematica itself to be non-standard 
in some way, well, they've produced problems that may occur however

If they want to merge my notebooks into some notebooks of theirs, well, 
I'm afraid this is "do this at your own risk situation" -- and I've not 
made it more difficult.

> In the time it took you to devise your own system, you could have learned
> the standard package system. It is really not that difficult.

Sorry -- can't agree.  There are not a lot of complex steps involved in 
defining  or using packages, agreed.  **But digging the exact correct 
steps out of the documentation, learning the vocabulary, avoiding 
missteps, and remembering these steps after a time lag, are all 
frustrating and time-consuming**.

> If you organize your notebooks using Sections (and I wonder if using
> multiple notebooks is a substitute for using Sectional organization within a
> notebook?), then you can initially put
> your routines in a Routines Section. The notebook does not have to be
> 'visually large' because the Routines Section can usually be closed up.

I don't like long notebooks -- navigating through them is awkward and 
tedious.  I don't like open and closing selected cells -- tedious and 
awkward also.  Since it makes no difference in functionality, why don't 
I put the Routines Section in a separate notebook, meaning a separate 
window -- which, on a Mac, I can instantaneously, with a single mouse 
click or key command, fold down into the Dock, or WindowShade (still 
functional), and equally quickly recover to edit if needed.

---------

Enough for now -- and quite a while beyond that.

Over and out,   AES

======================================
In article <fu9fps$cbb$1 at smc.vnet.net>,
 "David Park" <djmpark at comcast.net> wrote:

> AES,
> 
> I would like to put in a pitch for using the standard Mathematica package
> method and maybe even go further and learn something about documentation.
> 
> I think one of the unstated assumptions here is that no one else is going to
> see your Mathematica work because all of the pertinent results will be
> Exported or copied out into non-Mathematica documents before being
> transmitted to a larger public. In that case why not organize the internal
> work in the way that seems most convenient to you?
> 
> But another assumption that we can make for certain is that you have expert
> knowledge and a lot of experience in optical fibers. You also have done, and
> will do a lot of work in organizing the theory and calculation methods for
> the field. This is valuable stuff! So why not make it available to others in
> the Mathematica format with all of its advantages of dynamics and
> interactivity. In addition to the final results, if you have worked out
> various algorithms, calculation and display routines these are valuable. Why
> not make them available to other people as Mathematica packages?
> 
> If you follow the multiple notebook paradigm, you also have to devise some
> kind of organization for the notebooks. You have to remember that for
> WorkingNotebookA you need ModuleNotebooks a, c and f. But for
> WorkingNotebookB you need ModuleNotebooks a, b, and c. Pretty soon you are
> designing your own system, which is not the standard Mathematica system.
> People who might use your notebooks not only have to learn the standard
> system (because they might be doing other things as well) but they also have
> to learn your special system.
> 
> Rule Number 1: WRI has put a lot of thought into designing a user interface.
> It work's fairly well. Be very wary of interposing your own interface.
> 
> In the time it took you to devise your own system, you could have learned
> the standard package system. It is really not that difficult. A Mathematica
> package is just a simple particular form of notebook with Initialization
> cells. You just save it as an Auto Generated Package and that is all there
> is to it.
> 
> If you organize your notebooks using Sections (and I wonder if using
> multiple notebooks is a substitute for using Sectional organization within a
> notebook?), then you can initially put
> your routines in a Routines Section. The notebook does not have to be
> 'visually large' because the Routines Section can usually be closed up.
> Other things should also be in Sections. (When I'm working on a particular
> derivation of development I put it in its own Section. If I don't especially
> like it or get stuck I usually mark it as Try 1, close it up, copy and paste
> it and work on a Try 2. When I finally get something I like I throw all the
> false steps away.) When you develop a routine in a
> working notebook, move it to the Routines Section and write a usage message
> for it and make it an Initialization cell. If you start a new working
> notebook, copy the Routines Section over. At some point, you will be
> convinced that some of the routines are in good shape for general use. Then
> move them to your OpticalFiber package. Then you will have one simple
> working structure. A single package and working notebooks that load the
> package. You or your readers don't have to look at any of the package code
> anymore. You may still have some things in your Routines Sections that
> haven't yet made it to the package.
> 
> Documentation is another question, but again, if you have worked out good
> routines and methods they are really worth something to other people and
> deserve to be documented. (And in any case, I find that I am always
> forgetting how some of my own routines work and have to refer to my own
> documentation!) With a little cleverness the documentation can also serve as
> a set of test cases if you make changes to your routine. Working on
> documentation also helps to perfect a routine. Sometimes if it is difficult
> to explain and illustrate a routine one might wonder about it basic design.
> It's true that this takes time, but it's a focused and productive use of
> one's time.
> 
> David Reiss has put up a good introduction to creating Version 6
> documentation.
> 
> http://www.scientificarts.com/worklife/notebooks/
> 
> and the Workbench application for documentation is coming along.
> 
> Rule Number 2: Most users of Mathematica are pretty capable people. Turn
> your hard work into permanently useful and active knowledge for yourself and
> other people.
> 
> -- 
> David Park
> djmpark at comcast.net
> http://home.comcast.net/~djmpark/


  • Prev by Date: Re: Comments on the .m file editor
  • Next by Date: Re: Defining derivatives
  • Previous by thread: Re: A kernel, multiple notebooks, and Global?
  • Next by thread: Re: Re: A kernel, multiple notebooks, and Global?