Re: Is Prolog good for AI? (was: Minsky still posting)
From: Jan Wielemaker (jan_at_ct.xs4all.nl)
Date: 03/16/05
- Next message: Torkel Franzen: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Previous message: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- In reply to: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Next in thread: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Reply: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: 16 Mar 2005 11:29:17 GMT
On 2005-03-16, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
> On Tue, 15 Mar 2005, Jan Wielemaker wrote:
>> On 2005-03-15, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
>
>>> I was writing in the context of discussing why the Fifth Generation is
>>> widely viewed as a failure.
>
>> National programs like the Fifth Generation generally are -at least
>> from the technical viewpoint- almost a failure by design in my
>> opinion.
>
> The premise this thread started with is that the Fifth Generation
> Project was about building sophisticated Artificial Intelligence.
> In this it was undoubtedly a failure - it did very little AI work.
<snip>
> about what can be done with it. However, my view is that it is more a
> low-level conurrent calculus into which a richer language could compile,
> than a programming language suitable for large scale direct human use.
You appearently know much more about the Fifth Generation than I ever
will, which means you can make a better judgement. I thought your
argument was along the lines ``see, they tried Prolog in a very big
national program and it failed. It *must* be bad''. I do not buy
that line of thinking. What I understand now is that the Fifth Generation
project did something nice, but it was Prolog nor AI. I'm inclined to
think that makes it irrelevant for the discussion :-)
>> Popularity of languages is a strange thing, largely
>> unpredictable and only very partially grounded on technical issues.
>> For short, I do not think you can use `widely viewed as a failure'
>> as an argument.
>
> So you think the Fifth Generation Project was a success? Can you give
> your arguments for that?
I have no opinion on that.
>> I think Prolog is ok for AI. Possibly by design a bit more suitable
>> than most other languages. Its failure as a mainstream language has
>> to do with the steep learning curve (which I think is rewarded in the
>> end) and practical issues such as lack of a standard covering a
>> language with all features programmers need. The question `which
>> Prolog?' should be far less frequent in comp.lang.prolog.
>
> Part of the trouble is that the word "Prolog" is sometimes used to
> mean "any logic programming language". That's a bit like using "Lisp"
> to mean "any functional programming language" or "Fortran" to mean
> "any imperative programming language". I think "Prolog" should be
> resticted to mean a type-free logic language with depth-first search
> with backtracking. However, when people bring in Prolog problems
> to comp.lang.prolog, mostly that's what they *do* mean (except the
> Turbo-Prolog crowd) so I think the idea that there's loads of different
> Prologs is a bit exaggerated - mostly we can all agree on a common core.
Yes, but the common core is about large enough for an CS course on
overview of languages covering Prolog in a few weeks (ok, exaggerating
a bit). Its definitely too small to write a real program. Worse, it
doesn't provide much hope if I want to effortlessly use a bit of code
found on the web. There isn't a CPAN for Prolog and there can't be
one as the common core is too small and *common* support for
modularity too weak. CPAN like archives is what makes Perl, Java and
many more attractive (or do you claim Perl is an elegant language?).
> A big part of the original argument for Prolog was that it must be
> much easier to use than conventional prgramming languages, because
> it is based on a human notation (logic) whereas they are based on
> machine architecture. I think this argument fails miserably - it is
> clear from the constant enquiries we get from novices in comp.lang.prolog
> that Prolog is *not* an easy language for most people to use. If we
Agreed. People are not logic-based nor automata (?). You have to
learn them both. They are very different views though, and *is*
hard to switch (either way).
> say it has a "steep learning curve" we have thrown away the prime
> argument for it that it is easy and natural for humans to use.
> I'm interested to know why this is, because I'm one of those people
> who does find recursion and declarative style programming easy and
> natural to use. However, my fifteen years experience of teaching
> programming has led me to believe that I'm unusual in this. I find
Moving to Prolog from Algol (in the Dijkstra tradition, not allowed
to use recursion :-) was hard. Now it is totally natural to me and
my knowledge of Prolog possitively influences my thinking if I write
C. I do not recall how difficult it was to learn Dutch too :-)
> that most ordinary people have terrible difficulties grasping the
> style, even if that's how they are taught to program at from the start.
> Somehow it really does seem to be the case that the imperative style
> is more intuitive for most human beings.
I wouldn't be surprised. Would be nice if someone actually tested this.
> Object-oriented programming has a steep learning curve from structured
> programming. I know because I've had to climb that learning curve.
> It took me a long time, and I think I'm a reasoably smart guy. Yet
> plenty of people *have* made that learning curve, and I think it's
> because there are real benefits at the end. So that makes me sceptical
> again of the "learning curve" argument as to why people don't use Prolog
> and other declarative languages.
An advantage of Java/C++/... etc. is that you can start using simple
imperative style programming and pick up the OO gradually. Looking
at real-life OO code I'm not sure "plenty of people *have* made that
learning curve" :-) True though, for Prolog the situation is even
worse.
> To say that Prolog has not been given its chance is nonsense. As has
> already been said in this thread, other programming languages which
> have had far less promotion have ballooned in usage. Prolog has had the
> huge advantage of being taught to large numbers of Computer Science
> undergraduates - it still is, which is why comp.lang.prolog is
> dominated by "solve my homework" queries - things like Perl and PHP
> never had that, yet they have taken off even though they started when
> Prolog was already decades old. We who are interested in programming
PHP because it solves a very specific problem. You could have come up
with a Prolog-style PHP. Although processing web-pages is something
Prolog is well suited for, it wouldn't have worked. Most PHP is just
text, some simple conditions and calling some external database or other
module and the people writing PHP can hardly be called programmers
(though some people claim people writing HTML are programmers; it isn't
even Turing complete :-).
Perl has CPAN and there is only one Perl. People like it because they
can grasp modules, add a little glue and have a nice working program.
> languages and who think there is something in Prolog and the declarative
> ideal for programming have to acknowledge this and seriously consider
> where we have gone wrong. We are never going to get anywhere if we
> deny there's a problem, if we bury our heads in the sand and say
> "it's all the fault of everyone else, there's nothing wrong with our
> product".
There are very big problems. The lack of a satisfying standard is the
most important. It makes it impossible for a comprehensive Prolog
archive to emerge. Some individual systems have extensive resources
available, but there are hardly any portable resources. Logtalk may
be one of the few. All systems fall short somewhere, both in their
implementation (not portable, too slow, not scalable, not extensible,
...) and their support for real world tasks (interfaces to languages,
networking, basic network protocols (HTTP/SOAP/CORBA/...), graphics,
databases, internationalization, etc, etc.).
Commercial systems seem to concentrate on the logic engine and rely
on embedding in other languages for other tasks and/or give up
portability. No player in the field has the resources to do what
SUN and some other players have done to Java: provide a comprehensive
system. I do not believe in multilingual systems (possibily with
the exceptions of systems designed from the bottom up to cooperate
such as Poplog). They are hard to master, require learning two
languages, bloated, etc.
Cheers --- Jan
- Next message: Torkel Franzen: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Previous message: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- In reply to: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Next in thread: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Reply: Matthew Huntbach: "Re: Is Prolog good for AI? (was: Minsky still posting)"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|