Fwd: ABM

classic Classic list List threaded Threaded
53 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Douglas Roberts-2
FRIAMers,

I received this today from several of my co-workers and thought I'd pass it
on.

I still can't help but feeling that in general, *way* too many words are
being used to describe ABM (and IBM) methodologies.  The underlying concept
of object-oriented software design as the basis for ABM simulation
architecture is just so straight forward and intuitive that I am repeatedly
amazed at how people continue to make such a big, mysterious deal out of it.

But, I suppose that's just me, and my opinion...

--Doug

--
Doug Roberts, RTI International
droberts at rti.org
doug at parrot-farm.net
505-455-7333 - Office
505-670-8195 - Cell


****************************************************

This is a very interesting resource re: Agent Based Modeling.



            http://www.openabm.org/site/



Note also the current efforts re: ODD (Overview, Design Concepts and
Details) ?based descriptions (cf. attached manuscript).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070601/7473d176/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GrimmODD4780.pdf
Type: application/pdf
Size: 343099 bytes
Desc: not available
Url : http://redfish.com/pipermail/friam_redfish.com/attachments/20070601/7473d176/attachment-0001.pdf 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Marcus G. Daniels
Douglas Roberts wrote:
> I still can't help but feeling that in general, *way* too many words
> are being used to describe ABM (and IBM) methodologies.  The
> underlying concept of object-oriented software design as the basis for
> ABM simulation architecture is just so straight forward and intuitive
> that I am repeatedly amazed at how people continue to make such a big,
> mysterious deal out of it.
For some reason many ABM enthusiasts feel the need to introduce basic
programming and computer science to their peers in their own peculiar
and impoverished language.
Why OOP gets embraced in particular completely baffles me and much of it
is inappropriate for modeling.  (e.g. rigid inheritance)   I suspect it
has to do with the need many perceive to learn and use toolkits.



Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Prof David West

it is perhaps inappropriate to comment on a discussion before posting an
introduction (as I was asked to do when I joined the list) but I cannot
resist.  (I will post an intro tonight.)

As an unmitigated object bigot I would claim that there is nothing in
agents (or aspects for that matter) that did not exist in objects as
objects were supposed to be.  The fact that objects were hijacked and
emasculated by C++ (later Java) and data modelers (UML) explains much of
the bafflement: perhaps.


On Fri, 01 Jun 2007 14:05:44 -0600, "Marcus G. Daniels"
<marcus at snoutfarm.com> said:

> Douglas Roberts wrote:
> > I still can't help but feeling that in general, *way* too many words
> > are being used to describe ABM (and IBM) methodologies.  The
> > underlying concept of object-oriented software design as the basis for
> > ABM simulation architecture is just so straight forward and intuitive
> > that I am repeatedly amazed at how people continue to make such a big,
> > mysterious deal out of it.
> For some reason many ABM enthusiasts feel the need to introduce basic
> programming and computer science to their peers in their own peculiar
> and impoverished language.
> Why OOP gets embraced in particular completely baffles me and much of it
> is inappropriate for modeling.  (e.g. rigid inheritance)   I suspect it
> has to do with the need many perceive to learn and use toolkits.
>
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org


Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Marcus G. Daniels
Prof David West wrote:
> As an unmitigated object bigot I would claim that there is nothing in
> agents (or aspects for that matter) that did not exist in objects as
> objects were supposed to be.
Ideally, agents ought to have the ability to function as individuals
without coordination through schedulers, top down event loops, etc., the
ability to change their functioning over time (change their set of
active methods or implementations of them), and the ability to move
around and adapt to an environment.  Seems to me multithreaded CLOS has
all this, but not all of that is thanks to objects.

So how were objects supposed to be?



Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Phil Henshaw-2
In reply to this post by Marcus G. Daniels
Well, for the knowledgeably ignorant among us... what the heck is
'object oriented' programming anyway.  All the code looks like code to
me, and other than having a few more sub-routines I don't understand the
purpose or design of... what's changed other than standardizing a few
protocols across platforms?  


Phil Henshaw                       ????.?? ? `?.????
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
680 Ft. Washington Ave
NY NY 10040                      
tel: 212-795-4844                
e-mail: pfh at synapse9.com          
explorations: www.synapse9.com    


> -----Original Message-----
> From: friam-bounces at redfish.com
> [mailto:friam-bounces at redfish.com] On Behalf Of Marcus G. Daniels
> Sent: Friday, June 01, 2007 4:06 PM
> To: The Friday Morning Applied Complexity Coffee Group
> Subject: Re: [FRIAM] Fwd: ABM
>
>
> Douglas Roberts wrote:
> > I still can't help but feeling that in general, *way* too many words
> > are being used to describe ABM (and IBM) methodologies.  The
> > underlying concept of object-oriented software design as
> the basis for
> > ABM simulation architecture is just so straight forward and
> intuitive
> > that I am repeatedly amazed at how people continue to make
> such a big,
> > mysterious deal out of it.
> For some reason many ABM enthusiasts feel the need to introduce basic
> programming and computer science to their peers in their own peculiar
> and impoverished language.
> Why OOP gets embraced in particular completely baffles me and
> much of it
> is inappropriate for modeling.  (e.g. rigid inheritance)   I
> suspect it
> has to do with the need many perceive to learn and use toolkits.
>
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org
>
>




Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Robert Holmes
Here's a couple of sites that could be worth checking out Phil:

http://www.google.com/search?hl=en&q=object+oriented+programming&btnG=Google+Search
http://en.wikipedia.org/wiki/Object-oriented_programming

Robert

On 6/2/07, Phil Henshaw <sy at synapse9.com> wrote:
>
> Well, for the knowledgeably ignorant among us... what the heck is
> 'object oriented' programming anyway.  All the code looks like code to
> me, and other than having a few more sub-routines I don't understand the
> purpose or design of... what's changed other than standardizing a few
> protocols across platforms?
>
>
> Phil Henshaw                       ????.?? ? `?.????
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070602/a422efcb/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Douglas Roberts-2
In reply to this post by Prof David West
I don't seem to be receiving all of the messages on this thread, which makes
it a bit difficult to follow who said what.  It appears from the below that
somebody (Marcus? Surely not!) was grumping about OOP as an ABM
implementation framework.

Agents in an ABM are (or should be*) software objects that correlate to
their real-world counterparts at a level of resolution that is defined by
the requirements of the problem to be solved by the simulation.  Once
implemented, these software agents interact with other agents in the model
at a level of resolution and granularity that is again defined by the model
requirements. This is how my colleagues, and in fact most other ABM
developers that I know have been developing ABMs for quite a while.  We have
found that OO methodologies are best suited to ABM implementation, as
compared to, say FORTRAN, COBOL, PL-1, Pascal, LISP, assembly language, or
whatever your particular favorite procedural programming language happens to
be.

Whether or not you prefer C++,  Java, Charm++, Lisp+Colors, Lisp+CLOS,  or
whatever your favorite OO development environment is was not the focus of my
original claim that OO methodologies embody the essence of ABM design best
practices.  The point was that in order to implement in software simulation
agents that are corollaries of real-world objects at some defined level of
granularity, you need an object oriented software development environment.
(Duh! ;-o))

Issues such as how an OO environment implements OO features, such as
inheritance, method overloading, containment, data members and typing,
function members, and all the other tricks of the OO trade that allow the
developer to use polymorphism to create a suite of agents that can satisfy
the analytical requirements of the completed ABM was intended to be the
topic of some other flame war!

;-}

--Doug

--
Doug Roberts, RTI International
droberts at rti.org
doug at parrot-farm.net
505-455-7333 - Office
505-670-8195 - Cell

[*Footnote from the (or should be) above:  I know people who have written
applications with no object-oriented technologies at all, using FORTRAN or
C, (or worse, purely procedural Java) and who claim to have developed an
ABM.  I contend, that while they may have developed a really neato
simulation, it isn't an ABM.  Where are the agents?  Rows of an array?
Elements of a struct?  An array of structs? I really don't think so.

Sure, you can emulate an OO environment in C with structs and function
pointers, and you can even call it an OO implementation.  But it's not.  And
please, let's save the topic of "object-oriented FORTRAN" for its own
special flame war!]

On 6/1/07, Prof David West <profwest at fastmail.fm> wrote:

>
>
> it is perhaps inappropriate to comment on a discussion before posting an
> introduction (as I was asked to do when I joined the list) but I cannot
> resist.  (I will post an intro tonight.)
>
> As an unmitigated object bigot I would claim that there is nothing in
> agents (or aspects for that matter) that did not exist in objects as
> objects were supposed to be.  The fact that objects were hijacked and
> emasculated by C++ (later Java) and data modelers (UML) explains much of
> the bafflement: perhaps.
>
>
> On Fri, 01 Jun 2007 14:05:44 -0600, "Marcus G. Daniels"
> <marcus at snoutfarm.com> said:
> > Douglas Roberts wrote:
> > > I still can't help but feeling that in general, *way* too many words
> > > are being used to describe ABM (and IBM) methodologies.  The
> > > underlying concept of object-oriented software design as the basis for
> > > ABM simulation architecture is just so straight forward and intuitive
> > > that I am repeatedly amazed at how people continue to make such a big,
> > > mysterious deal out of it.
> > For some reason many ABM enthusiasts feel the need to introduce basic
> > programming and computer science to their peers in their own peculiar
> > and impoverished language.
> > Why OOP gets embraced in particular completely baffles me and much of it
> > is inappropriate for modeling.  (e.g. rigid inheritance)   I suspect it
> > has to do with the need many perceive to learn and use toolkits.
> >
> >
> > ============================================================
> > FRIAM Applied Complexity Group listserv
> > Meets Fridays 9a-11:30 at cafe at St. John's College
> > lectures, archives, unsubscribe, maps at http://www.friam.org
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070602/0cf851e6/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Prof David West
In reply to this post by Phil Henshaw-2
On Fri, 01 Jun 2007 19:09:05 -0600, "Marcus G. Daniels"
<marcus at snoutfarm.com> said:

> Prof David West wrote:
> > As an unmitigated object bigot I would claim that there is nothing in
> > agents (or aspects for that matter) that did not exist in objects as
> > objects were supposed to be.
> Ideally, agents ought to have the ability to function as individuals
> without coordination through schedulers, top down event loops, etc., the
> ability to change their functioning over time (change their set of
> active methods or implementations of them), and the ability to move
> around and adapt to an environment.  Seems to me multithreaded CLOS has
> all this, but not all of that is thanks to objects.
>
> So how were objects supposed to be?

Fully autonomous, intelligent, virtual computers.  Intelligence included
meta-intelligence (reflection).  Of course this was a metaphor and and
all implementations (including Smalltalk and Self) fell somewhat short
in the early years.  When ParcPlace finally realized that Java was a
threat and not just a toy they released their lab technology that made
the metaphor 95% realizable, but people had already stopped listening.

An object should function as an individual (classes, class hierarchies
were a kludge to facilitate semi-efficient implementation), should
contain within itself the ability to work with other objects to obtain
resources (memory, bus, cpu), handle its own message queuing, add/delete
functions and knowledge at run-time, move, and adapt.  A Smalltalk
expression should be a first class object, hence be modifiable at
run-time (through the actions of itself or other objects) and a
Smalltalk program should be nothing more than a first class ordered
collection - also modifiable at run-time.

The only dependency to non-objectiveness is reliance on an intepreter -
which can be extremely small and efficient.

Objects should be able to interact with bare hardware and not rely on OS
or other environments - like the Smalltalk image.

I would content that all of this was possible in the nineties in
Smalltalk.  Not much of it has been utilized outside of the European
Squeak (Alan Kay and Dan Ingalls rewritten Smalltalk) community.

davew
>
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org


Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Prof David West
In reply to this post by Phil Henshaw-2



Rather than attempt a definition, per se, consider when and where you
can observe differences between OO and say procedural programming.
   At the level of post compilation / interpretation instructions -
   none, can't be.
   At the level of a single statement or expression - very minimal,
   syntax and idiom.
   At the level of a collection of statements (program) - far fewer
   lines of code (order of magnitude or more), no explicit loop
   constructs,
        zero case statements, no nested-IF statements, very few IF
        statements at all, no type declarations, etc.
   At the level of modularization - very different distribution of code
   across a set of objects than across a set of modules, no
        "centralized control" (master control module, main routine,
        etc.).
   At the level of conceptualization - major differences in how objects
   are identified and specified.  Complete absence of "data" -
       Everything is an object!

davew
   
On Sat, 02 Jun 2007 10:13:19 -0400, "Phil Henshaw" <sy at synapse9.com>
said:

> Well, for the knowledgeably ignorant among us... what the heck is
> 'object oriented' programming anyway.  All the code looks like code to
> me, and other than having a few more sub-routines I don't understand the
> purpose or design of... what's changed other than standardizing a few
> protocols across platforms?  
>
>
> Phil Henshaw                       ????.?? ? `?.????
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 680 Ft. Washington Ave
> NY NY 10040                      
> tel: 212-795-4844                
> e-mail: pfh at synapse9.com          
> explorations: www.synapse9.com    
>
>
> > -----Original Message-----
> > From: friam-bounces at redfish.com
> > [mailto:friam-bounces at redfish.com] On Behalf Of Marcus G. Daniels
> > Sent: Friday, June 01, 2007 4:06 PM
> > To: The Friday Morning Applied Complexity Coffee Group
> > Subject: Re: [FRIAM] Fwd: ABM
> >
> >
> > Douglas Roberts wrote:
> > > I still can't help but feeling that in general, *way* too many words
> > > are being used to describe ABM (and IBM) methodologies.  The
> > > underlying concept of object-oriented software design as
> > the basis for
> > > ABM simulation architecture is just so straight forward and
> > intuitive
> > > that I am repeatedly amazed at how people continue to make
> > such a big,
> > > mysterious deal out of it.
> > For some reason many ABM enthusiasts feel the need to introduce basic
> > programming and computer science to their peers in their own peculiar
> > and impoverished language.
> > Why OOP gets embraced in particular completely baffles me and
> > much of it
> > is inappropriate for modeling.  (e.g. rigid inheritance)   I
> > suspect it
> > has to do with the need many perceive to learn and use toolkits.
> >
> >
> > ============================================================
> > FRIAM Applied Complexity Group listserv
> > Meets Fridays 9a-11:30 at cafe at St. John's College
> > lectures, archives, unsubscribe, maps at http://www.friam.org
> >
> >
>
>
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org


Reply | Threaded
Open this post in threaded view
|

Fwd: ABM (Object-Oriented)

Robert Howard-2-3
In reply to this post by Robert Holmes
That WIKI definition
<http://en.wikipedia.org/wiki/Object-oriented_programming>  will leave you
confused if you?re learning OO for the first time.

 

Here?s a hard physical-sciences analogy:

* In physics, you have Statics and Dynamics.
* In biology, you have Anatomy and Physiology.
* In molecular biology, you have Structure and Function.
* In languages, you have Nouns and Verbs.
* In chaos theory, you have the system (e.g. a differential equation),
and its phase space <http://en.wikipedia.org/wiki/Phase_space> .
* In general, you have the part that doesn?t change, and the part that
does.

 

In computers, you also have the part that doesn?t change. Depending on the
vernacular context, these static parts are called a Types, Structures,
Schema, Address locations, Code/Instruction Libraries, and Classes.

You also have the part that does change. Again, depending on the circle of
nomenclature, these dynamic parts are called Values, State, Execution/Run,
and Objects.

 

When talking about code, the actual instructions are the static part, and
stored in memory (or disk).

The actual execution of this code is the dynamic part and run by a processor
(or virtual runtime environment).

 

A dynamic part always presupposes a static part. You cannot understand a
VERB unless a NOUN is implied. One must study anatomy first before
physiology; numbers before functions; etc.

 

Programming languages, like mathematics, is a method for humans to transmit
these concepts and ideas to other humans via an alphabet or symbolic scheme.


Compilers transform programming languages into that which a computer can
understand. This is how computational science goes one step further than
mathematics.

 

All languages (programming, mathematical, and natural) must model both the
statics and the dynamics of their system when describing it.

Natural languages combine ?nouns? and ?verbs? to get sentences?their
smallest unit of information.

Programming languages combine ?structures? and ?code? to get functions. A
subroutine is a function with no return value.

 

Different naturally languages have different syntax. German ends sentences
with verbs. English puts them closer to the beginning.

 

Programming languages have similar analogies too.

?Structured programming languages? (Pascal, C, FORTRAN, LISP) begin with
functions that operate on specific structures (called parameters). They are
verb-oriented in nature.

?Object-oriented programming languages (Java, C#, CLOS) begin with
structures (called classes) that send messages to methods. They are
noun-oriented in nature.

 

In a structured programming language, I might write: FLIP(Pancake, Quickly)

In an object-oriented programming language, I would write
Pancake.FLIP(Quickly)

 

For an English analogy, we have an obvious noun (the subject) called
Pancake. There?s a verb: To Flip. We have parameters that we pass in to the
function call to modify its behavior. If the parameter is a constant, like
Quickly, we call it an adverb. If it is another object, we call it a direct
object, or indirect object, or prepositional object?depending on its English
use. Properties of an object are called adjectives.

 

When you see a declaration in code that looks like this (regardless of
whether it?s structured or OO): int i = 5
 to declare an integer called ?i"
that contains the value 5, int is the class (or structure, or type) and i is
the object. 5 is the initial state of the object. If you want to convert
this number to a string in a structured programming language, you might
write this: ToString(i)

To do the same in an object-oriented language, you?d write i.ToString()

 

It?s all syntax! Just like there is nothing in English I can?t say in
German, there?s no system modeled in an object-oriented programming language
that I cannot express in a structured programming one.

 

In case you read articles on the net, here are some vocabulary use cases:

* ?Classes? store the static non-changing parts of a system in memory
(or disk). Classes contain static structures (or types) called ?fields? or
?attributes?, and static code called ?methods?.
* ?Objects? are classes that are being run by the processor (or the
virtual runtime environment). Their fields (called ?properties?) have actual
values (the dynamic parts). This is why we say that ?objects have state?.
* The same class can be copied into memory multiple times (called
instances, or just objects) each being submitted to a processor and each
having different state. This is why we say that ?objects have identity?.
* Every method in a class operates on a specific object instance of
it. This is why we say that ?objects have behavior?. When a ?method? is
executed, it is called a ?message?.
* Static methods; dynamic messages. Static fields (or attributes);
dynamic properties. Static types (or schema); dynamic state.

 

To understand ABM?s, like understanding anything, I suggest this approach:
form a paradigm by understanding the static parts first, and then observe
(or deduce) the dynamics in the context of the statics.

The more chaotic, less rigorous approach, involves looking at all the
dynamics simultaneously (or participating in those existential terms) and
then trying to infer the structure.

I think this latter approach leads to confusion, frustration, and
post-modernistic dialogs.

When the only way to understand the statics is by black-box observation of
the dynamics, then use the scientific principle: fix all but one dynamic,
and vary it in a controlled manner.

 

Robert Howard
Phoenix, Arizona

 

  _____  

From: [hidden email] [mailto:[hidden email]] On Behalf
Of Robert Holmes
Sent: Saturday, June 02, 2007 9:48 AM
To: The Friday Morning Applied Complexity Coffee Group
Subject: Re: [FRIAM] Fwd: ABM

 

Here's a couple of sites that could be worth checking out Phil:

http://www.google.com/search?hl=en
<http://www.google.com/search?hl=en&q=object+oriented+programming&btnG=Googl
e+Search> &q=object+oriented+programming&btnG=Google+Search
http://en.wikipedia.org/wiki/Object-oriented_programming 

Robert

On 6/2/07, Phil Henshaw < sy at synapse9.com <mailto:sy at synapse9.com> > wrote:

Well, for the knowledgeably ignorant among us... what the heck is
'object oriented' programming anyway.  All the code looks like code to
me, and other than having a few more sub-routines I don't understand the
purpose or design of... what's changed other than standardizing a few
protocols across platforms?


Phil Henshaw                       ????.?? ? `?.????

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070602/f7bb87e3/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Marcus G. Daniels
In reply to this post by Douglas Roberts-2
Douglas Roberts wrote:
> Agents in an ABM are (or should be*) software objects that correlate
> to their real-world counterparts at a level of resolution that is
> defined by the requirements of the problem to be solved by the
> simulation.  [..]
As a practical matter, most object oriented programming involves stuff
that either acts or is acted upon.

I'm not very happy with that -- all these ad-hoc assignments to state
variables in objects.  A simulation that does the same thing with
transformations of objects (including singletons like some shared space)
is a description of a process that is closer to math.   Clear inputs and
outputs and specific mechanisms in between the two.
> [*Footnote from the (or should be) above:  I know people who have
> written applications with no object-oriented technologies at all,
> using FORTRAN or C, (or worse, purely procedural Java) and who claim
> to have developed an ABM.  I contend, that while they may have
> developed a really neato simulation, it isn't an ABM.  Where are the
> agents?  Rows of an array? Elements of a struct?  An array of structs?
> I really don't think so.
Throw in some #omp for's above the loops on a parallel machine to get
non-determinism..

#include <stdio.h>
#include <stdlib.h>

#define MOSTFUEL 100

typedef struct agent { int work; int fuel; } agent_t;

void init (agent_t *agent) {
  agent->work = 0;
  agent->fuel = rand () % MOSTFUEL;
  printf ("agent %p has %d units of fuel\n", agent, agent->fuel);
}

void step (agent_t *agent) {
  if (agent->fuel > 0) {
    printf ("agent %p working\n", agent);
    agent->work++;
    agent->fuel--;
  } else {
    printf ("agent %p out of juice\n", agent);
  }
}

main ()
{
  int N = 10;
  int steps = 50;
  int i, j;

  agent_t *agents = malloc (sizeof (agent_t) * N);
  if (!agents) abort ();

  for (i = 0; i < N; i++) init (&agents[i]);

  for (j = 0; j < steps; j++)
    for (i = 0; i < N; i++) step (&agents[i]);

  return 0;
}
>
> Sure, you can emulate an OO environment in C with structs and function
> pointers, and you can even call it an OO implementation.  But it's not.  
For example, an Objective C compiler just converts [obj msg] in user
source code into implicit C calls of sendMsg(obj,msg).  sendMsg is just
an ordinary C function that uses a hash to get the right function
pointer.   Then there is a bit of bookkeeping to set up the lookup
tables.   Yes it could all be done in C with a few coding conventions,
such as with http://users.pandora.be/stes/compiler.html 
> And please, let's save the topic of "object-oriented FORTRAN" for its
> own special flame war!]
Fortran 2003 seems like it could be a fine programming language for
agent models.   It has all the common OOP  features.  An argument for
Fortran, I suppose, would be superior numerical performance.   I doubt
it would be that big of a win, though, due to the fact that agent codes
tends to be rate limited by memory latency and CPU indirect mispredicts,
more than poor code generation of particular loops.

Consider the features of an implementation like this:

http://www.lahey.com/lf71/netwtpr1.htm

e.g.

module  
   ! Define a type (class) called Greyhound that extends
   ! the Dog class defined in C# code below, and is part of
   ! the VirtualDog namespace
   type, extends( VirtualDog%Dog ), namespace( VirtualDog ) :: Greyhound
   contains  
      ! Declare a class method (procedure); the 'pass'
      ! attribute makes it an instance (dynamic) procedure
      procedure, public, pass ::  Bark
   end type Greyhound
contains  
   ! Define the Bark method that overrides the inherited
   ! class' method; i.e., give the Greyhound its own bark
   subroutine Bark( this )  
      ! Declare the passed-object (hidden argument in the
      ! call statement) as the same type as the class
      class ( Greyhound ) :: this
      print *, "BOW WOW (Fortran Dog)"
   end subroutine Bark
end module








Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Russell Standish
On Sat, Jun 02, 2007 at 01:37:02PM -0600, Marcus G. Daniels wrote:
> Fortran 2003 seems like it could be a fine programming language for
> agent models.   It has all the common OOP  features.  An argument for
> Fortran, I suppose, would be superior numerical performance.   I doubt
> it would be that big of a win, though, due to the fact that agent codes
> tends to be rate limited by memory latency and CPU indirect mispredicts,
> more than poor code generation of particular loops.
>

The legendry performance of Fortran is due to its restrictive
interpretation of arrays and variable in Fortran77 - all variables are
staticly allocated rather than stack allocated, arguments are never
aliased, everything has to be expressed as a loop over an array of
simple data types.

Come Fortran 90 or Fortran 2003 which adds a lot of interesting
features to the language that C++ or Java has, and performance is not
so easy to attain, unless one restricts oneself to the Fortran 77
subset.

It is certainly possible to achieve equivalent performance in C++ to
Fortran 77 code. However, it is not as easy to do so - it tends to
require a good understanding of C++ and how compilers optimise codes.

Cheers

--

----------------------------------------------------------------------------
A/Prof Russell Standish                  Phone 0425 253119 (mobile)
Mathematics                        
UNSW SYDNEY 2052                 hpcoder at hpcoders.com.au
Australia                                http://www.hpcoders.com.au
----------------------------------------------------------------------------


Reply | Threaded
Open this post in threaded view
|

Fwd: ABM (Object-Oriented)

Robert Lancaster-3
In reply to this post by Robert Howard-2-3
Many thanks for the best distinction of structural and object  
oriented languages I have ever seen.  Big help for someone with a  
very elementary understanding of the art.  (I had just read the WIKI  
definition with the result which you predict.)

Bob L.

On Jun 2, 2007, at 11:50 AM, Robert Howard wrote:

> That WIKI definition will leave you confused if you?re learning OO  
> for the first time.
>
>
>
> Here?s a hard physical-sciences analogy:
>
> In physics, you have Statics and Dynamics.
> In biology, you have Anatomy and Physiology.
> In molecular biology, you have Structure and Function.
> In languages, you have Nouns and Verbs.
> In chaos theory, you have the system (e.g. a differential  
> equation), and its phase space.
> In general, you have the part that doesn?t change, and the part  
> that does.
>
>
> In computers, you also have the part that doesn?t change. Depending  
> on the vernacular context, these static parts are called a Types,  
> Structures, Schema, Address locations, Code/Instruction Libraries,  
> and Classes.
>
> You also have the part that does change. Again, depending on the  
> circle of nomenclature, these dynamic parts are called Values,  
> State, Execution/Run, and Objects.
>
>
>
> When talking about code, the actual instructions are the static  
> part, and stored in memory (or disk).
>
> The actual execution of this code is the dynamic part and run by a  
> processor (or virtual runtime environment).
>
>
>
> A dynamic part always presupposes a static part. You cannot  
> understand a VERB unless a NOUN is implied. One must study anatomy  
> first before physiology; numbers before functions; etc.
>
>
>
> Programming languages, like mathematics, is a method for humans to  
> transmit these concepts and ideas to other humans via an alphabet  
> or symbolic scheme.
>
> Compilers transform programming languages into that which a  
> computer can understand. This is how computational science goes one  
> step further than mathematics.
>
>
>
> All languages (programming, mathematical, and natural) must model  
> both the statics and the dynamics of their system when describing it.
>
> Natural languages combine ?nouns? and ?verbs? to get sentences?
> their smallest unit of information.
>
> Programming languages combine ?structures? and ?code? to get  
> functions. A subroutine is a function with no return value.
>
>
>
> Different naturally languages have different syntax. German ends  
> sentences with verbs. English puts them closer to the beginning.
>
>
>
> Programming languages have similar analogies too.
>
> ?Structured programming languages? (Pascal, C, FORTRAN, LISP) begin  
> with functions that operate on specific structures (called  
> parameters). They are verb-oriented in nature.
>
> ?Object-oriented programming languages (Java, C#, CLOS) begin with  
> structures (called classes) that send messages to methods. They are  
> noun-oriented in nature.
>
>
>
> In a structured programming language, I might write: FLIP(Pancake,  
> Quickly)
>
> In an object-oriented programming language, I would write  
> Pancake.FLIP(Quickly)
>
>
>
> For an English analogy, we have an obvious noun (the subject)  
> called Pancake. There?s a verb: To Flip. We have parameters that we  
> pass in to the function call to modify its behavior. If the  
> parameter is a constant, like Quickly, we call it an adverb. If it  
> is another object, we call it a direct object, or indirect object,  
> or prepositional object?depending on its English use. Properties of  
> an object are called adjectives.
>
>
>
> When you see a declaration in code that looks like this (regardless  
> of whether it?s structured or OO): int i = 5 ? to declare an  
> integer called ?i" that contains the value 5, int is the class (or  
> structure, or type) and i is the object. 5 is the initial state of  
> the object. If you want to convert this number to a string in a  
> structured programming language, you might write this: ToString(i)
>
> To do the same in an object-oriented language, you?d write  
> i.ToString()
>
>
>
> It?s all syntax! Just like there is nothing in English I can?t say  
> in German, there?s no system modeled in an object-oriented  
> programming language that I cannot express in a structured  
> programming one.
>
>
>
> In case you read articles on the net, here are some vocabulary use  
> cases:
>
> ?Classes? store the static non-changing parts of a system in memory  
> (or disk). Classes contain static structures (or types) called  
> ?fields? or ?attributes?, and static code called ?methods?.
> ?Objects? are classes that are being run by the processor (or the  
> virtual runtime environment). Their fields (called ?properties?)  
> have actual values (the dynamic parts). This is why we say that  
> ?objects have state?.
> The same class can be copied into memory multiple times (called  
> instances, or just objects) each being submitted to a processor and  
> each having different state. This is why we say that ?objects have  
> identity?.
> Every method in a class operates on a specific object instance of  
> it. This is why we say that ?objects have behavior?. When a  
> ?method? is executed, it is called a ?message?.
> Static methods; dynamic messages. Static fields (or attributes);  
> dynamic properties. Static types (or schema); dynamic state.
>
>
> To understand ABM?s, like understanding anything, I suggest this  
> approach: form a paradigm by understanding the static parts first,  
> and then observe (or deduce) the dynamics in the context of the  
> statics.
>
> The more chaotic, less rigorous approach, involves looking at all  
> the dynamics simultaneously (or participating in those existential  
> terms) and then trying to infer the structure.
>
> I think this latter approach leads to confusion, frustration, and  
> post-modernistic dialogs.
>
> When the only way to understand the statics is by black-box  
> observation of the dynamics, then use the scientific principle: fix  
> all but one dynamic, and vary it in a controlled manner.
>
>
>
> Robert Howard
> Phoenix, Arizona
>
>
>
> From: friam-bounces at redfish.com [mailto:friam-bounces at redfish.com]  
> On Behalf Of Robert Holmes
> Sent: Saturday, June 02, 2007 9:48 AM
> To: The Friday Morning Applied Complexity Coffee Group
> Subject: Re: [FRIAM] Fwd: ABM
>
>
>
> Here's a couple of sites that could be worth checking out Phil:
>
> http://www.google.com/search?hl=en&q=object+oriented 
> +programming&btnG=Google+Search
> http://en.wikipedia.org/wiki/Object-oriented_programming
>
> Robert
>
> On 6/2/07, Phil Henshaw < sy at synapse9.com> wrote:
>
> Well, for the knowledgeably ignorant among us... what the heck is
> 'object oriented' programming anyway.  All the code looks like code to
> me, and other than having a few more sub-routines I don't  
> understand the
> purpose or design of... what's changed other than standardizing a few
> protocols across platforms?
>
>
> Phil Henshaw                       ????.?? ? `?.????
>
>
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070603/21dff3a3/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM (Object-Oriented)

Marko Rodriguez
Hi,

I've been dealing with this issue in semantic networks. Semantic  
networks tend to be used for "descriptive" purposes. This is  
analogous to the structural aspects of a system. However, I've been  
interested in encoding the more "procedural" aspects of a system into  
the semantic network.

http://www.soe.ucsc.edu/~okram/papers/semantic-turing.pdf

BTW: I really enjoyed that last email. Its nice to see this strong  
distinction in other domains as well.

Marko.


On Jun 3, 2007, at 1:34 PM, Robert Lancaster wrote:

> Many thanks for the best distinction of structural and object  
> oriented languages I have ever seen.  Big help for someone with a  
> very elementary understanding of the art.  (I had just read the  
> WIKI definition with the result which you predict.)
>
> Bob L.
>
> On Jun 2, 2007, at 11:50 AM, Robert Howard wrote:
>
>> That WIKI definition will leave you confused if you?re learning OO  
>> for the first time.
>>
>>
>>
>> Here?s a hard physical-sciences analogy:
>>
>> In physics, you have Statics and Dynamics.
>> In biology, you have Anatomy and Physiology.
>> In molecular biology, you have Structure and Function.
>> In languages, you have Nouns and Verbs.
>> In chaos theory, you have the system (e.g. a differential  
>> equation), and its phase space.
>> In general, you have the part that doesn?t change, and the part  
>> that does.
>>
>>
>> In computers, you also have the part that doesn?t change.  
>> Depending on the vernacular context, these static parts are called  
>> a Types, Structures, Schema, Address locations, Code/Instruction  
>> Libraries, and Classes.
>>
>> You also have the part that does change. Again, depending on the  
>> circle of nomenclature, these dynamic parts are called Values,  
>> State, Execution/Run, and Objects.
>>
>>
>>
>> When talking about code, the actual instructions are the static  
>> part, and stored in memory (or disk).
>>
>> The actual execution of this code is the dynamic part and run by a  
>> processor (or virtual runtime environment).
>>
>>
>>
>> A dynamic part always presupposes a static part. You cannot  
>> understand a VERB unless a NOUN is implied. One must study anatomy  
>> first before physiology; numbers before functions; etc.
>>
>>
>>
>> Programming languages, like mathematics, is a method for humans to  
>> transmit these concepts and ideas to other humans via an alphabet  
>> or symbolic scheme.
>>
>> Compilers transform programming languages into that which a  
>> computer can understand. This is how computational science goes  
>> one step further than mathematics.
>>
>>
>>
>> All languages (programming, mathematical, and natural) must model  
>> both the statics and the dynamics of their system when describing it.
>>
>> Natural languages combine ?nouns? and ?verbs? to get sentences?
>> their smallest unit of information.
>>
>> Programming languages combine ?structures? and ?code? to get  
>> functions. A subroutine is a function with no return value.
>>
>>
>>
>> Different naturally languages have different syntax. German ends  
>> sentences with verbs. English puts them closer to the beginning.
>>
>>
>>
>> Programming languages have similar analogies too.
>>
>> ?Structured programming languages? (Pascal, C, FORTRAN, LISP)  
>> begin with functions that operate on specific structures (called  
>> parameters). They are verb-oriented in nature.
>>
>> ?Object-oriented programming languages (Java, C#, CLOS) begin with  
>> structures (called classes) that send messages to methods. They  
>> are noun-oriented in nature.
>>
>>
>>
>> In a structured programming language, I might write: FLIP(Pancake,  
>> Quickly)
>>
>> In an object-oriented programming language, I would write  
>> Pancake.FLIP(Quickly)
>>
>>
>>
>> For an English analogy, we have an obvious noun (the subject)  
>> called Pancake. There?s a verb: To Flip. We have parameters that  
>> we pass in to the function call to modify its behavior. If the  
>> parameter is a constant, like Quickly, we call it an adverb. If it  
>> is another object, we call it a direct object, or indirect object,  
>> or prepositional object?depending on its English use. Properties  
>> of an object are called adjectives.
>>
>>
>>
>> When you see a declaration in code that looks like this  
>> (regardless of whether it?s structured or OO): int i = 5 ? to  
>> declare an integer called ?i" that contains the value 5, int is  
>> the class (or structure, or type) and i is the object. 5 is the  
>> initial state of the object. If you want to convert this number to  
>> a string in a structured programming language, you might write  
>> this: ToString(i)
>>
>> To do the same in an object-oriented language, you?d write  
>> i.ToString()
>>
>>
>>
>> It?s all syntax! Just like there is nothing in English I can?t say  
>> in German, there?s no system modeled in an object-oriented  
>> programming language that I cannot express in a structured  
>> programming one.
>>
>>
>>
>> In case you read articles on the net, here are some vocabulary use  
>> cases:
>>
>> ?Classes? store the static non-changing parts of a system in  
>> memory (or disk). Classes contain static structures (or types)  
>> called ?fields? or ?attributes?, and static code called ?methods?.
>> ?Objects? are classes that are being run by the processor (or the  
>> virtual runtime environment). Their fields (called ?properties?)  
>> have actual values (the dynamic parts). This is why we say that  
>> ?objects have state?.
>> The same class can be copied into memory multiple times (called  
>> instances, or just objects) each being submitted to a processor  
>> and each having different state. This is why we say that ?objects  
>> have identity?.
>> Every method in a class operates on a specific object instance of  
>> it. This is why we say that ?objects have behavior?. When a  
>> ?method? is executed, it is called a ?message?.
>> Static methods; dynamic messages. Static fields (or attributes);  
>> dynamic properties. Static types (or schema); dynamic state.
>>
>>
>> To understand ABM?s, like understanding anything, I suggest this  
>> approach: form a paradigm by understanding the static parts first,  
>> and then observe (or deduce) the dynamics in the context of the  
>> statics.
>>
>> The more chaotic, less rigorous approach, involves looking at all  
>> the dynamics simultaneously (or participating in those existential  
>> terms) and then trying to infer the structure.
>>
>> I think this latter approach leads to confusion, frustration, and  
>> post-modernistic dialogs.
>>
>> When the only way to understand the statics is by black-box  
>> observation of the dynamics, then use the scientific principle:  
>> fix all but one dynamic, and vary it in a controlled manner.
>>
>>
>>
>> Robert Howard
>> Phoenix, Arizona
>>
>>
>>
>> From: friam-bounces at redfish.com [mailto:friam-bounces at redfish.com]  
>> On Behalf Of Robert Holmes
>> Sent: Saturday, June 02, 2007 9:48 AM
>> To: The Friday Morning Applied Complexity Coffee Group
>> Subject: Re: [FRIAM] Fwd: ABM
>>
>>
>>
>> Here's a couple of sites that could be worth checking out Phil:
>>
>> http://www.google.com/search?hl=en&q=object+oriented 
>> +programming&btnG=Google+Search
>> http://en.wikipedia.org/wiki/Object-oriented_programming
>>
>> Robert
>>
>> On 6/2/07, Phil Henshaw < sy at synapse9.com> wrote:
>>
>> Well, for the knowledgeably ignorant among us... what the heck is
>> 'object oriented' programming anyway.  All the code looks like  
>> code to
>> me, and other than having a few more sub-routines I don't  
>> understand the
>> purpose or design of... what's changed other than standardizing a few
>> protocols across platforms?
>>
>>
>> Phil Henshaw                       ????.?? ? `?.????
>>
>>
>>
>> ============================================================
>> FRIAM Applied Complexity Group listserv
>> Meets Fridays 9a-11:30 at cafe at St. John's College
>> lectures, archives, unsubscribe, maps at http://www.friam.org
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org

Marko A. Rodriguez
Los Alamos National Laboratory (P362-proto)
Los Alamos, NM 87545
Phone +1 505 606 1691
http://www.soe.ucsc.edu/~okram


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070603/1daaabf9/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM (Object-Oriented)

Robert Howard-2-3
Marko (and Russell Standish),

 

In Graph Theory, you have circles and lines (i.e. nodes and edges, or
vertices and connections).

It is possible to have circles and no lines, but not the converse. This is
because every line presupposes two circles?one on each end of the line. The
two circles can be the same circle (i.e. a reflexive line) but in this case,
that circle is playing two roles: FROM and TO (or source and sink).

 

PROOF: If you look at the definition of a graph in the PDF
<http://www.soe.ucsc.edu/~okram/papers/semantic-turing.pdf>  you sent or on
Wiki <http://en.wikipedia.org/wiki/Graph_%28mathematics%29> , it says V is a
set of vertices, and E ? V X V is a set of edges. Well, every subset
presupposes a superset. QED.

 

As mentioned previously, and for the same causal relationship, dynamics
presuppose statics. If your goal is to model the dynamics (you used the term
?procedural aspects?), then first model the statics (you used the term
?structural aspects?).

 

When I try to fit the definition and uses of ?objects? as per the semantic
web into my own paradigm, I get contradictions. As I define:

 

An object is two parts: a static part and a dynamic part.

Although mathematics is the first object-oriented language (practically
perfected at inception), the computer industry has really convoluted the
definitions to the point where nobody know what anyone is talking about
these days.

Computers bestow the concept of ?lifetime? to objects. Computers create
objects in memory, and then dispose of them when no longer needed only to
create different objects later at the same identity. We almost take this for
granted!

Mathematics does not have this concept of lifetime. In fact, the Platonic
philosophy imagines the number ?7? as something that just exists out there
timeless, immutable, and consistent, where its identity equals its class and
state. Its identifier maps bijectively to its identity. Its name is its
value. However, computer objects pop into existence during the execution of
some system and pop right back out. I can?t help but think about virtual
particles (or for that matter, universe bubbles) popping in and out of the
space of all things possible. When the program ends, the universe ends too.

 

Mathematicians are ?inside? the world of mathematics whereas computer
programmers are ?outside? the world of computers. It should be no wonder
that historically, the best theories of physics: Newtonian, Relativity,
Quantum, come when we move our godlike egos from outside to inside. Perhaps
computer programmers are the last bastion fighting the wave of humility.
Bekenstein?s Theory of Information suggests that they are starting to come
inside.

 

I just bought Russell Standish?s book ?The
<http://www.amazon.com/Theory-Nothing-Russell-Standish/dp/1921019638>
Theory of Nothing? after reading the cover. I?m always looking (mostly in
vain) for someone else?s perspective on what I think I understand but cannot
express: that our multiverse is the superposition of all consistent
solutions (or family of curves) that sum to zero. That?s how you get
something from nothing. I have high hopes with this book. Still waiting for
it to come!

 

Anyway, the physical limitations of finite computers force us to partition
the static part of an object into two parts: its class and its identity. The
dynamic part of an object is still called its state.

 

In the world of computers, an object?s class is the static set of immutable
rules that the object always conforms to ? even before the object was
created and long after it?s destroyed. This set of rules, called a category
<http://en.wikipedia.org/wiki/Category_theory>  in mathematics, acts as a
set generator for other objects?a method to instantiate different objects
from the same class. An object?s identity is the static part that is created
at the same time the object is created and remains immutable during the
lifetime of that object. The number one source of bugs in any data system
occurs when an object?s identity changes during its lifetime. Think of links
to a web page that changes its content, or moves. 404 Error ? File Not
Found!

 

The dynamics of a computer object are the methods (i.e. contained functions)
that transform its internal values from one state to another while keeping
its class and identity intact (sort of like eigenvectors are to a
mathematical matrix operator).

Again, this concept does not exist in mathematics. Given F(X) = 3*X, then
F(7) = 21. Yes, we call F a function or a transform, but it did not ?turn? a
7 in 21. It functionally mapped a 7 to a 21. The 7 never changed and didn?t
notice anything. Where our space of focus once contained only a 7, applying
F added a 21 to our space?not changed a 7 into a 21.

 

Good luck trying to model dynamics in the semantic web. Unfortunately, in
the semantic web, an object?s identity is subtly destroyed when transformed
? it?s overwritten. There is no symmetry between an object?s identity and
its state in the semantic web.

 

 

Robert Howard
Phoenix, Arizona

 

  _____  

From: [hidden email] [mailto:[hidden email]] On Behalf
Of Marko A. Rodriguez
Sent: Sunday, June 03, 2007 12:03 PM
To: The Friday Morning Applied Complexity Coffee Group
Subject: Re: [FRIAM] Fwd: ABM (Object-Oriented)

 

Hi,

 

I've been dealing with this issue in semantic networks. Semantic networks
tend to be used for "descriptive" purposes. This is analogous to the
structural aspects of a system. However, I've been interested in encoding
the more "procedural" aspects of a system into the semantic network.

 

http://www.soe.ucsc.edu/~okram/papers/semantic-turing.pdf

 

BTW: I really enjoyed that last email. Its nice to see this strong
distinction in other domains as well.

 

Marko.

 

 

On Jun 3, 2007, at 1:34 PM, Robert Lancaster wrote:

 

Many thanks for the best distinction of structural and object oriented
languages I have ever seen.  Big help for someone with a very elementary
understanding of the art.  (I had just read the WIKI definition with the
result which you predict.)

 

Bob L.

 

On Jun 2, 2007, at 11:50 AM, Robert Howard wrote:

 

That WIKI <http://en.wikipedia.org/wiki/Object-oriented_programming>
definition will leave you confused if you?re learning OO for the first time.

 

Here?s a hard physical-sciences analogy:

* In physics, you have Statics and Dynamics.
* In biology, you have Anatomy and Physiology.
* In molecular biology, you have Structure and Function.
* In languages, you have Nouns and Verbs.
* In chaos theory, you have the system (e.g. a differential equation),
and its phase space <http://en.wikipedia.org/wiki/Phase_space> .
* In general, you have the part that doesn?t change, and the part that
does.

 

In computers, you also have the part that doesn?t change. Depending on the
vernacular context, these static parts are called a Types, Structures,
Schema, Address locations, Code/Instruction Libraries, and Classes.

You also have the part that does change. Again, depending on the circle of
nomenclature, these dynamic parts are called Values, State, Execution/Run,
and Objects.

 

When talking about code, the actual instructions are the static part, and
stored in memory (or disk).

The actual execution of this code is the dynamic part and run by a processor
(or virtual runtime environment).

 

A dynamic part always presupposes a static part. You cannot understand a
VERB unless a NOUN is implied. One must study anatomy first before
physiology; numbers before functions; etc.

 

Programming languages, like mathematics, is a method for humans to transmit
these concepts and ideas to other humans via an alphabet or symbolic scheme.


Compilers transform programming languages into that which a computer can
understand. This is how computational science goes one step further than
mathematics.

 

All languages (programming, mathematical, and natural) must model both the
statics and the dynamics of their system when describing it.

Natural languages combine ?nouns? and ?verbs? to get sentences?their
smallest unit of information.

Programming languages combine ?structures? and ?code? to get functions. A
subroutine is a function with no return value.

 

Different naturally languages have different syntax. German ends sentences
with verbs. English puts them closer to the beginning.

 

Programming languages have similar analogies too.

?Structured programming languages? (Pascal, C, FORTRAN, LISP) begin with
functions that operate on specific structures (called parameters). They are
verb-oriented in nature.

?Object-oriented programming languages (Java, C#, CLOS) begin with
structures (called classes) that send messages to methods. They are
noun-oriented in nature.

 

In a structured programming language, I might write: FLIP(Pancake, Quickly)

 

In an object-oriented programming language, I would write
Pancake.FLIP(Quickly)

 

 

For an English analogy, we have an obvious noun (the subject) called
Pancake. There?s a verb: To Flip. We have parameters that we pass in to the
function call to modify its behavior. If the parameter is a constant, like
Quickly, we call it an adverb. If it is another object, we call it a direct
object, or indirect object, or prepositional object?depending on its English
use. Properties of an object are called adjectives.

 

When you see a declaration in code that looks like this (regardless of
whether it?s structured or OO): int i = 5 ? to declare an integer called ?i"
that contains the value 5, int is the class (or structure, or type) and i is
the object. 5 is the initial state of the object. If you want to convert
this number to a string in a structured programming language, you might
write this: ToString(i)

 

To do the same in an object-oriented language, you?d write i.ToString()

 

 

It?s all syntax! Just like there is nothing in English I can?t say in
German, there?s no system modeled in an object-oriented programming language
that I cannot express in a structured programming one.

 

In case you read articles on the net, here are some vocabulary use cases:

* ?Classes? store the static non-changing parts of a system in memory
(or disk). Classes contain static structures (or types) called ?fields? or
?attributes?, and static code called ?methods?.
* ?Objects? are classes that are being run by the processor (or the
virtual runtime environment). Their fields (called ?properties?) have actual
values (the dynamic parts). This is why we say that ?objects have state?.
* The same class can be copied into memory multiple times (called
instances, or just objects) each being submitted to a processor and each
having different state. This is why we say that ?objects have identity?.
* Every method in a class operates on a specific object instance of
it. This is why we say that ?objects have behavior?. When a ?method? is
executed, it is called a ?message?.
* Static methods; dynamic messages. Static fields (or attributes);
dynamic properties. Static types (or schema); dynamic state.

 

To understand ABM?s, like understanding anything, I suggest this approach:
form a paradigm by understanding the static parts first, and then observe
(or deduce) the dynamics in the context of the statics.

The more chaotic, less rigorous approach, involves looking at all the
dynamics simultaneously (or participating in those existential terms) and
then trying to infer the structure.

I think this latter approach leads to confusion, frustration, and
post-modernistic dialogs.

When the only way to understand the statics is by black-box observation of
the dynamics, then use the scientific principle: fix all but one dynamic,
and vary it in a controlled manner.

 

Robert Howard
Phoenix, Arizona

 

  _____  

From: [hidden email] [mailto:[hidden email]] On Behalf
Of Robert Holmes
Sent: Saturday, June 02, 2007 9:48 AM
To: The Friday Morning Applied Complexity Coffee Group
Subject: Re: [FRIAM] Fwd: ABM

 

Here's a couple of sites that could be worth checking out Phil:

http://www.google.com/search?hl=en
<http://www.google.com/search?hl=en&q=object+oriented+programming&btnG=Googl
e+Search> &q=object+oriented+programming&btnG=Google+Search
http://en.wikipedia.org/wiki/Object-oriented_programming 

Robert

On 6/2/07, Phil Henshaw < sy at synapse9.com <mailto:sy at synapse9.com> > wrote:

Well, for the knowledgeably ignorant among us... what the heck is
'object oriented' programming anyway.  All the code looks like code to
me, and other than having a few more sub-routines I don't understand the
purpose or design of... what's changed other than standardizing a few
protocols across platforms?


Phil Henshaw                       ????.?? ? `?.????

 

============================================================

FRIAM Applied Complexity Group listserv

Meets Fridays 9a-11:30 at cafe at St. John's College

lectures, archives, unsubscribe, maps at http://www.friam.org

 

============================================================

FRIAM Applied Complexity Group listserv

Meets Fridays 9a-11:30 at cafe at St. John's College

lectures, archives, unsubscribe, maps at http://www.friam.org

 

Marko A. Rodriguez

Los Alamos National Laboratory (P362-proto)

Los Alamos, NM 87545

Phone +1 505 606 1691

http://www.soe.ucsc.edu/~okram






 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070603/680d94c9/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Robert Howard-2-3
In reply to this post by Douglas Roberts-2
Interesting paper!

I do like seeing the phrase:

 

Individual-based models (IBMs) allow researchers to study how system level
properties emerge from the adaptive behaviour of individuals

 

The collective presupposes the individual.

Information and properties of the part flow to the whole?not the other way
around.

The cause-and-effect arrow of implication is one-way.

 

Robert Howard
Phoenix, Arizona

 

  _____  

From: [hidden email] [mailto:[hidden email]] On Behalf
Of Douglas Roberts
Sent: Friday, June 01, 2007 11:25 AM
To: The Friday Morning Applied Complexity Coffee Group
Subject: [FRIAM] Fwd: ABM

 

FRIAMers,

I received this today from several of my co-workers and thought I'd pass it
on.

I still can't help but feeling that in general, *way* too many words are
being used to describe ABM (and IBM) methodologies.  The underlying concept
of object-oriented software design as the basis for ABM simulation
architecture is just so straight forward and intuitive that I am repeatedly
amazed at how people continue to make such a big, mysterious deal out of it.


But, I suppose that's just me, and my opinion...

--Doug

--
Doug Roberts, RTI International
droberts at rti.org
doug at parrot-farm.net  <mailto:doug at parrot-farm.net>
505-455-7333 - Office
505-670-8195 - Cell


****************************************************

This is a very interesting resource re: Agent Based Modeling.

 

            http://www.openabm.org/site/

 

Note also the current efforts re: ODD (Overview, Design Concepts and
Details) ?based descriptions (cf. attached manuscript).

 






-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070603/8095ed1e/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM (Object-Oriented)

Marko Rodriguez
In reply to this post by Robert Howard-2-3
Hi Robert (and HPCoder)

In a semantic network, you need not destroy an object's present  
manifestation through a transformation. You can maintain a "snapshot"  
of the object by using some sort of provenance and thus, forever  
express its "Platonic" realization at some particular moment in time.  
Reification and named graphs are good for this. Furthermore, in terms  
of Platonic concepts, a semantic web does not transform values, it  
merely redirects edges. When you add x + 1 to get 7 from 6, you did  
not "destroy" the 6. That URI still exists. What you did is you  
redirected the x URI to the 7 URI. You didn't change vertices, you  
changed edges. I believe this representation is more in line with  
mathematics than with computer science where a register value is  
dynamic.

I don't know the notation convention (I think its called denotational  
semantics or something along those lines), but its in my book on  
Formal Semantics of Programming Languages where when there is an  
operation on a value, they represent the state of the machine for  
when that operation took place. In this sense, the concept of time in  
the mathematic sense and the concept of state in the computer science  
sense, preserve the notion of a mapping (not a disfiguring  
transformation).

I don't think there are any contradictions between the two systems.  
However, in the computer sciences, where practical applications tend  
to be the end goal and memory is bounded, its preferable not to map  
the present to the future, but to transform the present into the future.

Take care,

Marko A. Rodriguez
Los Alamos National Laboratory (P362-proto)
Los Alamos, NM 87545
Phone +1 505 606 1691
http://www.soe.ucsc.edu/~okram

On Jun 3, 2007, at 4:35 PM, Robert Howard wrote:

> Marko (and Russell Standish),
>
>
>
> In Graph Theory, you have circles and lines (i.e. nodes and edges,  
> or vertices and connections).
>
> It is possible to have circles and no lines, but not the converse.  
> This is because every line presupposes two circles?one on each end  
> of the line. The two circles can be the same circle (i.e. a  
> reflexive line) but in this case, that circle is playing two roles:  
> FROM and TO (or source and sink).
>
>
>
> PROOF: If you look at the definition of a graph in the PDF you sent  
> or on Wiki, it says V is a set of vertices, and E ? V X V is a set  
> of edges. Well, every subset presupposes a superset. QED.
>
>
>
> As mentioned previously, and for the same causal relationship,  
> dynamics presuppose statics. If your goal is to model the dynamics  
> (you used the term ?procedural aspects?), then first model the  
> statics (you used the term ?structural aspects?).
>
>
>
> When I try to fit the definition and uses of ?objects? as per  
> the semantic web into my own paradigm, I get contradictions. As I  
> define:
>
>
>
> An object is two parts: a static part and a dynamic part.
>
> Although mathematics is the first object-oriented language  
> (practically perfected at inception), the computer industry has  
> really convoluted the definitions to the point where nobody know  
> what anyone is talking about these days.
>
> Computers bestow the concept of ?lifetime? to objects. Computers  
> create objects in memory, and then dispose of them when no longer  
> needed only to create different objects later at the same identity.  
> We almost take this for granted!
>
> Mathematics does not have this concept of lifetime. In fact, the  
> Platonic philosophy imagines the number ?7? as something that  
> just exists out there timeless, immutable, and consistent, where  
> its identity equals its class and state. Its identifier maps  
> bijectively to its identity. Its name is its value. However,  
> computer objects pop into existence during the execution of some  
> system and pop right back out. I can?t help but think about  
> virtual particles (or for that matter, universe bubbles) popping in  
> and out of the space of all things possible. When the program ends,  
> the universe ends too.
>
>
>
> Mathematicians are ?inside? the world of mathematics whereas  
> computer programmers are ?outside? the world of computers. It  
> should be no wonder that historically, the best theories of  
> physics: Newtonian, Relativity, Quantum, come when we move our  
> godlike egos from outside to inside. Perhaps computer programmers  
> are the last bastion fighting the wave of humility. Bekenstein?s  
> Theory of Information suggests that they are starting to come inside.
>
>
>
> I just bought Russell Standish?s book ?The Theory of Nothing?  
> after reading the cover. I?m always looking (mostly in vain) for  
> someone else?s perspective on what I think I understand but cannot  
> express: that our multiverse is the superposition of all consistent  
> solutions (or family of curves) that sum to zero. That?s how you  
> get something from nothing. I have high hopes with this book. Still  
> waiting for it to come!
>
>
>
> Anyway, the physical limitations of finite computers force us to  
> partition the static part of an object into two parts: its class  
> and its identity. The dynamic part of an object is still called its  
> state.
>
>
>
> In the world of computers, an object?s class is the static set of  
> immutable rules that the object always conforms to ? even before  
> the object was created and long after it?s destroyed. This set of  
> rules, called a category in mathematics, acts as a set generator  
> for other objects?a method to instantiate different objects from  
> the same class. An object?s identity is the static part that is  
> created at the same time the object is created and remains  
> immutable during the lifetime of that object. The number one source  
> of bugs in any data system occurs when an object?s identity  
> changes during its lifetime. Think of links to a web page that  
> changes its content, or moves. 404 Error ? File Not Found!
>
>
>
> The dynamics of a computer object are the methods (i.e. contained  
> functions) that transform its internal values from one state to  
> another while keeping its class and identity intact (sort of like  
> eigenvectors are to a mathematical matrix operator).
>
> Again, this concept does not exist in mathematics. Given F(X) =  
> 3*X, then F(7) = 21. Yes, we call F a function or a transform, but  
> it did not ?turn? a 7 in 21. It functionally mapped a 7 to a 21.  
> The 7 never changed and didn?t notice anything. Where our space of  
> focus once contained only a 7, applying F added a 21 to our space?
> not changed a 7 into a 21.
>
>
>
> Good luck trying to model dynamics in the semantic web.  
> Unfortunately, in the semantic web, an object?s identity is subtly  
> destroyed when transformed ? it?s overwritten. There is no  
> symmetry between an object?s identity and its state in the  
> semantic web.
>
>
>
>
>
> Robert Howard
> Phoenix, Arizona
>
>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070603/3882e2f2/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Tom Johnson
In reply to this post by Robert Howard-2-3
Robert:

It seems to me that there is usually (always?) bi-directionality involved in
a dynamic system, especially between the individual and the collective.  The
collective often (Usually?  Always?) provides a context that generates and
governs data flow, a time frame, rugged landscapes or not, etc.  Such data
flows can hinder or enhance the individual's decisions and actions and,
possibly, those of the collective.

-Tom


On 6/3/07, Robert Howard <rob at symmetricobjects.com> wrote:

>
>  Interesting paper!
>
> I do like seeing the phrase:
>
>
>
> Individual-based models (IBMs) allow researchers to study how system level
> properties emerge from the adaptive behaviour of individuals
>
>
>
> The collective presupposes the individual.
>
> Information and properties of the part flow to the whole?not the other way
> around.
>
> The cause-and-effect arrow of implication is one-way.
>
>
>
> Robert Howard
> Phoenix, Arizona
>
>
>  ------------------------------
>
> *From:* friam-bounces at redfish.com [mailto:friam-bounces at redfish.com] *On
> Behalf Of *Douglas Roberts
> *Sent:* Friday, June 01, 2007 11:25 AM
> *To:* The Friday Morning Applied Complexity Coffee Group
> *Subject:* [FRIAM] Fwd: ABM
>
>
>
> FRIAMers,
>
> I received this today from several of my co-workers and thought I'd pass
> it on.
>
> I still can't help but feeling that in general, *way* too many words are
> being used to describe ABM (and IBM) methodologies.  The underlying concept
> of object-oriented software design as the basis for ABM simulation
> architecture is just so straight forward and intuitive that I am repeatedly
> amazed at how people continue to make such a big, mysterious deal out of it.
>
>
> But, I suppose that's just me, and my opinion...
>
> --Doug
>
> --
> Doug Roberts, RTI International
> droberts at rti.org
> doug at parrot-farm.net
> 505-455-7333 - Office
> 505-670-8195 - Cell
>
>
> ****************************************************
>
> This is a very interesting resource re: Agent Based Modeling.
>
>
>
>             http://www.openabm.org/site/
>
>
>
> Note also the current efforts re: ODD (Overview, Design Concepts and
> Details) ?based descriptions (cf. attached manuscript).
>
>
>
>
>
>
>
> ============================================================
> FRIAM Applied Complexity Group listserv
> Meets Fridays 9a-11:30 at cafe at St. John's College
> lectures, archives, unsubscribe, maps at http://www.friam.org
>



--
==========================================
J. T. Johnson
Institute for Analytic Journalism -- Santa Fe, NM USA
www.analyticjournalism.com
505.577.6482(c)                                 505.473.9646(h)
http://www.jtjohnson.com                 tom at jtjohnson.us

"You never change things by fighting the existing reality.
To change something, build a new model that makes the
existing model obsolete."
                                                   -- Buckminster Fuller
==========================================
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070603/a6b8ebd6/attachment.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Robert Howard-2-3
Tom,

 

But is there really such thing as a collective?physically? If I have a
nickel and a dime in my pocket, the collective total is 30 cents. But where
is the object whose value is thirty cents? Both the nickel and the dime can
exist independently of the 30 cent thingy; but not the other way around. Do
not the birds define a flock, and not the other way around? We can talk
about a plurality of things, but only if deductively consistent with the
characteristics of every part. Is it the collective that generates and
governs data flow? Or is it merely one object sending data to another
repeated many times?

 

I always get tripped up in this type of philosophy! :-) And when I get
tripped up, I?ve learned to check my assumptions and retreat to the
fundamental principles I hold dearly: that implication flows one way.

 

Did you have an example that you were thinking about?

 

Robert Howard
Phoenix, Arizona

 

  _____  

From: [hidden email] [mailto:[hidden email]] On Behalf
Of Tom Johnson
Sent: Sunday, June 03, 2007 8:18 PM
To: The Friday Morning Applied Complexity Coffee Group
Subject: Re: [FRIAM] Fwd: ABM

 

Robert:

 

It seems to me that there is usually (always?) bi-directionality involved in
a dynamic system, especially between the individual and the collective.  The
collective often (Usually?  Always?) provides a context that generates and
governs data flow, a time frame, rugged landscapes or not, etc.  Such data
flows can hinder or enhance the individual's decisions and actions and,
possibly, those of the collective.  

 

-Tom

 

On 6/3/07, Robert Howard <rob at symmetricobjects.com> wrote:

Interesting paper!

I do like seeing the phrase:

 

Individual-based models (IBMs) allow researchers to study how system level
properties emerge from the adaptive behaviour of individuals

 

The collective presupposes the individual.

Information and properties of the part flow to the whole?not the other way
around.

The cause-and-effect arrow of implication is one-way.

 

Robert Howard
Phoenix, Arizona

 

  _____  

From: [hidden email] [mailto:[hidden email]] On Behalf
Of Douglas Roberts
Sent: Friday, June 01, 2007 11:25 AM
To: The Friday Morning Applied Complexity Coffee Group
Subject: [FRIAM] Fwd: ABM

 

FRIAMers,

I received this today from several of my co-workers and thought I'd pass it
on.

I still can't help but feeling that in general, *way* too many words are
being used to describe ABM (and IBM) methodologies.  The underlying concept
of object-oriented software design as the basis for ABM simulation
architecture is just so straight forward and intuitive that I am repeatedly
amazed at how people continue to make such a big, mysterious deal out of it.


But, I suppose that's just me, and my opinion...

--Doug

--
Doug Roberts, RTI International
droberts at rti.org
doug at parrot-farm.net  <mailto:doug at parrot-farm.net>
505-455-7333 - Office
505-670-8195 - Cell


****************************************************

This is a very interesting resource re: Agent Based Modeling.

 

            http://www.openabm.org/site/

 

Note also the current efforts re: ODD (Overview, Design Concepts and
Details) ?based descriptions (cf. attached manuscript).

 





============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org
<http://www.friam.org/>




--
==========================================
J. T. Johnson
Institute for Analytic Journalism -- Santa Fe, NM USA
www.analyticjournalism.com
505.577.6482(c)                                 505.473.9646(h)
http://www.jtjohnson.com                 tom at jtjohnson.us
<mailto:tom at jtjohnson.us>

"You never change things by fighting the existing reality.
To change something, build a new model that makes the
existing model obsolete."
                                                   -- Buckminster Fuller
==========================================

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070603/5420b742/attachment-0001.html 

Reply | Threaded
Open this post in threaded view
|

Fwd: ABM

Marcus G. Daniels
In reply to this post by Tom Johnson
Tom Johnson wrote:
> It seems to me that there is usually (always?) bi-directionality
> involved in a dynamic system
i.e. http://en.wikipedia.org/wiki/Stigmergy



123