So a few of us are exploring new ways of constructing scalable
distributed agent systems and are playing around with architecting a first instantiation in either Javascript or in Smalltalk. We are interested in architecting a system that grow and evolve without collapsing on the weight of itself, much in the same way the Internet has been able to grow over the last 40 years without a reboot. Relatedly, I was watching Alan Kay's'97 OOPSLA address <http://video.google.com/videoplay?docid=-2950949730059754521 >, and his call for a Universal Interface Language popped out at me and I looked around for potential implementations since then. Wikipedia claims there hasn't been one yet: <http://en.wikipedia.org/wiki/Universal_Interface_Language> I was wondering if folks know of any candidates for a Universal Interface Language that wikipedia authors may have missed. And, if we were to make our own, should we start with a REST-like protocol <http://en.wikipedia.org/wiki/ Representational_State_Transfer> supplemented by server-side javascript or other such animal? -Steve --- -. . ..-. .. ... .... - .-- --- ..-. .. ... .... [hidden email] (m) 505.577.5828 (o) 505.995.0206 redfish.com _ sfcomplex.org _ simtable.com_ lava3d.com ============================================================ 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 |
Steve,
Can you please define what you mean by "scalable"? Up to 10,000 agents? 100,000? 350,000,000? 6E^9? How heavy are the agents to be? > than all of the above? --Doug On Sun, May 24, 2009 at 2:01 PM, Stephen Guerin <[hidden email]> wrote: So a few of us are exploring new ways of constructing scalable distributed agent systems and are playing around with architecting a first instantiation in either Javascript or in Smalltalk. We are interested in architecting a system that grow and evolve without collapsing on the weight of itself, much in the same way the Internet has been able to grow over the last 40 years without a reboot. -- Doug Roberts [hidden email] [hidden email] 505-455-7333 - Office 505-670-8195 - Cell ============================================================ 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 |
> Can you please define what you mean by "scalable"? Up to 10,000
> agents? 100,000? 350,000,000? 6E^9? > How heavy are the agents to be? > > than all of the above? Scalable eventually to on the order of a million agents per Internet- connected device. An order of magnitude less for mobile phones and a few more for beefy servers. So maybe, I don't know, 10^9 devices * 10^6 agents/device = 10^15 agents. This would be a distributed, non- synchronous agent-system running many smaller applications instead of one large single model (ala Episims). This will most likely be written on top of existing http and ftp protocols. We want to move away from the current 3-tier, (database, business rules, UI) application development where objects/agents are disconnected from their databases and their interfaces. With migrating Javascript objects between server, phone, browser and other visualization front ends (Unity, Flash, Rhino/Processing, etc), we see the potential to make a more seamless application development environment. On a perhaps a somewhat related note, Marko Rodriguez posted his latest interpretation of the Web of Data (different than the Semantic Web) on Arxiv.org: http://arxiv.org/abs/0905.3378 I'm just browsing through it but it would be a good common background reading for us to have. -S --- -. . ..-. .. ... .... - .-- --- ..-. .. ... .... [hidden email] (m) 505.577.5828 (o) 505.995.0206 redfish.com _ sfcomplex.org _ simtable.com_ lava3d.com On May 24, 2009, at 3:43 PM, Douglas Roberts wrote: > Steve, > > Can you please define what you mean by "scalable"? Up to 10,000 > agents? 100,000? 350,000,000? 6E^9? > > How heavy are the agents to be? > > > than all of the above? > > --Doug > > On Sun, May 24, 2009 at 2:01 PM, Stephen Guerin <[hidden email] > > wrote: > So a few of us are exploring new ways of constructing scalable > distributed agent systems and are playing around with architecting a > first instantiation in either Javascript or in Smalltalk. We are > interested in architecting a system that grow and evolve without > collapsing on the weight of itself, much in the same way the > Internet has been able to grow over the last 40 years without a > reboot. > > Relatedly, I was watching Alan Kay's'97 OOPSLA address <http://video.google.com/videoplay?docid=-2950949730059754521 > >, and his call for a Universal Interface Language popped out at me > and I looked around for potential implementations since then. > Wikipedia claims there hasn't been one yet: > <http://en.wikipedia.org/wiki/Universal_Interface_Language> > > I was wondering if folks know of any candidates for a Universal > Interface Language that wikipedia authors may have missed. > > And, if we were to make our own, should we start with a REST-like > protocol <http://en.wikipedia.org/wiki/ > Representational_State_Transfer> supplemented by server-side > javascript or other such animal? > > -Steve > > --- -. . ..-. .. ... .... - .-- --- ..-. .. ... .... > [hidden email] > (m) 505.577.5828 (o) 505.995.0206 > redfish.com _ sfcomplex.org _ simtable.com_ lava3d.com > > > > > > > > > ============================================================ > 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 > > > > -- > Doug Roberts > [hidden email] > [hidden email] > 505-455-7333 - Office > 505-670-8195 - Cell > ============================================================ > 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 |
Interesting. Other issues that will come to play with an ABM of the intended scales you describe are synchronization of the various asynchronous distributed components, message passing latency, and message passing bandwidth. Hopefully a course-grained sync & message passing design can be developed, because http is not good for either latency or bandwidth (using Myrinet or Infiniband for comparison).
--Doug On Sun, May 24, 2009 at 5:24 PM, Stephen Guerin <[hidden email]> wrote:
-- Doug Roberts [hidden email] [hidden email] 505-455-7333 - Office 505-670-8195 - Cell ============================================================ 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 |
On Sun, May 24, 2009 at 5:47 PM, Douglas Roberts <[hidden email]> wrote:
> Interesting. Other issues that will come to play with an ABM of the > intended scales you describe are synchronization of the various asynchronous > distributed components, message passing latency, and message passing > bandwidth. Hopefully a course-grained sync & message passing design can be > developed, because http is not good for either latency or bandwidth (using > Myrinet or Infiniband for comparison). Yeah, I'm not thinking this would be used for a single large-scale ABM for exactly the synch issues you describe. This would be more for authoring and deploying many smaller-scale applications written with an agent-oriented perspective. What Dave West talks about when he refers to how object-orientation was originally conceived not how current object-oriented programming is done. This is close to what Smalltalk/Seaside looks like but probably implemented within Javascript. -S -- --- -. . ..-. .. ... .... - .-- --- ..-. .. ... .... [hidden email] (m) 505.577.5828 (o) 505.995.0206 redfish.com _ simtable.com _ sfcomplex.org _ lava3d.com ============================================================ 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 |
Not to digress, but Dave kind of lost me one day at a FRIAM when he said "C++ is not object oriented." I didn't really know what he meant, because I've been using C++ for about 20 years now to accomplish polymorphism via object inheritance, containment, and method specialization (with and without templates) -- which use pretty much meets most definitions of OO programming that I've encountered.
Dave, I'd be interested in knowing what you meant... --Doug On Sun, May 24, 2009 at 6:20 PM, Stephen Guerin <[hidden email]> wrote:
-- Doug Roberts [hidden email] [hidden email] 505-455-7333 - Office 505-670-8195 - Cell ============================================================ 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 Stephen Guerin
Stephen Guerin wrote:
> Scalable eventually to on the order of a million agents per > Internet-connected device. An order of magnitude less for mobile > phones and a few more for beefy servers. So maybe, I don't know, 10^9 > devices * 10^6 agents/device = 10^15 agents. Hmm. Mobile phones will have most of their low latency memory in use. Writing the larger flash memory over and over would soon degrade it, not to mention be relatively slow. But suppose one agent consumed 1000 bytes and there is 25 meg RAM free, then you might get as many as 10k agents in phone RAM with the other half of that memory for their shared simulation landscape or whatever. Mobile processor power keeps going down and batteries getting better.. A least in Santa Fe, I'm not terribly optimistic about wireless network performance. Where's the 3G, AT&T? > This will most likely be written on top of existing http and ftp > protocols. We want to move away from the current 3-tier, (database, > business rules, UI) application development where objects/agents are > disconnected from their databases and their interfaces. With migrating > Javascript objects between server, phone, browser and other > visualization front ends (Unity, Flash, Rhino/Processing, etc), we see > the potential to make a more seamless application development > environment. I guess you mean to remove the word "their"? Fast access to data is the limiting factor for most computation -- processors are fast but memory and I/O are not (and mobile phone networks definitely are not). That's why supercomputers have as much money in network infrastructure as they do in processors. Anyone know if there is an iPhone app for distributed memory? Such that by running it, memory is distributed over millions of them in some sort of distributed public key encryption, but that it's only necessary to be able to reach a small fraction of them to associate a key with a value? I see that BitTorrent was rejected by Apple: http://www.wired.com/threatlevel/2009/05/apple-rejects-bittorrent-iphone-app/ Marcus ============================================================ 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 Douglas Roberts-2
On Sun, May 24, 2009 at 06:35:36PM -0600, Douglas Roberts wrote:
> Not to digress, but Dave kind of lost me one day at a FRIAM when he said > "C++ is not object oriented." I didn't really know what he meant, because > I've been using C++ for about 20 years now to accomplish polymorphism via > object inheritance, containment, and method specialization (with and without > templates) -- which use pretty much meets most definitions of OO programming > that I've encountered. > > Dave, I'd be interested in knowing what you meant... > > --Doug > Most of the time this comment comes up, it seems to mean "C++ is not _just_ object oriented". It is capable of being used in many different programming styles. FWIW, C++ programs written in a pure OO style are hard to understand and debug. OO is a useful tool in the toolbox, not the panacea of everything. Cheers. -- ---------------------------------------------------------------------------- Prof Russell Standish Phone 0425 253119 (mobile) Mathematics UNSW SYDNEY 2052 [hidden email] Australia http://www.hpcoders.com.au ---------------------------------------------------------------------------- ============================================================ 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 |
Interesting that you'd say OO C++ is hard to debug. With the proper tools, I've found it as easy as, well, interpreted LISP. Now distributed message passing code, on the other hand, is hard to debug. I don't care what language it was written in. The proper tools, like TotalView help a lot, but distributed acynchronous code is just plain difficult to debug.
--Doug On Sun, May 24, 2009 at 7:37 PM, russell standish <[hidden email]> wrote:
============================================================ 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 |
What I mean by pure OO C++ is full blown patterns implemented using
dynamic polymorphism etc, etc. You go through about 3 or 4 layers of indirection via abstract classes to go from caller to callee. You need 6-8 windows open on the screen just to understand what some bit of code is doing. And yes, its even worse when it's asyncronous threaded code (which I've had to do my share of). By comparison, doing MPI programming using a simple class reflection library is total dream. And that's even without the sophistication of using TotalView. See some of my papers on ClassdescMP. My point wasn't that OO isn't useful or has its place. It is definitely an important technique. Just that when overused, it actually adds to the complexity of the solution. Cheers On Sun, May 24, 2009 at 07:42:34PM -0600, Douglas Roberts wrote: > Interesting that you'd say OO C++ is hard to debug. With the proper tools, > I've found it as easy as, well, interpreted LISP. Now distributed message > passing code, on the other hand, is hard to debug. I don't care what > language it was written in. The proper tools, like TotalView help a lot, > but distributed acynchronous code is just plain difficult to debug. > > --Doug > > On Sun, May 24, 2009 at 7:37 PM, russell standish <[hidden email]>wrote: > > > > > > > Most of the time this comment comes up, it seems to mean "C++ is not > > _just_ object oriented". It is capable of being used in many different > > programming styles. > > > > FWIW, C++ programs written in a pure OO style are hard to understand > > and debug. OO is a useful tool in the toolbox, not the panacea of > > everything. > > > > Cheers. > > -- > > > > > > ---------------------------------------------------------------------------- > > Prof Russell Standish Phone 0425 253119 (mobile) > > Mathematics > > UNSW SYDNEY 2052 [hidden email] > > Australia http://www.hpcoders.com.au > > > > ---------------------------------------------------------------------------- > > > > ============================================================ > > 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 -- ---------------------------------------------------------------------------- Prof Russell Standish Phone 0425 253119 (mobile) Mathematics UNSW SYDNEY 2052 [hidden email] Australia http://www.hpcoders.com.au ---------------------------------------------------------------------------- ============================================================ 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 Douglas Roberts-2
When I wrote:
> This would be more for authoring and deploying many smaller-scale > applications written with an agent-oriented perspective. What Dave > West talks about when he refers to how object-orientation was > originally conceived not how current object-oriented programming is > done. This is close to what Smalltalk/Seaside looks like but probably > implemented within Javascript. Doug responded: > Not to digress, but Dave kind of lost me one day at a FRIAM when he > said "C++ is not object oriented." I didn't really know what he > meant, because I've been using C++ for about 20 years now to > accomplish polymorphism via object inheritance, containment, and > method specialization (with and without templates) -- which use > pretty much meets most definitions of OO programming that I've > encountered. I was trying to express a move toward more agent-oriented architectures. I mentioned the Alan Kay conception of OOP trying to clarify what I meant by agent-oriented. I didn't intend to flame start a discussion on the OOP'ness of C++. Your OOP merit badges will not be revoked :-) To better describe agent-oriented, I would like to extend an object to: 1) be goal directed 2) to lookup and message other agents 3) have control over its own execution 4) be able to persist itself (through serialization or database) 5) be able to express itself through various UIs (toString, to3DObject, toHTML, toXML, etc) Certainly this could be implemented in C++, Javascript, Smalltalk, and many other languages. My interest in Javascript is the practicality of its deployability and that it comes with the nice bonuses (to me) of dynamic typing, functional programming and class-less objects that might let us develop, modify and deploy applications on the fly with no compile and restart process. -S --- -. . ..-. .. ... .... - .-- --- ..-. .. ... .... [hidden email] (m) 505.577.5828 (o) 505.995.0206 redfish.com _ sfcomplex.org _ simtable.com _ lava3d.com ============================================================ 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 Russell Standish
russell standish wrote:
> By comparison, doing MPI programming using a simple class reflection > library is total dream. Can do whole thing (generating MPI serialization code) at compile time, without any markup, even with plain C: https://developer.mozilla.org/en/Dehydra ============================================================ 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 Stephen Guerin
Oregon just passed an assisted suicide law...
3) have control over its own execution Do I still get to keep my OO Merit Badge? -- Doug Roberts [hidden email] [hidden email] 505-455-7333 - Office 505-670-8195 - Cell ============================================================ 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 |
Douglas Roberts wrote:
> Oregon just passed an assisted suicide law... > > > To better describe agent-oriented, I would like to extend an > object to: > 1) > 2) > > 3) have control over its own execution > 4) > 5) > all others, and then call finalization routines on their behalf (like executors of a will). But for agent simulations, I think it would be useful to have voluntary and involuntary kill capability integrated in the collector whereby all references to that object would be nulled and the finalization process run. Assisted suicide would be the voluntary form, presumably limited by rules that examine of various properties of the object and connected objects. The unique applicability to ABM is that engineered programs have objects in different roles for reasons, and it would break the whole thing to have the program act on itself that way. On the other hand, ABMs are looser collections of more autonomous objects where agents come and go, and the proper analogy is more often killing or resource depletion, rather voluntary self-removal (e.g. digging your own grave via a `destructor'). Marcus ============================================================ 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 Stephen Guerin
Stephen Guerin wrote:
> 3) have control over its own execution Because resources are finite, an object can only seek resources, e.g. through scheduling protocols for a resource or through growth and reproduction. Agents don't have free will any more than we do. :-) ============================================================ 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 Douglas Roberts-2
Douglas Roberts wrote:
Oregon just passed an assisted suicide law...
sure, but more to the point, you get another gold star added to your glibness sash... isn't that thing getting kinda heavy? nicely done. ============================================================ 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 |
I'm curious what you are trying to model that requires 10^15 agents. I just typed this number into WolframAlpha and got:
~~ 50 x the number of red blood cells in the human body (~~ 2x10^13) ... in other words the number of red blood cells in the FRIAM mailing list (give or take).
Coincidence? Or perhaps Stephen has some some sinister motive.... -- Robert
============================================================ 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 |
Robert being dangerously inquisitive
> Coincidence? Or perhaps Stephen has some some sinister motive.... it's all coming together -- Just a few more CPUs and the plot will be ready. muahaa haaa ... :-) > I'm curious what you are trying to model that requires 10^15 agents. We're not trying to write a large single agent-based model. We're looking for an distributed agent architecture on which to write web- based applications. -S ============================================================ 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 Douglas Roberts-2
Doug,
Some short answers, we can discuss further some time if interested.
First: the "technical" reasons C++ was not considered OO = strong typing, friend declarations, multiple inheritance, explicit constructors, and an over-dependence on function overrides.
Second: subtler, but in my opinion more important, the philosophy of the language - C++ was never intended to be an OO language. Marketing saw some superficial similarities and jumped on the OO bandwagon and represented the language as something it was not intended to be. (They also worked very hard to redefine OO to be closer to what C++ offered - their own version of Newspeak.)
C++ was intended to be a means to impose structured programming discipline on C programmers without, in any way, interfering with the hyper-efficient performance characteristics that arose from being as faithful a representation of the hardware as possible.
In contrast - the OO tradition that began with Simula (not Simula I which was already moving away from the philosophical ideal) and was embodied in Self and Smalltalk, did not care about the machine, did not care about efficiency, it was all about the domain - faithful representation of same - and about human-machine "natural" communication about that shared domain (both humans and objects "lived" in the same "world").
C++ versus Smalltalk was an expression of an even deeper philosophical divide between formalists and aformalists that traces back to the ascendency of the former during the Age of Reason.
dave
On Sun, 24 May 2009 18:35 -0600, "Douglas Roberts" <[hidden email]> wrote:
Not to digress, but Dave kind of lost me one day at a FRIAM when he said "C++ is not object oriented." I didn't really know what he meant, because I've been using C++ for about 20 years now to accomplish polymorphism via object inheritance, containment, and method specialization (with and without templates) -- which use pretty much meets most definitions of OO programming that I've encountered. ============================================================ 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 |
Dave -
Well stated. I've never been in the middle of this fray but all around it, and I have to say that I'm always puzzled by it. By the time Objective C came along I was ready for a "practical" object-oriented language. I jumped on the bandwagon and was hugely disappointed. I was disappointed by two things: That OO didn't live up to my expectations; That C++ rose up like a tide and washed ObjC out of the game for the most part. My own experience was that I was already an experienced enough programmer that most of what ObjC or C++ gave me, I had already learned to handle with raw C. The explicitness of "objects" rather than careful and clever use of structures and functions was a boon, but not a huge one. I had never learned Simula or Smalltalk but had sampled many other languages (APL, Prolog, and Snobol being some of my favorites for specific problem domains). While I had a degree in Mathematics rather than Computer Science, most of the abstract arguements about the value of "pure OO" have never moved me very much. As a pragmatist (completely different kind of pragmatist than Doug though <grin>) and a happy customer of Java, C++, and ObjC (thank you Steve Jobs), I still find the brouhaha over the differences distracting. I am happy to give over to the purists that C++ is a weak sister to "real" OO, but having never really felt that "real" or "forged" OO was as big of a revolution as often implied, I'm not that motivated by it. I'm glad to have it, but find it somewhat overrated. I realize I am a dinosaur in many ways. I can see how those who cut their teeth on various OO tools (authentic and/or forged) might find this a lot more personal, but I also know that many on this list have as much (or more) grey in their beards as I do. As I shared with Guerin in a private conversation... OO fell short of my expectations of what "Objects" should be. Composable Simulations and Agent Based Modeling provided a little of that back, but in turn, Agent Modeling fell far short of what I expected from "Agents". Without needing to disparage either OO or ABM as it is practiced, I see there is great utility in both, I am left to wonder if Computer Science is not hugely irresponsible in using up the best ideas/terms on fairly weak, early examples of what they are pursuing? In my own field, I find that we "claimed" Virtual Reality at least 20 years too early, probably more. Just to add a little more to my morning rant, I have to take a potshot at "Design Patterns" as well. I was a deep fan of Christopher Alexander long before the Gang of Four wrote "Design Patterns". I thought it insightful and clever that they discovered/recognized Alexander and did a fair job of applying his ideas to programming, but their book, the movement that went with it, etc. missed *so much* of Alexander's ideas that I was crestfallen. Is anybody else out there as disappointed as I with our propensity for claiming territory gained long before anything significant was actually gained? - Steve PS. Guerin - See what you started?
============================================================ 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 |
Free forum by Nabble | Edit this page |