Birch, Written like a true computer scientist. I lived in a LISP world for a happy period between, say '85 - '90.
But then the real-world encroached, and C++ began to become the only realistic way to implement large ABMS of complex systems. LISP was nice, but the virtual machine and garbage collection made it a non-player in the modern HPC computing arena. --Doug On Mon, Sep 7, 2009 at 6:33 PM, Birchard Hayes <[email protected]> wrote: > Okay Russ, > > There are several options to chose from, depending on just how adaptive > you'd like the functionality to be. > > LISP (Scheme, et alia): Allows for partial instantiation or "currying." > This mechanism allows your program to build functions out of little pieces > of text and then call _eval()_ on them when completed. LISP uses a list for > a generic structure but does not infer type until you use something. Thus > you could have a collection of objects that were all completely different > with functionality created on the fly. > > Javascript: Which, it turns out is a functional language; makes functions > first class objects and allows appending objects or replacing their methods > at run-time. I believe there is a native "Collection" structure but one > could be written if there is not. Javascript also has an _eval()_ function, > so partial instantiation is possible. > > Java (and, to an extent, C++): Allow for Collections of heterogeneous > objects, although the language is strongly typed and will try to dissuade > the programmer from being too abstract. The smoothest way to apply > different behavior is through interfaces, keeping in mind that each class > can implement the interface however it chooses. The drawback here is that > the interfaces must be concrete at compile time and I don't know of an easy > way to modify them at runtime (I'm sure that it can be done but requires > more work than the other two options.) The STL has _functors_, generally > for comparison but could be extended, which can be called on arbitrary > classes iffi those classes provide the requisite methods the functor needs. > One would iterate over a Collection and apply the functor to each object, > or each pair. However, even with cool stuff like Policy Based Templates > (LOKI Libraries, Alexandrescu et al.) I think that compile time type > checking will make things less flexible than you desire.) I haven't looked > for functors in Java, but I imagine they are there or could be created. > Additionally, Java has lent itself to the "new" paradigm of _Aspect > Oriented Programming_ which I have not played with very much, but I > understand that functionality can be cross-cut across classes and assembled > at runtime but I would think that it would still be pretty strongly typed. > > IMHO, LISP and its bretheren fit what you seek although Javascript > potentially offers fertile ground and may be easier to integrate with Java. > > As for a single term to describe this, I still like Data Structure but > that's probably being purist and I could get behind active structure. > > -Birch > > -- > > "Humanity is acquiring all the right technology for all the wrong reasons." > ~R. Buckminster Fuller > > **** Use of advanced messaging technology does not imply **** > ***** an endorsement of western industrial civilization ***** > > > > > On Sep 7, 2009, at 5:48 PM, Russ Abbott wrote: > > Let me bring this back to where I started with this. You may recall that a > while ago I was talking about what I wanted in an ideal agent-based modeling > system. I have been thinking about as a starting point. One of the things I > like about Drools is that it is a forward chaining system that supports a > workspace that can contain arbitrary Java objects along with rules that > operate on those objects. I find that very attractive because it allows new > primitives to be added at any time while at the same time providing a > reasonable framework for logical operations. > > I wanted a term that would describe this sort of openness. > > As I've been attempting to describe it, the closest comparison seems to be > to a general Genetic Algorithm system in which the population, genetic > operators, and fitness function are all left open. The analogy is that the > GA population plays a role similar to the Drools workspace and the GA > genetic operators and fitness function plays a role similar to the Drools > rules. > > I was looking for a term that would capture the sort of operational > framework within which the lowest level objects and operations were left > open while the framework implemented some higher level functionality in > terms of those objects and operations. > > -- Russ > > > On Mon, Sep 7, 2009 at 4:27 PM, Steve Smith <[email protected]> wrote: > >> Birch - >> >>> I thought Container as well (although Bag leapt to mind too) but Russ >>> decided against so all that was left was the more abstract descriptor. >>> Besides, LISP has a data structure or two and underlying types, loosely >>> defined but they are there - IMHO "Data Structure" is neither procedural, >>> declarative, nor functional. >>> >> Of course. >> >> I merely have my face being rubbed in this right now cuz I'm the >> old-school C programmer working with some new-school C++ kids who don't >> really even know what a Struct is... They will create a Class when a >> Struct is what they really need. >> Since I grew up in the early days of Knuth's Art of Computer Programming >> (when you were still in a Brooklyn grammar school beating up honor-roll >> students for their lunch money)... I tend to the Procedural view of >> things... I learned all the Applicative and Object Oriented and >> Concatenative ( In my NeWS days) languages offered up to me in the g(l)ory >> days. I have loved my Snobol and APL and Prolog and PostScript (*as a >> programming language!*) and Objective C and Java and loved to hate LISP and >> Haskell and Simula, and made peace with C++, but at heart, I love the >> half-step of abstraction from hardware that good ole C provides. It's a >> goddamn bit processing machine, gimme some register variables and an easy >> way to do bit-shifts and I'll build the rest from raw stock! >> >>> Of course due to my current work situation I am drawn to "bring me a >>> rock" like a moth to the flame. >>> >> Does this mean you are avoiding deadlines? Or just so morbidly fascinated >> with all things work-related that answering enelucidable riddles is like >> mother's milk? >> >>> >>> I have a bottle of Irish Whiskey to replenish yours and Bourbon is always >>> good (rot gut or not) but you know that I can't condone burning books for >>> any reason! >>> >> Yes, I believe we did do some damage to a bottle of Jamesons last time you >> were over. And I don't need you to condone the burning of books, but that >> doesn't mean you can't warm your hands by the woodstove while *I* do. The >> real sin would be to use good whiskey as an accellerant (for the combustion, >> not the attitude). >> >>> >>> -Birch >>> >>> >> >> ============================================================ >> 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 > > > > ============================================================ > 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 [email protected] [email protected] 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
