Re: OOP in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg29032] Re: OOP in Mathematica
- From: "Drago Ganic" <drago.ganic at in2.hr>
- Date: Fri, 25 May 2001 01:48:08 -0400 (EDT)
- Organization: HThinet
- References: <9e02ol$30e@smc.vnet.net> <9e2bm5$63u@smc.vnet.net> <CjLN6.9482$dl4.29613@ralph.vnet.net> <9eigq5$51t@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi ,
There are two things I am missing in Mathematica and I would like to hear other opinions:
First: Naming "functions" and "objects"
==============================
When using the ? HELP I would like sometimes to know what an object can "do" [the functions] and sometimes on what objects a certain function can operate [the objects]. So I would like a function browser and an object browser.
Here is an example: Using
?Notebook*
gives all the "functions" I can use with a Noteook object. Among them I can find a NotebookCreate function.
Now I am interested what other objects can be "created". Using
?*Create
I find another "function" LinkCreate. But using
?Create*
I find CreateDirectory ?!?. Mathematica is inconsistent in naming its symbols. This can make it hard to learn and/or remember.
Here is my question: Why do I have a function NotebookCreate and not a function Create which operates on Notebooks, Directory and so on.... Why is overloading not used in these cases?
Browsing through the Section 2.10 of the Mathematica book I find the need for the generic "functions":
Print ,Open, Put, Get, Move, Find, Locate, Write, Apply, Delete, Read, Evaluate, Create, Animate, Save, Close, Execute, ...
overloaded to work with the "objects":
Cell, Style, Notebook, Selection, FroneEndToken, FrontEnd
Second: No Data Type
==================
Having a Date "type" is extremly important in business aplications in which I am personally involved [maybe I'm the only one here :-))].
Not having one, gives the user the opurtunity to add a "number" to a "day in month" resulting in a nonsense:
In[28]:=Date[]
Out[28]= {2001, 5, 24, 20, 17, 33}
In[30]:= Date[] + {0, 0, 10, 0, 0, 0}
Out[30]= {2001, 5, 34, 20, 18, 10}
I now that I can use
In[33]:=ToDate@FromDate[Date[] + {0, 0, 10, 0, 0, 0}]
Out[33]={2001, 6, 3, 20, 19, 31}
but I am quite unhappy with this solution. Why Date[] returns a LIST and not something like
Date[2001,5,24,20,17,33]
or
DateTime[2001,5,24,20,17,33]
on which Plus could be overloaded ...
Of course I know that I can change Mathematica to fit my needs but I would like to now why WRI made such design decisions.
Sorry for the long post. Hope sombody will answer :-)
Greetings from Croatia,
Drago Ganic
"Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de> wrote in message news:9eigq5$51t at smc.vnet.net...
> Hi,
>
> > With all respect, I think you might have said "in my opinion."
>
> I have no other opinion than mine.
>
> > OOP is
> > revolutionizing software development, by (among other things) separating
> > implementation from interface, thus allowing modules to interact more easily
> > and with fewer problems.
>
> That's OOP -- wow! I thought it is good programming style, working
> in every higher programming language.
>
> > Mathematica's "Module[]" facility is a simple
> > embodiment of this idea,
>
> What is with my beloved Block[] - is it also OOP ?
> Next you will say that patterns are also OOP, and the
> good old pure functions ? Is this object oriented ?
> Fine ! Now I know that LISP and Prolog are native
> object oriented languages !
>
> > by enclosing code blocks and isolating them from
> > their applications, making it possible to change the methods without
> > changing the outer appearance and uses.
>
> You change *functions* not methods! and this is functional programming.
> Since Mathematica does not know what a data type is, the data
> types can't have methods.
> But you can have functions that evaluate special arguments.
>
> Regards
> Jens
>