[alicebot-archcomm] [news] Alice is ALICE is not Alice and AIML is NOT a programming language

Kim Sullivan alicebot-archcomm@alice.sunlitsurf.com
Fri, 5 Jul 2002 21:30:22 +0200


Hi Ernest,

> Maybe my contribution is to preserve the purity of AIML as markup
> language from the view of a Perl programmer.

We're all here for the best of AIML, please try not to forget that.
Preserving the purity has sometimes led to bad results; 'purity' of the
human race (Hitler), of christian belief (Inquisition).
My personal opinion is that AIML stopped being a pure markup language the
moment it was created (in other words, it never was), it's predecessor
didn't use markup (it was more like the programming language SETL), and the
change was only in syntax, and not semantics. The reason for that change
was, I think, that markup was (and still is) 'en vogue'. Rich simply wanted
the syntax to be as easily accessible to everyone as HTML. Almost everyone
on the net understands a bit of HTML, but who understands SETL? (BTW, did
you know that in the beginning some elements were indeed used as ordinary
keywords, or variable names? The only difference was that they were enclosed
in <>. Some programming languages use the # character for that.)

> ALICE     Artificial Linguistic Internet Computer Entity
> AIML      Artificial Intelligence Markup Language
> Alice     Name of an artificial personality designed by Dr. Wallace
> AIML-KB   AIML knowledge base    (one to many AIML files)
> ProgramX  Any AIML interpreter   (ProgramD, ProgramP, ProgramV,
>                                   PalmAlice, J-Alice etc.)

I'm afraid that the case distinction between Alice and ALICE, although
intuitive to a programmer (esp. if writing in case sensitive languages) is
too minor, people often don't use the shift key at all, so this could (and,
I'm afraid, does) lead to misunderstandings.

I prefer the term 'bot' for both 'the AIML-KB' and 'an ALICE', see next. The
official spec uses the term 'bot' for the whole application (not just the
interpreter), I don't believe this to be too accurate. Also, the usual way
to refer to the 'AIML-KB', as you call it, is 'aiml set'.

Also, ProgramX is commonly called (and also refferred to as) 'a/the
interpreter'. Again, the spec states that the interpreter is only a part of
a bigger application, but I feel that the situation with naming has come to
a more or less stable concensus in the past half year.

> 2. ProgramX is not ALICE and is not Alice
>
> Any AIML interpreter is - taken apart - not an ALICE until it is
> running: It becomes an ALICE only together with the personality encoded
> in the AIML-KB ProgramX is interpreting. And even if this personality
> happens to be Alice, ProgramX is not Alice in itself.

This seems quite philosophical. Is Unix not an operating system if it's not
booted up? Is Mozilla not a web browser unless executed? Is a program a mere
accumulation of bytes and becomes a program only when it's run? And
hopefully more close to your markup point of view: Is a web-page only a
web-page when it's viewed?

I'm not sure if there is a reason to differentiate between the ALICE-KB and
resulting ALICE, the same way there is little reason to differentiate
between a webpage per-se and a web-page being displayed in a browser. Or a
program on disc and a program executing (or being interpreted) in memory. As
I said above, should the need arise there are already existing terms to
differentiate ('bot' and 'aiml set').


 > ProgramX can be developed in any programming language as long as it
> follows the interpreting rules stated by AIML.

Agreed.

> 3. AIML is not ALICE and is not Alice
>
> Any AIML-KB is - taken apart - not an ALICE until it is interpreted by
> ProgramX: It becomes an ALICE only together with ProgramX interpreting
> this AIML-KB encoding a personality. And even if this personality
> happens to be Alice, the AIML-KB is not Alice in itself.

See above.

> A personality has to be designed using AIML as long as it is to be
> interpreted by ProgramX.

Agreed.

> 4. Alice is ALICE

Alice is _an_ ALICE, but, like I said, I prefer Alice is a bot.

> 5. * is an ALICE
>
> An AIML-KB describing the personality named '*' interpreted by ProgramX
> is an ALICE.
>
> You might be tempted to call anything ALICE, as long as it is a kind of
> chatbot - more exact: as long as it is a computer entity, thus
> artificial, which has linguistic capabilities.
>
> But due to the fact, that the term 'ALICE' is bound to the ALICE
> Foundation and thus bound to AIML, in a narrower sense only a system
> composed of an AIML-KB and an AIML interpreter can be named an ALICE.

This distinction does seem important, and in situations where it is
necessary to differentiate between any kind of bot and a bot written in AIML
(esp. for marketing and promotional purposes), I'd use the term 'an
alicebot'.

> (The question, if the botmaster belongs to this system, is intentionally
> left unanswered).

Nice touch :-)

> 6. ALICE is not Alice
>
> The factor, that AIML is used to design a personality to awaken by
> ProgramX does not imply, that the resulting ALICE is the personality
> named 'Alice'.

Agreed. This obvious fact is sometimes overlooked by newbies, who tend to
think of ProgramD combined with the 'standard' as 'the thing'.

> 7. AIML is not a programming language

> The rules stated by the AIML definitions tell ProgramX, how to interpret
> an AIML-KB. The means for ProgramX performing this interpretation are
> not required.

The rules stated by the Perl lanugage specification tell the perl
interpreter how to interpret a perl source file. The means for the perl
interpreter performing this interpretation are not required (provided?).

> Can you call HTML or even XML a programming language? How do you call
> Netscape, IE5 or Konqueror if you do this?

Can you write a stack or queue in HTML? Can you do arbitrary length positive
integer addition in XML? Recursion? Have you ever had an infinite recursion
loop in your web-page (unless you're using javascript)? Pseudo-random
sequences? In a usual XML scheme, how often do you have to solve problems of
arbitrary nesting of elements (common to mathematical expressions, and
programs)?

Just because something doesn't look like a common pl (because it uses markup
to denote it's keywords) doesn't have to mean it isn't. There's more than
one way to do it, you should know. I can rewrite any perl program to use
markup style syntax, that doesn't stop it being a program. I'm also able to
rewrite any template (and even a single category) in most programming
languages, and it will compile, and run. I won't be able to rewrite a
template to HTML though, unless using javascript. My point is, treating AIML
as a programming language works.

Regards,
Kim