The difference is imperative based programming vs functional programming. C/C++/perl/java are imperative, prolog miranda ASL (lisp at a push) (scheme at a push) are functional or rule based as you call them. Do web searches for functional and you will find NUFF info

I must confess I could never get my head around functional programming languages although I can certainly see the benifits.

A perl module functional that allows for function like processing in perl (infinite lists etc) it is uses the term functional in a lisp sense more than the rule based sense. Your may like to look at this