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 |
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. |
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 |
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? |
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 > > |
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 |
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 > An HTML attachment was scrubbed... URL: http://redfish.com/pipermail/friam_redfish.com/attachments/20070602/0cf851e6/attachment.html |
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 |
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 |
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 |
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 |
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 ---------------------------------------------------------------------------- |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Free forum by Nabble | Edit this page |