ABM - OO

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

ABM - OO

Prof David West
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
|

ABM - OO

Marcus G. Daniels
Prof David West wrote:
> Objects should be able to interact with bare hardware and not rely on OS
> or other environments - like the Smalltalk image.
>  
With the resurgence of virtualized instruction sets, e.g. Java and .NET,
and good hardware/software support via VMware, Parallels, KVM, and Xen,
perhaps we can hope to see more high performance implementations of OOP
as it was meant to be..  The Right Thing running fast bare on the
hardware (almost).   Just bought 16 GB of RAM for less than $2k.  

On a related topic, check out VMware Workstation 6 which now has trace
and replay.   No more guessing how to reproduce conditions that led to a
model (or whatever) getting in to a weird state.   Just back up!



Reply | Threaded
Open this post in threaded view
|

ABM - OO

Prof David West


re: performance.  Dave Thomas' company Object Technology International
developed Smalltalk technology for embedded systems with real time
performance equal to C code.  He sold OTI to IBM and his technology
became Visual Age Smalltalk, Va-Java, and Eclipse with another division
of IBM utilizing the embedded technology.  Noury Bourqadi in France is
doing some very interesting things with tiny VMs running on hardware for
highly distributed mini-platform (cell phones) networks.


On Sat, 02 Jun 2007 14:02:52 -0600, "Marcus G. Daniels"
<marcus at snoutfarm.com> said:

> Prof David West wrote:
> > Objects should be able to interact with bare hardware and not rely on OS
> > or other environments - like the Smalltalk image.
> >  
> With the resurgence of virtualized instruction sets, e.g. Java and .NET,
> and good hardware/software support via VMware, Parallels, KVM, and Xen,
> perhaps we can hope to see more high performance implementations of OOP
> as it was meant to be..  The Right Thing running fast bare on the
> hardware (almost).   Just bought 16 GB of RAM for less than $2k.  
>
> On a related topic, check out VMware Workstation 6 which now has trace
> and replay.   No more guessing how to reproduce conditions that led to a
> model (or whatever) getting in to a weird state.   Just back up!
>
>
> ============================================================
> 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
|

ABM - OO

Prof David West
In reply to this post by Marcus G. Daniels


mis-spelling in previous email --  Noury Bouraqadi    
<bouraqadi at ensm-douai.fr>


On Sat, 02 Jun 2007 14:02:52 -0600, "Marcus G. Daniels"
<marcus at snoutfarm.com> said:

> Prof David West wrote:
> > Objects should be able to interact with bare hardware and not rely on OS
> > or other environments - like the Smalltalk image.
> >  
> With the resurgence of virtualized instruction sets, e.g. Java and .NET,
> and good hardware/software support via VMware, Parallels, KVM, and Xen,
> perhaps we can hope to see more high performance implementations of OOP
> as it was meant to be..  The Right Thing running fast bare on the
> hardware (almost).   Just bought 16 GB of RAM for less than $2k.  
>
> On a related topic, check out VMware Workstation 6 which now has trace
> and replay.   No more guessing how to reproduce conditions that led to a
> model (or whatever) getting in to a weird state.   Just back up!
>
>
> ============================================================
> 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
|

ABM - OO

Alfredo Covaleda-2
In reply to this post by Marcus G. Daniels
Hello

Months ago you had a discussion respect ABMs-OOP and you referred to
some suitable languages.  I wonder how appropriate are python and PHP5
to make simulations. ?Are comparable C++, smalltalk, ruby, python and PHP5 ?

Although I've never seen a simulator written in php5 it seems to me that
it's an interesting and  promising tool for simulations. ?Are php5 OOP
capabilities good enough for ABMs?,  ? Am I in risk of being  example of
an everlasting amateur programmer death while trying ABMs with PHP5?

Regards

Alfredo




Marcus G. Daniels wrote:

>Prof David West wrote:
>  
>
>>Objects should be able to interact with bare hardware and not rely on OS
>>or other environments - like the Smalltalk image.
>>  
>>    
>>
>With the resurgence of virtualized instruction sets, e.g. Java and .NET,
>and good hardware/software support via VMware, Parallels, KVM, and Xen,
>perhaps we can hope to see more high performance implementations of OOP
>as it was meant to be..  The Right Thing running fast bare on the
>hardware (almost).   Just bought 16 GB of RAM for less than $2k.  
>
>On a related topic, check out VMware Workstation 6 which now has trace
>and replay.   No more guessing how to reproduce conditions that led to a
>model (or whatever) getting in to a weird state.   Just back up!
>
>
>============================================================
>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
>
>  
>


--

--------------------------------
     Alfredo Covaleda V?lez
       Ingeniero Agr?nomo
          Programador
********************************
  Compre y venda sus libros en:
 http://www.loslibrosusados.com
********************************
Too many waiting for that lucky break (PM)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20080122/3935f070/attachment.html 

Reply | Threaded
Open this post in threaded view
|

ABM - OO

Russell Standish
The issue is not so much on programming language. In theory any
universal language is sufficient. In practice, object orientedness
helps a lot. Also needed are a range of plugin tools and libraries,
such as graph visualisers, statistics accumulators and the like, which
is where the frameworks come into play. And a necessary precursor for
these to work is some kind of runtime reflection so that agent
(object) structure can be inferred by the tool.

At this stage, there are only a limited number of environments
available, corresponding to an assortment of Java environments, a few
logo environments, and one each of Objective C, C++ and Smalltalk environments.

I would suspect that you would end up having to replicate a lot of
what is done in Swam, Repast or EcoLab by choosing another language
such as PHP, but if that is your bent, then there's nothing stopping
you.

Cheers


On Tue, Jan 22, 2008 at 12:33:38AM -0500, Alfredo Covaleda V wrote:

> Hello
>
> Months ago you had a discussion respect ABMs-OOP and you referred to
> some suitable languages.  I wonder how appropriate are python and PHP5
> to make simulations. ?Are comparable C++, smalltalk, ruby, python and PHP5 ?
>
> Although I've never seen a simulator written in php5 it seems to me that
> it's an interesting and  promising tool for simulations. ?Are php5 OOP
> capabilities good enough for ABMs?,  ? Am I in risk of being  example of
> an everlasting amateur programmer death while trying ABMs with PHP5?
>
> Regards
>
> Alfredo
>

--

----------------------------------------------------------------------------
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
|

ABM - OO

Marcus G. Daniels
In reply to this post by Alfredo Covaleda-2
Alfredo Covaleda V wrote:
> Months ago you had a discussion respect ABMs-OOP and you referred to
> some suitable languages.  I wonder how appropriate are python and PHP5
> to make simulations. ?Are comparable C++, smalltalk, ruby, python and
> PHP5 ?
The odd one out there is C++, which is isn't dynamically typed like the
others.   Basically that constraint makes it easier for the compiler to
optimize for speed but makes the process of modeling more rigid.  
Dynamic typing may be a benefit or a drawback depending on your
perspective.  If your goal is to test a specific hypothesis, using a
very specific simulation, you probably won't care about dynamic typing.  
On the other hand, if you are trying to use the computer to poke around
a space and understand relations intuitively, and incrementally tweak
rules, you'll probably find it useful.

Btw, today there was a new `Parrot' release, the new dynamic virtual
machine underlying Perl 6.   One interesting feature of this runtime is
that the set of `opcodes' is mutable:

http://www.parrotcode.org/faq/
http://www.sidhe.org/~dan/blog/archives/000409.html

Seems like this could be an interesting way to set up an ABM system --
actual bytecodes for agent step instructions, etc.

Marcus


Reply | Threaded
Open this post in threaded view
|

ABM - OO

Russell Standish
On Mon, Jan 21, 2008 at 11:22:33PM -0700, Marcus G. Daniels wrote:
> Alfredo Covaleda V wrote:
> > Months ago you had a discussion respect ABMs-OOP and you referred to
> > some suitable languages.  I wonder how appropriate are python and PHP5
> > to make simulations. ?Are comparable C++, smalltalk, ruby, python and
> > PHP5 ?
> The odd one out there is C++, which is isn't dynamically typed like the
> others.   Basically that constraint makes it easier for the compiler to
> optimize for speed but makes the process of modeling more rigid.  

EcoLab gets around this using a technology called Classdesc, which
provides the necessary reflection capability, without sacrificing the
speed advantages of C++.

> Dynamic typing may be a benefit or a drawback depending on your
> perspective.  If your goal is to test a specific hypothesis, using a
> very specific simulation, you probably won't care about dynamic typing.  
> On the other hand, if you are trying to use the computer to poke around
> a space and understand relations intuitively, and incrementally tweak
> rules, you'll probably find it useful.
>

Indeed. I would argue that most scientific modelling is poking around
a space - automated, or dynamic reflection is essential to reduce the
amount of workload required of the programmer. Its one of the reasons
I worked so hard on developing Classdesc, the others being that
Objective C didn't turn me on much, and Repast hadn't been developed
when I started. Oh, and I really found I couldn't do without operator
overloading.

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
|

ABM - OO

Stephen Guerin
In reply to this post by Alfredo Covaleda-2
Hi Alejandro,

The best language for ABM is the one you know. :-)

BTW, a few years back we did an ABM-like php script that laid out labels in a
scatterplot to minimize label overlaps. You can see examples of the script
running with optimized and non-optimized versions here:
http://www.redfish.com/projects/BostonLearning/rfGraph/examples.html

The .php code is attached and support files can be downloaded from here:
http://www.redfish.com/projects/BostonLearning/rfGraph/



> Although I've never seen a simulator written in php5 it seems
> to me that it's an interesting and  promising tool for
> simulations. ?Are php5 OOP capabilities good enough for
> ABMs?,  ? Am I in risk of being  example of an everlasting
> amateur programmer death while trying ABMs with PHP5?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: matrix.php
Type: application/octet-stream
Size: 10819 bytes
Desc: not available
Url : http://redfish.com/pipermail/friam_redfish.com/attachments/20080122/f18efb32/attachment.obj 

Reply | Threaded
Open this post in threaded view
|

ABM - OO

Douglas Roberts-2
In reply to this post by Alfredo Covaleda-2
In a word, "Yes".  You will be consigned to everlasting amateur programmer
death.

On the other hand, you can fake OO programing methodologies in just about
any language, and you can force-fit just about any implementation into
whatever the paradigm du Jour happens to be.  But, if you want to do a job
properly, you need the right tools.

If you just want to build a toy ABM on top of an OO software design, then
there are plenty of "toy" languages available to play with.  See

http://en.wikipedia.org/wiki/Object-oriented_programming_language

for a good list of all the choices.  Some are mature languages; others
aren't.  Some provide full-featured OO environments; others don't.

If you want to build a professional ABM system for a real-world application
that will be maintainable, scalable, extensible, etc.  then the list of
appropriate tools is much shorter.  Throw in features necessary to support
running the ABM in an HPC environment and the list is shorter still.

The appropriate choice of OO language for implementing your ABM will depend
on what use you intend for the application.



In considering the above opinion, as always, Your Mileage May Vary.

--Doug

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

On Jan 21, 2008 10:33 PM, Alfredo Covaleda V <acovaleda at loslibrosusados.net>
wrote:

>  Hello
>
> Months ago you had a discussion respect ABMs-OOP and you referred to some
> suitable languages.  I wonder how appropriate are python and PHP5 to make
> simulations. ?Are comparable C++, smalltalk, ruby, python and PHP5 ?
>
> Although I've never seen a simulator written in php5 it seems to me that
> it's an interesting and  promising tool for simulations. ?Are php5 OOP
> capabilities good enough for ABMs?,  ? Am I in risk of being  example of an
> everlasting amateur programmer death while trying ABMs with PHP5?
>
> Regards
>
> Alfredo
>
>
>
>
>
> Marcus G. Daniels wrote:
>
> Prof David West wrote:
>
>
>  Objects should be able to interact with bare hardware and not rely on OS
> or other environments - like the Smalltalk image.
>
>
>
>  With the resurgence of virtualized instruction sets, e.g. Java and .NET,
> and good hardware/software support via VMware, Parallels, KVM, and Xen,
> perhaps we can hope to see more high performance implementations of OOP
> as it was meant to be..  The Right Thing running fast bare on the
> hardware (almost).   Just bought 16 GB of RAM for less than $2k.
>
> On a related topic, check out VMware Workstation 6 which now has trace
> and replay.   No more guessing how to reproduce conditions that led to a
> model (or whatever) getting in to a weird state.   Just back up!
>
>
> ============================================================
> 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
>
>
>
> --
>
> --------------------------------
>      Alfredo Covaleda V?lez
>        Ingeniero Agr?nomo
>           Programador
> ********************************
>   Compre y venda sus libros en:
>  http://www.loslibrosusados.com
> ********************************
> Too many waiting for that lucky break (PM)
>
>
> ============================================================
> 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/20080122/70c736e4/attachment.html 

Reply | Threaded
Open this post in threaded view
|

ABM - OO

Marcus G. Daniels
Douglas Roberts wrote:
> Some are mature languages; others aren't.  Some provide full-featured
> OO environments; others don't.
The mainstream, mature choices for performance code are basically
C++/Emacs, C#/Windows Visual Studio, Objective C/Apple XCode, and
Java/Sun JDK/Eclipse, and in about that order of code performance.  Also
a commercial compiler for OO Fortran (2003) may be worth thinking about
in HPC environments.   In principle, it's possible to use native code
compilers with Java, but in practice you'll work just as hard as you
would with C++ for performance, and probably harder.

Other languages provide more versatility/abstraction/safety/convenience,
but haven't yet tried to make self-contained quality code generators.  
When they can generate true executables, they usually do it by
generating C and then compiling that.  (There are some exceptions, like
F#.)  I would not say this merits the name `toy language', but rather a
different emphasis.  Python and Perl are certainly mature languages with
rich ecologies around them.

When modeling, you are in some sense trying to invent a language to
describe and predict something that interests you.   Not learning about
the ways people have found to implement algorithms (different
programming languages) may not be helpful in the long run, depending how
deep you expect to get into ABM.

Marcus



Reply | Threaded
Open this post in threaded view
|

ABM - OO

glen ep ropella
In reply to this post by Douglas Roberts-2
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Douglas Roberts on 01/22/2008 05:37 AM:
> The appropriate choice of OO language for implementing your ABM will depend
> on what use you intend for the application.

It literally amazes me... yes, I know that phrase is a bit of a
platitude; but it really does catch me off-guard ... that people don't
know this fact... or sporadically forget it.

Everything you do fundamentally depends on why you're doing it.  It's so
simple, it's cliche'.

But there are so many reasons to forget it.  For example, some people
become familiar with one tool and, from that point forward, use only
that tool regardless of their purpose.  Some people believe they can't
successfully use a tool they don't understand intimately; so they throw
up a psychological barricade.  Some people invest so much of their time,
energy, reputation, and money in some domain or tool that conservatism
kills them in the end.  Still others just bite off more than they can
chew by (unjustifiably) believing that they can "get by" with whatever
crap lies at hand and refusing to admit that they need to do serious
infrastructure work to achieve their objectives.  Some go to
extraordinary lengths to coerce a tool into something it's not.  ("My
hammer is the best screwdriver on the planet!" ;-)  And some just get
too comfortable living off the returns on past investment that they fade
away.

Hence, my answer to Alfredo's question differs a bit from the others.
There's only one way to know how well you will do at developing ABM
models with PHP.  Do it!  If you don't do it (yourself), then you'll
never know... you'll be at the mercy and whim of "experts"... who, for
the most part, don't know any better than you do.

And if you admit up front that you don't care enough, don't have the
time, don't have the money, don't have the energy, hate to "fail", etc.
to actually _waste_ your time trying to do the work yourself, then you
already have the answer.  If you're thinking that way, then most
everyone else is thinking that way, too.

- --
glen e. p. ropella, 971-219-3846, http://tempusdictum.com
The state is the great fictitious entity by which everyone seeks to live
at the expense of everyone else. -- Fr?d?ric Bastiat

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHli9MZeB+vOTnLkoRAmUfAKCuVTuJMIjWV1V1SHcjNBZtgQLvQACgyBhf
gjp+eH9fNs8KkfESOoRbP6I=
=h/SC
-----END PGP SIGNATURE-----