[E-Lang] Re: Identity et al
Ken Kahn
kenkahn@toontalk.com
Mon, 22 Oct 2001 13:15:03 -0700
I've been greatly enjoying reading this thread this morning. I'll respond in
bits and pieces.
Jonathan A Rees wrote:
They have to because they want to run their programs. But in the
style I strive for, the ideal program is a pun, simultaneously
declarative and imperative. When a human first reads it, it's
understood declaratively, and only then, when someone (human or
computer) cares about running it, is it understood imperatively. The
idea is to isolate the user from implementation details such as
inherent asymmetry.
---------------
This part of the discussion faded away too quickly. I think the underlying
issue is that we have two goals in language design that are conflict:
1. Open systems. I seem to remember Carl Hewitt once talking about actors as
inspired by observing computations "in the large" and striving to make a
framework that works at a wide range of levels from large independently
built and run applications and services interacting to the details of
computing 3+4. Declarative programming and issues like expressing
computations symmetrically don't seem very relevant here. AYCDISAM is.
2. Something to think with. Jonathan mentioned this. Seymour Papert wrote
about Logo as giving kids a tool to think with. Others such as Alan Kay and
Andi diSessa have also written much about programming languages and systems
as giving people new and powerful ways of thinking, understanding, and
creating things.
I take for granted that there is much value in understanding something in
multiple ways. Like Jonathan I like declarative/procedural puns. I can look
at Prolog's append predicate and see how it computes things and also how it
states something that is true. I like that. But it doesn't happen that often
in Prolog. But a fair amount of the logic programming research is to make
languages where it happens much more often. (I'm sad to admit that ToonTalk
fails to make the declarative aspect readily available despites its origins.
But I think it adds yet another way to understand a computation - as
something very tangible.)
There have been some interesting experiments in logic programming to deal
with the symmetry issue - typically by expanding beyond Horn clauses to
multi-headed clauses. I can dig up references if people want.
I think trying to accomplish #1 and #2 in the same language is a great
research topic. But until some very hard problems are solved there will be
compromises. And it is much harder to give ground on #1 so most compromises
causes #2 to suffer.
Best,
-ken