Metagramming
Meta level Network Programming: A Short Ramble
by L. Van Warren
© 1998 L. Van Warren • All Rights Reserved
The Driving Force
I am interested in linking designers with suppliers.  For example an engineer at one company could create a virtual design that was built by another company, in a service bureau like fashion.  This bureau could in turn be linked and supplied by yet others.

The Deal Was
We used to think of a program as something we 1) wrote, 2) ran locally and then 3) collected results for communicating to others after the fact.  Then the web came along with powerful search engines, electronic funds transfer, remote computing and telecollaboration.  With the advent of Java  the possibility of running utility programs on remote servers arose.  Simple applets blossomed everywhere.

The Deal Is
Now consider a meta level of programming.  Where each line in a "program" is actually a request to a different server for a different kind of service.  The ensemble of services provided by each of the servers constitutes a meta level of program organization.  Programming the web as it were.  This will require new constructs so that programmers do not have to look at lines like:

http://search.excite.com/search.gw?trace=a&search=fasteners+AND+%22corrosion+resistant%22
+AND+%28%22ISO%22+OR+%22Metric%22%29+AND+manufacturers

which is really just the Excite search:
fasteners AND "corrosion resistant" AND ("ISO" OR "Metric") AND manufacturers
to create a list of fastener suppliers.

The Deal Will Be
Let's say you were in the prototyping business.  As a part of the prototyping task you would need nuts and bolts in a set of standard sizes and styles (style includes material).
==============================================================
// Simple Metagram
// Assumption
// The variables:
//     fastenerOrder fastenerSupplierList, deadlineElapsedTime, quality, reputation are defined.
//
for each supplier in fastenerSupplierList
    send message
    ( Dear [supplier] \n,
    please send me a list of your products in metagram format, tnx [salutation]
    );

fastenerAnswers = getMessage(fastenerSupplierList, deadlineElapsedTime);

fastenerAnswersPrime = diff(fastenerAnswers.productList, fastenerOrder); // see if they've got it.

fastenerAnswersDoublePrime = sort(fastenerAnswersPrime, price, quality, reputation);

if(fastenerAnswerDoublePrime[0].price < budgetForFasteners)
send message
    ( dear [fastenerAnswerDoublePrime[0].from] \n,
    please deliver the following products
    [fastenerOrder] [eAccountAuthorizationNumber]
    tnx [salutation]
    );
==============================================================
Anyway, you get the idea...

Wrapup
Putting a human in the loop for pattern recognition and decision making would be just another, "subroutine call".  First we had, "The Paperless Office".  Now we have, "The Officeless Office".

You can contact moi by clicking on the name at the top of this page.