From: Ben Goertzel (ben@goertzel.org)
Date: Sat Jul 21 2001 - 09:02:37 MDT

Hi all,

I re-read the Flare docs and thought hard about

1) what is extremely valuable and what is peripheral in this proposal,

2) how best to achieve what is extremely valuable

I don't think Eli will like my conclusion, but I'll present it anyway.

I think that the idea of annotative programming is a valuable and
fascinating one. I'm not sure how necessary it is for AI, but it certainly
would be a useful tool to play with.

One way to make annotative programming a reality in a reasonably short
period of time (say, a year or 2 instead of 5 years) would be to simply
modify an existing programming language to have the annotative-ness

In terms of existing languages, the two most plausible choices would seem to
be LISP and Java.

My own preference is for Java, as this is more widely used and is the
subject of large-scale development at the moment. Although currently we've
moved to C++ for Webmind, I still believe that Java and similar languages
are the future, and I suspect WM will be back in Java or something like it
one day.

The Pizza and GJ projects extend Java to have higher-order functions and
generic types


Similarly extending Java to handle general annotations in Eli's sense
shouldn't be too problematic, though certainly it will require a lot of

Java is far from perfect in how it handles garbage collection, threading and
lots of other issues. But I have to believe that the many resources and
minds being thrown at solving these problems in Java, are going to yield
better results than a small team focusing on Flare, at least over the next
couple years. (In the long run, yeah, Flare could conceivably build up into
a large-scale open-source initiative like Linux, but this would take quite a
long while. Linux had a lot more of an obvious hook for attracting
worldwide coders.)

In sum, and to be quite blunt and direct about it, my suggestion is:

1) back-burner Flare

2) focus on identifying exactly what "annotative" properties are
definitively valuable for implementing self-modifying AI, and create a
specification describing how these properties would manifest themselves in
an easily modifiable existing language such as Java or LISP

3) modify the JVM or LISP interpreter appropriately

Of course, making totally new programming languages is fun, and we all have
pet ideas about how to make a better programming language. History shows
that most of these ideas don't come out as well as their creators think they
will. The current Flare proposal strikes me as a mixture of "cool pet ideas
about a programming language" with "really groundbreaking ideas about how to
make programming languages better for self-modifying AI." If we take only
the latter and leave behind the former, we may be left with Annotative Java,
Pepperoni Pizza, or whatever...

I can give more details later as time permits. Or if someone else would
care to fill in some details on the "Annotative Java" idea that would be

Finally, I think the repeated mention of XML in the Flare documentation is
basically a distraction. Yeah, XML is a nice standard to use, but let's
face it, we can take the run-time representation of a Java program and dump
it into XML if we want to. Representability in XML is not the key point,
annotativity is the key point and XML is just a convenient textual
expression of annotative internal structures. I think the documentation,
before it is presented to the "real world", should be revised to reflect

-- Ben

This archive was generated by hypermail 2.1.5 : Wed Jul 17 2013 - 04:00:37 MDT