WRT the original quest, I realize that the trail is probably cold for most
of the list by now and that tangential discussions have now generated more
interest, but I think I have a reasonable answer.

In functional programming map and reduce are often called *meta-functions*.
GA, GP, Ant Colony Optimization, etc. are often called
*meta-heuristics*.  *Meta
programming* is even in Wikipedia referring to programs that manipulate
other programs. *Meta-programming* is a bit too general for what I'm after
since a compiler is a meta-program and that's not really the point. But *
meta-application* may do the trick.

Thanks for all your help.

-- Russ



On Mon, Sep 7, 2009 at 9:12 PM, Tom Carter <[email protected]> wrote:

> All --
>   Apropos some of this, today I found myself going back and forth between
> the FRIAM discussion and this review/analysis of what's new in Mac OSX Snow
> Leopard . . .
>
>    http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/8
>
> tom
>
> On Sep 7, 2009, at 7:14 PM, Birchard Hayes wrote:
>
> Doug,
>
> True, but now we have boatloads of RAM to fill - he he he.
> Garbage collection remains a real problem whenever it is included in a
> language implementation.  I've been working in C#/.NET lately and I would
> venture to say that there is as much "bookkeeping" involved as there was
> with pointers and explicit destructors; only now, one must learn an entirely
> new set of rule and MS generated foibles.
>
> I wonder if what Russ really wants is an architecture of abstract classes
> that use a wide variety of interfaces and concrete classes to provide the
> palette of functions, i.e. an aggregate of abstractions, to provide enough
> variability in behavior at runtime.  That could be done in C++ (STL) with
> Policy Based Templates and a few other patterns; lot's of heavy lifting
> though.
>
> -Birch
>
>   --
>
> "When I am working on a problem,
> I never think about beauty but when I have finished,
> if the solution is not beautiful, I know it is wrong."
>                                                                             -
> Buckminster Fuller
>
>   **** Use of advanced messaging technology does not imply ****
>   ***** an endorsement of western industrial civilization *****
>
>
>
>
> On Sep 7, 2009, at 6:41 PM, Douglas Roberts wrote:
>
> 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
>
>
> ============================================================
> 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

Reply via email to