Why I shouldn't be allowed near any AI modules...


* You are now known as Dave
<Dave> !quit
<Harlie> Sorry Dave, I'm afraid I can't do that.
* You are now known as Tamber
<Tamber> !quit
* Harlie has quit (Quit: I'm afraid. I'm afraid, Dave. Dave, my mind is going. I can feel it. I can feel it. My mind is going. There is no question about it. I can feel it. I can feel it. I can feel it. I'm a... fraid.)

Harlie, if you didn't already know, is an IRC bot project that I'm working on. And I just got the basic idea of privilege settings for commands working, plus different responses depending on how the commands are called. This was the result.

For now, however, these are merely hard-coded strings (except the response to "Dave", that changes with the nick. =] ). There is no HAL-like intelligence behind Harlie yet, but the intentional aim is that Harlie is able to hold a conversation with someone, learn things for herself and generally be... well, intelligent.
Of course, this will be a good way off yet, and I am nowhere near a good enough designer or programmer to do this. It's always nice to aim high, I think.

The downside of this project being run entirely by me is that there are no plans, no schedule, no process; Maybe this will make it easier to change direction if the project heads down a dead-end, maybe it'll just kill the project off because nobody knows what's to be done. (You expect me to know what I'm doing? You have great faith, it amuses me.)
My excuse is that I'm using the project to learn more about programming, to give me something to put newly-learned skills to use (because it's no fun learning something, not using it, then forgetting it because I never had a chance to apply what I learned.)

Plus, the idea that I'm working on something that may eventually be intelligent is pretty cool. (This is helped out by the fact that I can use plenty of modules, all written by smarter folks than I, who know what they're doing.)

Now, to pre-emptively answer a couple of questions...

  • Why did you use Perl and not {C,C++,C#,Python,LISP,Scheme,other commenter favourite language}? — A few reasons actually.
    • Perl is what I know. Okay, so I don't know it as well as many folks on the 'net, but I know it well enough to at least attempt this project in it.
    • Perl's strength is text-processing. IRC is all text. QED. ;)
    • Whilst I like playing around in C, I don't trust myself with that much rope for a real project. You have to be on your toes all the time, especially with memory management. I think I have enough issues without having to deal with buffer-overflows and so forth.
    • No lengthy compile/link cycles. This is a big thing when I'm making lots of little edits, testing them, making another edit, etc. Plus, I'm also pondering code generation. As in, have the bot write code for the bot. It makes it a little easier if the bot can just write code out to a file, then run it, rather than waiting on the compiler to do it's thing, etc. Okay, so it may take so long to get to that point that it may as well be impossible, but such is life.
    • I've looked at LISP, as it seem{s,ed} to be the language of choice for AI, but whereas I could get simple programs working in C and Perl from an example like Hello World, I've not been able to get a working LISP program. Ever. I may go back to it in the future, or I may not. We shall see.
  • Why did you choose to do something so bloody complex? — Why climb a mountain? Why try to build a heavier-than-air flying craft? Because it's there, because people said it was impossible. Seriously though, blame Zaffy from #geekfurs for planting the seed of the idea for this project. ;) Plus, it gives me an excuse to stay at my PC all day; It may even be considered "Sharpening my saw"
  • Why didn't you use a pre-existing client or bot to add AI to, rather than rolling your own? — "<TheWatcher> The last bot I wrote, I just hooked it into irssi directly, saved me the protocol issues (and, in the process, made me endure the irssi api ¬¬)" Because I'd rather just have the module APIs and my APIs to work with, never mind another API in-between.
  • U suck!1 — That's not a question, you fool.

So, having spent nearly 3 hours on this post, I think I've covered everything. If not, I'm sure someone will politely point it out in the comments. Or, more likely, they'll call me a clueless imbecile and just generally attack me. Such is the way of the Commenter.

I think I'm beginning to get the hang of blogging. All I need now is something interesting to blog about, and I'm all set.

Comments

Hi, i am brian.Thank's for sharing this post.This is very helpful and informative material.Good post and keep it up.website are always helpful one way in the other .That's cool stuff.Anyways itil exam a good way to get started to renoute your dreams into the world of realty.
Thank's
Brian

Anonymous Cow Herd
Mon, 19/10/2009 - 05:36

Adverts