Devyn Collier Johnson - Oct 2, 2013:
I think Xaiml is the best way to go.
I think that is a bit naive. An AI standard language should be fully cross-platform, concise, and address the specific issues of the target domain that cannot be well represented in another language. It needs portability, flexibility, and potentially extensibility.
Xaiml currently intermixes basic AI functionality with tags related to platform specific functionality. A developer trying to support Xaiml would need to develop and debug tags that his users never could or should use. A couple quick examples:
Xaiml allows some common minor spelling errors.
Xaiml allows some tag mis-matching.
< prn>RANDOM TEXT</pattern>
Although helpful for a user interface entering information, I can’t think of any interpreter that encourages mismatched open/close tags. This leads to additional overhead on the interpreter which is unnecessary, since a 1 time pass through the file could fix all the tags and allow the interpreter to only look for a subset. I also believe it breaks the XML standard which is one of the few advantages of using a “tag” based language.
There are three styles that the tags may be typed. Most tags are XML-style, some are BASH-style, and very few are Python-style. An example of all three of these can be shown with the swapoff tag. The XML-style is <swapoff>, the BASH-style is <swapoff -a>, and the Python-style is <swapoff()>. Not all tags can be typed in BASH style. However, all tags that end in “>” can be typed in Python style.
Xaiml excepts <think>, <thought>, <thinking>, <thnk>, and <thk>.
<input/> - This tag prints the user’s input. Equivalent tags include <in>, <usersaid>, <usersaidwhat>, and <repeatme>.
The goal should be for a single style to ease portability, debugging and support. For developers who use English as a second language, explaining the rational for all the different flavors of “think” or “input” is just extra overhead. You quickly get into discussion of other spellings/synonyms and why they also are not supported. Every tag that is part of a language requires documentation, development, support and training. It often makes debugging more problematic.
<perl> - This tag executes perl code that is enclosed in the tag.
<python>
<jython>
<cython>
<scilab>
<ruby>
<jruby>
<rubyjs>
<csh>
<tcsh>
<ksh>
<zsh>
Tags like these make operating system/program assumptions that you can’t assume in a cross-platform AI standard environment.
<french_ruler/> - This tag prints a random French ruler name from ./databases/french_rulers.db.
<georgian_alphabet/>
Most botmasters/AI builders would find Tags like these useless overhead.
<opera/> - This tag opens the Opera web browser.
<firefox/> - This tag opens Firefox. Equivalent tags include <ff/>, <firef/>, <firex/>, <ffox/>, <mozilla/>, <mff/>, <mozilla firefox/>, and <mozillafirefox/>.
<xterm/> - This tag opens Xterm.
...
<adobe>
...
You have turned aliases to applications into tags. You can’t assume every platform will have every “APP tag” that is currently in Xaiml.
By the way, “Adobe” is a company, not an application. That tag is ambiguous. It could mean “Acrobat viewer” which displays PDF files or a number of other Adobe apps like the creative suite, or photoshop.
You would be better off supporting a “LAUNCH” command that would then allow the user to open a resident app and fall back to an error mechanism on fail.
Devyn Collier Johnson - Oct 2, 2013:
The other chatbot languages are too rigid and do not provide enough commands/tags to perform many silicopsychological functions.
I would be interested in your analysis of ChatScript/Rivescript and how you found them too rigid. Both are open source.
You make the assumption in Xaiml that more commands/tags are better. I hold exactly the opposite view.
My own language JAIL (JavaScript Artificial Intelligence Language) is not public. But, JAIL is largely tag-less and currently has the distinction of having run on more platforms than any other chatbot/AI language/interpreter. If nothing else it proves that tags are not necessarily a requirement.