Thanks Joel! That was great help. I'm surprised I didn't think of using objects in 
that way. Rebol
is more powerful everytime I look at it ...Simple but Powerful... And that modular 
architecture
paper I just read (thanks Andrew...) sounds really interesting! I definately think 
I've found the
language I've been searching for...

Sorry about the html messages i've been sending to this list. My beos networking is 
down for some
reason and I am stuck in complicated microsoft outlook program. Look forward to 
switching to qnx
realtime platform soon!!

By the way, did anyone write a rebapp to read/post messages on this newsgroups rather 
than having it
come in my mail box? I am having to constantly subscribe/unsubscribe on demand 
depending on when I
need to send messages. If their is such a rebapp, please let me know! (or do I have to 
write it?)

And is there a way to read older archives of this newsgroup (like several months/years 
old) so I
don't have to post questions that have been answered?

Rishi

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, September 10, 2000 9:27 PM
Subject: [REBOL] rebol weak points (i think) Re:(3)


> Hi, Rishi...
>
> Just a couple of points re REBOL objects that may be of some help:
>
> [EMAIL PROTECTED] wrote:
> >
> > no. The Math/Pie you have created is an instance variable not a
> > static variable. It is associated with an instance of the class,
> > not the class itself. A static variable means that there is a
> > single copy of this variable associated with class itself. You do
> > not need to instantiate a class to use static variable...
> >
>
> 1)  The distinction to which you keep referring -- "class variable"
>     vs. "instance variable" -- doesn't exist at all in REBOL because
> REBOL doesn't use the class-based object model of Java or Smalltalk.
>
> There are other ways to think of objects than simply as instances of
> "classes".  In NewtonScript and Self, for example, objects exist
> completely as standalone entities without any enveloping class.
> Instead, in both of those langauges, objects can have "prototypes",
> other objects to which they refer for common (or default) attributes
> and methods.  In those languages, the object-to-prototype relationship
> is maintained throughout the lifetime of an object, so that changes
> to an attribute/method of an object are visible within any other
> objects that refer to the first object as their prototype (and that
> have not overridden the attribute/method involved).
>
> In REBOL, an object is a standalone entity.  It may be created
> directly, using  make object! ...  or may be created using another
> object as a model or specification.  However, it is cloned at the
> time of creation, and no longer maintains a relation to its model
> object.  For example:
>
>     >> ob1: make object! [
>     [    attr: 23
>     [    meth: func [] [print attr: attr + 1]
>     [    ]
>     >> kenobi: make ob1 []
>     >> ob1/meth
>     24
>     >> ob1/meth
>     25
>     >> ob1/meth
>     26
>     >> kenobi/meth
>     24
>     >> kenobi/meth
>     25
>     >> kenobi/meth
>     26
>     >> ob1/attr: 2
>     == 2
>     >> ob1/meth
>     3
>     >> ob1/meth
>     4
>     >> kenobi/meth
>     27
>     >> kenobi/meth
>     28
>     >>
>
> Notice that  kenobi  has its own copy of  attr  and  meth  which
> are independent of those in  ob1  even though no explicit overriding
> was done at the creation of  kenobi .  Therefore all objects are
> created equal, without any "class" vs. "instance" distinction.
> Therefore the term "static" as used in Java or c++ is meaningless
> in REBOL.
>
> >
> > The main advantage of having static variables would be to prevent
> > name collisions and to group variables/functions that act on a
> > class (not an object) together for use in a more natural way.
> >
> > The main disadvantage of having static variables is that perhaps
> > it is an unnecessary complication. But I don't think so. Maybe
> > because I come from java/javascript background. I'm still wondering
> > though if there is a way to have static variables that I don't know.
> >
> > Regardless, the main problem that I wonder about is if rebol is
> > suited for modular programming where people reuse other people's
> > functions/code. Since everything is either global or local, it seems
> > as though it would be unnatural to use rebol in this way...
> >
>
> 2)  I frequently use objects in my own REBOL programming to get
>     exactly the benefit you're looking for: to partition the namespace.
> Most of my REBOL source files define objects to encapsulate all of the
> variables, subordinate functions, parse pattern blocks, etc. that make
> up the details of the main idea of the script.  A limited number (often
> only one!) of the functions within the object are actually intended for
> use by the clients of the object.  It's a handy way to structure and
> modularize libraries of code (and DOES offer a alternative to global
> and local).  I write code in this fashion when I want to reuse it
> myself across many independent projects.
>
> Hope this helps!
>
> -jn-
>

Reply via email to