This is to the programmers on this list.
I'm looking for a word that refers generically to software that is open to virtually object in its host language. The best way for me to explain it is with examples.
It may be something like "structural" in that the software defines an operational structure but not the elements that occupy the structure. Is there any commonly used word for this? -- Russ P.S. This demonstrates that one can have an idea before having a word for the idea. ============================================================ 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 |
A private message suggested template or pattern. The problem with template or pattern is that they are too
generic. Neither implies any kind of defined processing.
Each is just a pattern with holes and without suggesting that the
pattern does anything to whatever fits into the holes.
-- Russ On Mon, Sep 7, 2009 at 12:14 PM, Russ Abbott <[hidden email]> wrote: This is to the programmers on this list. ============================================================ 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 Russ Abbott
Thus spake Russ Abbott circa 09/07/2009 12:14 PM:
> This is to the programmers on this list. > > I'm looking for a word that refers generically to software that is open to > virtually object in its host language. The best way for me to explain it is > with examples. How about "undecidable"? Or perhaps "semidecidable"? http://en.wikipedia.org/wiki/Decidability_(logic) -- glen e. p. ropella, 971-222-9095, http://agent-based-modeling.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 Russ Abbott
Pattern suggests design pattern. Perhaps closer but still not quite right since design pattern doesn't imply executable code whereas the examples I gave earlier do. Some design patterns do fit my categorization. The Visitor pattern is a good example because it can be implemented as code. One can write a visitor function that takes a tree and a function and applies the function to each node of the tree -- like map except on trees.
-- Russ On Mon, Sep 7, 2009 at 12:30 PM, Russ Abbott <[hidden email]> wrote: A private message suggested template or pattern. The problem with template or pattern is that they are too generic. Neither implies any kind of defined processing. Each is just a pattern with holes and without suggesting that the pattern does anything to whatever fits into the holes. ============================================================ 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 glen e. p. ropella-2
Glenn,
I'm missing the connection between undecidable and what I'm asking for.I don't want a property of these things; I want a generic name for them. -- Russ On Mon, Sep 7, 2009 at 12:42 PM, glen e. p. ropella <[hidden email]> wrote: Thus spake Russ Abbott circa 09/07/2009 12:14 PM: ============================================================ FRIAM Applied Complexity Group listserv Meets Fridays 9a-11:30 at cafe at St. John's College lectures, archives, unsubscribe, maps at http://www.friam.org |
Thus spake Russ Abbott circa 09/07/2009 12:46 PM:
> I'm missing the connection between *undecidable *and what I'm asking for.I > don't want a property of these things; I want a generic name for them. The point is that the validity of a statement (e.g. a program, down to the formal parameters in a method call) can be determined either by syntax or by execution. In the extreme, if the language is fully typed, we can determine the validity of every sentence at compile time. If it's fully dynamic, we have to actually execute each sentence in order to determine if it's a valid statement. Sentences in fully dynamic languages have to be executed in order to determine whether they're valid (i.e. all exceptions happen at runtime). It's not clear to me whether this is precisely the same as a sentence being decidable or undecidable; but the gist is very close. In the most extreme, an undecidable sentence is proven undecidable if its effective computation will never halt, right? -- glen e. p. ropella, 971-222-9095, http://agent-based-modeling.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 Russ Abbott
But not too generic. Just generic enough. You seem to be difficult to please.
What you appear to be asking for is exactly that the STL brought to C++. The Standard Template Library: a completely generic yet well-specified set of containers for any kind of data object, providing the ability to specialize iterators thus allowing the developer to do whatever he wants to the contained data objects. --Doug On Mon, Sep 7, 2009 at 1:46 PM, Russ Abbott <[hidden email]> wrote:
Glenn, ============================================================ 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 glen e. p. ropella-2
Still, undecidable is an adjective. I want a noun.
-- Russ On Mon, Sep 7, 2009 at 12:58 PM, glen e. p. ropella <[hidden email]> wrote: Thus spake Russ Abbott circa 09/07/2009 12:46 PM: ============================================================ FRIAM Applied Complexity Group listserv Meets Fridays 9a-11:30 at cafe at St. John's College lectures, archives, unsubscribe, maps at http://www.friam.org |
In reply to this post by Douglas Roberts-2
OK. And Java and C# have the Collection Classes. STL and Collecition Classes name a group. Is there a generic name for a prototypical member of one of these groupings? The name should also be applicable to generic code that implements the Genetic Algorithm.
Perhaps there just isn't such a word. -- Russ On Mon, Sep 7, 2009 at 12:58 PM, Douglas Roberts <[hidden email]> wrote: But not too generic. Just generic enough. You seem to be difficult to please. ============================================================ 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 leaning toward a coined term like "processing structure." A processing structure is a active in that it does something. It's also open in that it's a structure into which many different things may fit.
Both a list and a genetic algorithm is a processing structure. What do you think? Having written that, what about active structure? -- Russ On Mon, Sep 7, 2009 at 1:10 PM, Russ Abbott <[hidden email]> wrote: OK. And Java and C# have the Collection Classes. STL and Collecition Classes name a group. Is there a generic name for a prototypical member of one of these groupings? The name should also be applicable to generic code that implements the Genetic Algorithm. ============================================================ 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 |
Data Structure
-Birch -- "Sometimes I think we're alone. Sometimes I think we're not. In either case, the thought is staggering. " - Buckminster Fuller **** Use of advanced messaging technology does not imply **** ***** an endorsement of western industrial civilization ***** On Sep 7, 2009, at 2:32 PM, Russ Abbott wrote: I'm leaning toward a coined term like "processing structure." A processing structure is a active in that it does something. It's also open in that it's a structure into which many different things may fit. ============================================================ 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 Russ Abbott
Being slightly less terse:
A Data Structure is the term for any collection, container, or arrangement of primitives or objects. In a language that makes functions first class objects, the structure can contain anything (variables, objects, or functions.) The details are sorted out during implementation, but the abstraction of a Data Structure remains. -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 2:32 PM, Russ Abbott wrote: I'm leaning toward a coined term like "processing structure." A processing structure is a active in that it does something. It's also open in that it's a structure into which many different things may fit. ============================================================ 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 Birchard Hayes
Birchard Hayes wrote:
> Data Structure Birch... you are *so* not ObjectOrientedly Correct... you, you, you... PROCEDURAL PROGRAMMER! Bring your K&R Bible by the house and we will burn it ceremoniously. It is about time for my first cookstove fire of the season and tip a few glasses of Bulliett Bourbon while the cornbread browns and the beans and green chile simmer, fueled by the rightous fires of a burning C Programming manual. I'm still not tracking Russ's "twenty questions" game here well enough to be sure, but what I hear is simply a "Container Class"... or a particular conventional use of such for the purposes of doing some related/similar processing on all of the members. - Steve ============================================================ 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 Russ Abbott
I get unduly hung up on unparsable grammar, where probably my brain just needs to fill in one missing word, so help me here: did you mean "virtually *any* object". Or, did you mean that the software is able to object ("Your honor, I object!"), and do so virtually? Assuming the first, I would think polymorphic might fit the bill.
Time flies like an arrow, Gary On Sep 7, 2009, at 2:14 PM, Russ Abbott wrote: This is to the programmers on this list. ============================================================ 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 Steve Smith
Steve,
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 due to my current work situation I am drawn to "bring me a rock" like a moth to the flame. 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! -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 3:32 PM, Steve Smith wrote: > Birchard Hayes wrote: >> Data Structure > Birch... > you are *so* not ObjectOrientedly Correct... you, you, > you... PROCEDURAL PROGRAMMER! Bring your K&R Bible by the house > and we will burn it ceremoniously. It is about time for my first > cookstove fire of the season and tip a few glasses of Bulliett > Bourbon while the cornbread browns and the beans and green chile > simmer, fueled by the rightous fires of a burning C Programming > manual. > > I'm still not tracking Russ's "twenty questions" game here well > enough to be sure, but what I hear is simply a "Container Class"... > or a particular conventional use of such for the purposes of doing > some related/similar processing on all of the members. > > - Steve > > > > ============================================================ > 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 |
Data structure would be a possibility. My problem with it is that it already is in widespread use to refer to static storage organizations. As such it has no active component. An array is a data structure. But an array is not one of the sorts of things I want to include in the class of things I'm looking for a label for.
Container generically and bag are fine examples but they are too limited. I want a term that would also apply to map and reduce in functional programming and to code that implements a genetic algorithm once you pass that code a population, genetic operators that work on elements of the population, and a fitness function. Note that the population could be a population of any objects as far as the GA code is concerned. All that matters is that the genetic operators operate on them to produce new population elements. Similarly, the fitness function can take any population element and return a numeric value. The GA code doesn't care about any of that. But GA code is not a static structure like an array either. The various collection classes are included in my overall category when one thinks of them as classes that implement data structures. A list simply as a sequence of elements is static, but a List class is active in that it takes any objects (again forget about type parameters), stores them in order, and provides access to them with respect to that order. So it too is an active structure, not just a (static) data structure. I'm talking myself into active structure.. But I wish there were a standard term. Getting a newly coined term widely accepted is never easy. -- Russ On Mon, Sep 7, 2009 at 3:08 PM, Birchard Hayes <[hidden email]> wrote: Steve, ============================================================ 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 Russ Abbott
In C++, such a thing is called a template (which may be an object or a
function), and the style of programming is called generic programming. I guess what you're objecing to is that these technical uses of the terms do not seem to relate all that well to the usual English meanings of the terms. PS, your example 3 seems to indicate that the standard C library sort function is one of these, even thought its just a function. However, the standard C++ sort function is actually a template, and far more generally useful than the C version, which is also available as a particular overload. On Mon, Sep 07, 2009 at 12:14:31PM -0700, Russ Abbott wrote: > This is to the programmers on this list. > > I'm looking for a word that refers generically to software that is open to > virtually object in its host language. The best way for me to explain it is > with examples. > > - In Java, the various collection classes each have this property. A List > can be a list of anything. (Note that this isn’t about generics such as > List<type>. It’s about the fact that the List functionality does not limit > the sorts of things one can put into a list. Typed lists are simply a way of > ensuring that a program gets its types right. That's a separate > consideration.) > > > - Other examples include map and reduce in functional programming. They > are open if not to anything at least to lists of any sort and to functions > or any sort that operate on elements in those lists. > > > - Another example is a genetic algorithm in that it does not limit the > function that is used as a fitness function or the possible population > elements. Again, these can be anything. > > So is there a generic word for software with this sort of "downwardly open" > property? > > It may be something like "structural" in that the software defines an > operational structure but not the elements that occupy the structure. Is > there any commonly used word for this? > > -- Russ > > P.S. This demonstrates that one can have an idea before having a word for > the idea. > ============================================================ > 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 |
I'm not a C++ programmer and haven't kept up with its Templating capability, which I understand is quite sophisticated.
In Java I think that the closest equivalent is type parameterization. And that's really not what I'm after because a type-parameterized entity does not operate on its type parameters. The type parameters just instantiate it further. Also in Java one can pass comparison functions (actually objects) to a sort program. But that is independent of type parameterization. In Java, I think the first happens at compile time; the second happens at run time. I'm interested in things where the application of the function to the arbitrary objects happens at run time -- but not just because the language is dynamically typed(!).;. So if these are both aspects of Templating in C++, perhaps Templating is a bit too general for me. Sorry to be so picky. I have a pretty clear idea what I'm after and want something that picks it out as precisely as possible. -- Russ On Mon, Sep 7, 2009 at 4:10 PM, russell standish <[hidden email]> wrote: In C++, such a thing is called a template (which may be an object or a ============================================================ 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 Birchard Hayes
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 |
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 <[hidden email]> wrote: 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 |
Free forum by Nabble | Edit this page |