|Think about Loose Coupling|
I was over at The Linux Documentation Project about a week ago looking through their excellent list of HOWTOs when I came across the GNU/Linux AI & Alife HOWTO. I read a few pages into it and came across the following quote:
Traditional AI is based around the ideas of logic, rule systems, linguistics, and the concept of rationality. At its roots are programming languages such as Lisp and Prolog
No mention of my favorite language, that's odd. They must have just forgot to include it, or maybe the Faq hadn't been updated in a while. So, later on I was reading through the AI Faq and found a section on what the good languages for AI programming are. It states:
There is no authoritative answer for this question, as it really depends on what languages you like programming in. AI programs have been written in just about every language ever created. The most common seem to be Lisp, Prolog, C/C++, and recently Java.
Okay, that's a bit better. It left some room for Perl by acknowledging a language's suitability depends a fair bit on the programmer's preference. However, it mentions traits such as fast prototyping, garbage collection, and dynamic typing as reasons why Lisp and Java are so well suited for AI. How could they forget Perl after listing these attributes?
So how about Perl community resources? Well I found the perl-ai mailing list but after over a week there's been about 3 posts to it. The Monastery has one previous thread with 'artificial intelligence' in the title and a few other posts on the subject, but not nearly as many as one would expect given the talent of its inhabitants.
I then check out CPAN. There should be tonnes of modules on such a rapidly evolving subject, right?. Well a search for 'AI' turns up 9 relevant modules. Not even in double digits. What's more is most of these modules appear to be in very early stages of development (lots of 0.01 version numbers).
Why is this? Is Perl not suited for AI applications? Is it too slow? Is Perl OO programming too messy? Is it because Perl's considered 'just a scripting language' and not meant for serious projects? Have I poorly defined AI programming and failed to include certain areas (search engines, log analysis) that could be considered AI? Thanks for your replies.