Granted, I don't have a well-rounded CS background as everyone else here, so don't flame me if i'm a little off base.

First of all, what makes a program?

That's easy. It can be loosely defined as a set of instructions to be interpretted and acted upon in order to complete a task. Sounds about right.

Okay, what makes a program smart?

I don't know how to begin to define that.

In regards to cjf's root post, I think that Perl is already suited to AI. I haven't seen any Perl programs start a conversation with me out of the blue, but Perl has what it takes to make programs "semi-sentience": strong logical features and a built-in regular expression engine. It can match, evaluate and logically act on input with little effort put out by even the greenest of programmers. For example, in order for a "talking computer" to pass the Turing Test it needs to mimic the actions and mannerisms of a human being. Perl Chatterbots can do that (rather convincingly, too).

Who says Perl doesn't have what it takes? The main reason, I believe Perl hasn't taken off is (as expressed previously in this thread) is that the academic world (as a whole, I know many academics that use Perl) hasn't embraced Perl for all it's wonders. To them it's still just for managing weblogs. For us monks that use Perl for everything, it's common knowledge that with proper planning and construction, a Perl program can do anything, be it interact with a human (help agents, chatterbots, what have you) or help a human gain/extract knowledge (see various stat tools, "repwalkers" by jcwren).

The reason that Perl hasn't become a bigger contender in the field of AI programming is because there's no one in the ring willing to give it a chance.