Home > Archive > Prolog > March 2005 > Is Prolog good for AI? (was: Minsky still posting)
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Is Prolog good for AI? (was: Minsky still posting)
|
|
| alex goldman 2005-03-14, 8:58 pm |
| Matthew Huntbach wrote:
> The reasoning is sometimes made "AI involves search, Prolog involves
> search, therefore Prolog is good for AI".
You seem to be implying Prolog is not good for AI.
I think I disagree. My line of reasoning is as follows: what's good for
inductive learning should be good for AI. Some of the most sophisticated
inductive learning systems to date are based on ILP and use Prolog. Thus,
Prolog is good for AI.
What would happen if we used a language that is either (a) more expressive
than Prolog (FOL, HOL, etc.), or (b) less expressive than Prolog (Datalog,
semantic nets, etc.), or (c) altogether different (Pascal*) in an ILP-like
system? This is something I have much interest in. It does seem however,
that AI researchers found Prolog to be a sort of optimum in the
language-space.
| |
| Bert Van Nuffelen 2005-03-15, 8:57 am |
| alex goldman <hello@spamm.er> wrote in message news:<1644137.YIpMxAxXqL@yahoo.com>...
> Matthew Huntbach wrote:
>
>
> You seem to be implying Prolog is not good for AI.
>
> I think I disagree. My line of reasoning is as follows: what's good for
> inductive learning should be good for AI. Some of the most sophisticated
> inductive learning systems to date are based on ILP and use Prolog. Thus,
> Prolog is good for AI.
>
> What would happen if we used a language that is either (a) more expressive
> than Prolog (FOL, HOL, etc.), or (b) less expressive than Prolog (Datalog,
> semantic nets, etc.), or (c) altogether different (Pascal*) in an ILP-like
> system? This is something I have much interest in. It does seem however,
> that AI researchers found Prolog to be a sort of optimum in the
> language-space.
hmm, I'll think that most AI-language researchers will disagree with
your last conclusion. It is not because (pure) Prolog is used as a
reference point in the design of representation languages, or
(extended) Prolog is used as the main implementation platform for
interpreters for new languages that AI-researchers are *satisfied*
with it. Actually the insatisfaction with Prolog as representation
language has been a driving force in the development of new and better
representation languages (and interpreters for them): e.g. negation.
Some pointer tags :
* Answer Set Programming (WASP = workgroup on Answer Set Programming)
* Abductibe Logic Programming
* inductive definition logic (ID-Logic), default logic,
circumscription, Description Logics, ...
All these are extensions to the original idea of knowledge
representation in which pure Prolog originates: they want to offer a
modeling language containing the natural constructs to capture our
human knowlegde.
Moreover, when using a formal language to represent knowlegde as a
human we like to have a very expressive language (because it allows
compact representations) and an 'easy computable' language (because we
want to solve a problem). Since we can't have both at the same time,
there is a tradeoff to be made. This tradeoff is subject to your
taste, the problem domain that the language should capture and the
problems you want to solve with the specified knowlegde. In
Description Logics field this tradeoff has been "semi-formalized" in
the attempt of finding for each variant of a DL the corresponding
computational complexity. In principle, if you know the problems you
want to solve and the 'size' of the theories you want to write, you
can select the optimal language for your needs.
regards,
Bert
| |
| Matthew Huntbach 2005-03-15, 8:57 am |
| On Mon, 14 Mar 2005, alex goldman wrote:
> Matthew Huntbach wrote:
[color=darkred]
> You seem to be implying Prolog is not good for AI.
>
> I think I disagree. My line of reasoning is as follows: what's good for
> inductive learning should be good for AI. Some of the most sophisticated
> inductive learning systems to date are based on ILP and use Prolog. Thus,
> Prolog is good for AI.
I was writing in the context of discussing why the Fifth Generation is
widely viewed as a failure. I think a big reason was a grossly
exaggerated view of what could be achieved for AI through logic
programming. Saying that is not to say that Prolog is without value.
However, I think if we are to advance research we have to be realistic
about our failures. AI in particular seems to proceed in waves of
hype where the latest fashionable technique is assumed to be the
answer to everything, followed by a backlash where that technique
is dismissed and even what was usefuo about it is lost.
So, yes, good, Prolog has a role in ILP. But there is more to AI than
ILP.
Matthew Huntbach
| |
| examachine@gmail.com 2005-03-15, 3:59 pm |
| Matthew Huntbach wrote:
>
> I was writing in the context of discussing why the Fifth Generation
is
> widely viewed as a failure. I think a big reason was a grossly
> exaggerated view of what could be achieved for AI through logic
> programming. Saying that is not to say that Prolog is without value.
> However, I think if we are to advance research we have to be
realistic
> about our failures. AI in particular seems to proceed in waves of
> hype where the latest fashionable technique is assumed to be the
> answer to everything, followed by a backlash where that technique
> is dismissed and even what was usefuo about it is lost.
>
> So, yes, good, Prolog has a role in ILP. But there is more to AI than
> ILP.
I agree.
There may be a deeper problem with Prolog. It might make you think that
human knowledge can be accurately modeled with a logical language, or
that it is the right/only tool to represent knowledge, which seems
wrong. I prefer a general computationalist approach, for which LISP
seems better suited.
Otherwise, there is no difference between two programming languages, it
takes a constant program to simulate any other language.
Regards,
--
Eray Ozkural
| |
| Jan Wielemaker 2005-03-15, 3:59 pm |
| On 2005-03-15, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
> On Mon, 14 Mar 2005, alex goldman wrote:
>
>
>
> I was writing in the context of discussing why the Fifth Generation is
> widely viewed as a failure. I think a big reason was a grossly
National programs like the Fifth Generation generally are -at least
from the technical viewpoint- almost a failure by design in my
opinion. 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.
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.
Cheers --- Jan
| |
| Matthew Huntbach 2005-03-16, 8:57 am |
| On Tue, 15 Mar 2005, Jan Wielemaker wrote:
> On 2005-03-15, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
[color=darkred]
> 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.
The main thing it did was develop and explore the possibilities
of a programming language. Again, the level of misunderstanding of the
Fifth Generation Project is shown by the widespread belief that this
programming language was "a version of Prolog". It wasn't - it was
a language that looked like Prolog syntactically, but had a very different
operational behaviour. I do not think this programming language work
can be called a success, since the programming language developed
gained so little use that hardly anyone knows what it is and how it
works now. Personally I think it was a good language, which is why
I am one of the few people in the world still using it and thinking
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.
> 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 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.
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
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
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.
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.
Sorry, I used to believe the old arguments that the problem was all
down to people being "brain-damaged" by Basic etc, but in the school
of hard-knocks, constant mental fights with students "WHY can't these
guys grasp this stuff?" I now have to concede that I was wrong.
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
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".
Matthew Huntbach
| |
| Jan Wielemaker 2005-03-16, 8:57 am |
| On 2005-03-16, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
> On Tue, 15 Mar 2005, Jan Wielemaker wrote:
>
>
>
> 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 :-)
>
> So you think the Fifth Generation Project was a success? Can you give
> your arguments for that?
I have no opinion on that.
>
> 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 w s (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
| |
| Torkel Franzen 2005-03-16, 4:00 pm |
| Matthew Huntbach <mmh@dcs.qmul.ac.uk> writes:
> If we
> 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.
Programming languages in general are difficult and unnatural for
humans to use. Prolog is, on the whole, no worse than other languages,
and it's quite useful. So whether or not we are fanatical Prolog
enthusiasts doesn't make a whole lot of difference, any more than
whether or not we are fanatical C enthusiasts or fanatical Lisp
enthusiasts or fanatical English enthusiasts or fanatical Esperanto
enthusiasts. We just have the noble aim of babbling usefully away in
whatever language we happen to like or be stuck with.
| |
| Matthew Huntbach 2005-03-17, 3:58 pm |
| On Wed, 16 Mar 2005, Torkel Franzen wrote:
> Matthew Huntbach <mmh@dcs.qmul.ac.uk> writes:
[color=darkred]
> Programming languages in general are difficult and unnatural for
> humans to use. Prolog is, on the whole, no worse than other languages,
> and it's quite useful.
I'm not convinced of either of these. comp.lang.prolog regularly gets
"solve my homework" mails from people who seem to find Prolog more
difficult than other languages. My own experience of teaching programming
leads me to believe that most people do think in an imperative way and
hence find declarative-style programming difficult - those of us
(myself included) who find it easy are a small and unusual subset
of humanity. It's taken me a long time to concede this is the case
rather than keep trying to put up the sort of excuses that have been
put up against me in this thread. I think Prolog has additional
complexities - its bactracking mechanism is a huge source of
bafflement, and its lack of syntactic modes is a source of confusion
and syntactic non-obviousness that has little of the advantages that
are claimed for it (only some toy Prolog programs really work "in reverse").
I think Prolog has had enough exposure now that if there were large areas
where it was the most appropriate language to use, it would have gained
wider usage.
Matthew Huntbach
| |
| Matthew Huntbach 2005-03-17, 3:58 pm |
| On Wed, 16 Mar 2005, Jan Wielemaker wrote:
> On 2005-03-16, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
[color=darkred]
> 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 :-)
I assume you meant, from what I wrote, to put a "not" before "Prolog"
in the above. The Fifth Generation Project certainly started off
thinking it was about Prolog. I think this was a major part of the
problem - it had absorbed a lot of the Prolog hype and thus assumed
that implementing a Prolog-like language would mean enormous leaps in
developing AI, and also that Prolog would be easily adapted to paralle
execution, whereas it is actually a language with a heavy dependence on
sequentiality (because it revolves around sequential use of one
resource - the stack of bactracking points).
[color=darkred]
> Yes, but the common core is about large enough for an CS course on
> overview of languages covering Prolog in a few w s (ok, exaggerating
> a bit). Its definitely too small to write a real program.
I think therefore you concede my point. To me, the common core *is*
Prolog. Overloading it with all sorts of other things in order to make
a useful language means what you end up with *isn't* Prolog, it's
something else. When the Fifth Generation Project was started, this
idea that Prolog was too small to be useful wasn't around, rather the
idea around was that Prolog was a very special advanced language.
> 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 :-)
Me too (I mean in moving to Prolog, I never learnt Dutch ...).
I write declarative-style programs in C and Java. To me that's the
natural way to write programs.
[color=darkred]
> I wouldn't be surprised. Would be nice if someone actually tested this.
It has been tested. There was a fashion for a while amongst
university Computer Science departments to start students programming
with a declarative language and only later move to an imperative
language. In at least one case, the declarative language was Prolog,
though more often it was a functioal language. There are some university
CS departments which do this to this day (Cambridge is an example, I think).
Now, even though the departments which did this tended to be those who
took on the smartest students, it still seems to have had no impact.
I used to accept the argument that this was due to conservatism in the
real world. But that argument has been shaken by the readiness of the
real world to accept other new languages, which had none of the backing
that Prolog had. The object-oriented revolution, with its C++, crept up
on us while most academics were still thinking that in time everyone
would come to program in functional or logic languages. I agree C++
is a mess - I've refused to use it because of that. Nevertheless it
obviously had something useful showsn bh the way it rapidly spread.
Why didn't Prolog spread like that?
> 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.
One of the reasons OOP works is because it can act as a glue tying together
different resources. Prolog doesn't work like that.
> 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.
Not in the OOP style where you can package up your use of the other language
in an object. When I use stuf from the Java library, how do I know that
I am using just Java? The stuff I'm using may well be programmed in
something else, so I am using a multilingual system.
Matthew Huntbach
| |
| Torkel Franzen 2005-03-17, 3:58 pm |
| Matthew Huntbach <mmh@dcs.qmul.ac.uk> writes:
> I'm not convinced of either of these. comp.lang.prolog regularly gets
> "solve my homework" mails from people who seem to find Prolog more
> difficult than other languages.
Quite possibly, Prolog is marginally more difficult and unnatural
for humans to use than other programming languages! This doesn't
really make any difference, though, since programming is a difficult
and unnatural activity whatever language we use.
| |
| Matthew Huntbach 2005-03-17, 3:58 pm |
| On Thu, 17 Mar 2005, Torkel Franzen wrote:
> Matthew Huntbach <mmh@dcs.qmul.ac.uk> writes:
[color=darkred]
> Quite possibly, Prolog is marginally more difficult and unnatural
> for humans to use than other programming languages!
But one of its main selling points when it was first developed was
that it would be easier and more natural for humans to use than other
programming languages!
Matthew Huntbach
| |
| Torkel Franzen 2005-03-17, 3:58 pm |
| Matthew Huntbach <mmh@dcs.qmul.ac.uk> writes:
> But one of its main selling points when it was first developed was
> that it would be easier and more natural for humans to use than other
> programming languages!
That was in the old days! Esperanto may be no more easy or natural
than Klingon, but both are quite useful.
| |
| anders t 2005-03-17, 3:58 pm |
| Quoting Matthew Huntbach in comp.lang.prolog:
>I'm not convinced of either of these. comp.lang.prolog regularly gets
>"solve my homework" mails from people who seem to find Prolog more
>difficult than other languages.
Shouldn't it read "logic programming more difficult than other programming
paradigms"? /Possibly/ because it's not the first paradigm students learn.
I seem to remember some logic paradigm proponents talking about
"contamination"...
--
All that we see, or seem,
is but a dream, within a dream,
installed by the Machine
| |
| examachine@gmail.com 2005-03-17, 8:57 pm |
|
Torkel Franzen wrote:
> Matthew Huntbach <mmh@dcs.qmul.ac.uk> writes:
>
other[color=darkred]
>
> That was in the old days! Esperanto may be no more easy or natural
> than Klingon, but both are quite useful.
Torkel, I can't imagine you speaking Klingon, perhaps Lojban would be
more appropriate for you?
Cheers,
--
Eray
| |
| Jan Wielemaker 2005-03-18, 3:59 pm |
| Matthew,
On 2005-03-17, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
> On Wed, 16 Mar 2005, Jan Wielemaker wrote:
>
>
>
> I assume you meant, from what I wrote, to put a "not" before "Prolog"
My english is worse than my Prolog, but to me "A nor B" means
not(A) and not(B)!?
> in the above. The Fifth Generation Project certainly started off
> thinking it was about Prolog. I think this was a major part of the
Thanks for the clarification.
>
> I think therefore you concede my point. To me, the common core *is*
> Prolog. Overloading it with all sorts of other things in order to make
> a useful language means what you end up with *isn't* Prolog, it's
> something else. When the Fifth Generation Project was started, this
I'm not talking about a different language. Most Prolog systems have
modules. Does that stop it being Prolog in your view? The nasty
thing is they have different module systems. Most Prolog systems have
built-ins and libraries providing useful things such as better access
to OS facilities, list processing primitives, etc. Most do it slighly
(or sometimes totally) different though. What would C++ be without
its standard libraries? Still C++, but it wouldn't be used much. Same
for Java, Perl, .... If I want to write a portable program that
involves reversing a list I must write reverse/2 myself. Many Prologs
have it in the library, but in different files, sometimes in a module,
sometimes not. There is no standard way to even load something from
the library. Its like C++ where each compiler has something different
for #include and library files are all called differently. Then C++
still has #ifdef ... In Prolog the closest is term_expansion/2, but
it is not covered by the standard, some systems lack it and their are
subtle but important differences between the systems that do have it.
>
>
> It has been tested. There was a fashion for a while amongst
> university Computer Science departments to start students programming
> with a declarative language and only later move to an imperative
> language. In at least one case, the declarative language was Prolog,
> though more often it was a functioal language. There are some university
> CS departments which do this to this day (Cambridge is an example, I think).
> Now, even though the departments which did this tended to be those who
> took on the smartest students, it still seems to have had no impact.
You mean impact on the popularity of Prolog? Impact on their programming
skills?
>
> One of the reasons OOP works is because it can act as a glue tying together
> different resources. Prolog doesn't work like that.
Why not? I can encapsulate resources in Prolog and write the glue.
Actually that is the most common application of Prolog at my institute.
>
> Not in the OOP style where you can package up your use of the other language
> in an object. When I use stuf from the Java library, how do I know that
> I am using just Java? The stuff I'm using may well be programmed in
> something else, so I am using a multilingual system.
I fail to see why you can do that with OO and not with Prolog. If you
want to stick with the common Prolog core it has too weak
encapsulation primitives, but many real systems out there can deal
with encapsulating external resources reasonable well. Typical examples
are database interfaces, graphical libraries, networking libraries, etc.
Lack of typing, named arguments and struct-like datatypes with named
files is a problem, but with some care we can get away with the standard
Prolog functionality.
The most common remark I get from the average IT person recalling
Prolog vaguely from a Universoty course is that they think it is a
`toy' language. If you show them real applications and give some
metrics on its development time, size of the code and overall
performance they are often very surprised. The most serious
problem I have convincing people is the lack of ready-to-use
libraries.
Cheers --- Jan
Newsgroups: comp.ai.philosophy,comp.lang.prolog
From: Jan Wielemaker <jan@ct.xs4all.nl>
Subject: Re: Is Prolog good for AI? (was: Minsky still posting)
References: <7777009.X1Neipf3FC@yahoo.com> <Pine.LNX.4.61.0503111347570.4677@frank.dcs.qmul.ac.uk> <4231afcb$0$18059$636a15ce@news.free.fr> <Pine.LNX.4.61.0503111600170.7582@frank.dcs.qmul.ac.uk> <1110564388.703848.127800@z14g2000cwz.googlegroups.com> <Pi
ne.LNX.4.61.0503141018350.14161@frank.dcs.qmul.ac.uk> <1110805288.694813.258960@g14g2000cwa.googlegroups.com> <Pine.LNX.4.61.0503141441400.20477@frank.dcs.qmul.ac.uk> <vcbvf7uxn5k.fsf@beta19.sm.ltu.se> <Pine.LNX.4.61.0503141630130.21988@frank.dcs.qmul.ac.
uk> <1644137.YIpMxAxXqL@yahoo.com> <Pine.LNX.4.61.0503151122390.9986@frank.dcs.qmul.ac.uk> <slrnd3dsoc.o1h.jan@ct.xs4all.nl> <Pine.LNX.4.61.0503160919580.1653@frank.dcs.qmul.ac.uk> <slrnd3g64d.svm.jan@ct.xs4all.nl> <Pine.LNX.4.61.0503171418490.4265@frank.
dcs.qmul.ac.uk>
Organization: SWI, University of Amsterdam
Reply-To: jan at nospam.swi.psy.uva.nl
Followup-To:
Matthew,
On 2005-03-17, Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
> On Wed, 16 Mar 2005, Jan Wielemaker wrote:
>
>
>
> I assume you meant, from what I wrote, to put a "not" before "Prolog"
My english is worse than my Prolog, but to me "A nor B" means
not(A) and not(B)!?
> in the above. The Fifth Generation Project certainly started off
> thinking it was about Prolog. I think this was a major part of the
Thanks for the clarification.
>
> I think therefore you concede my point. To me, the common core *is*
> Prolog. Overloading it with all sorts of other things in order to make
> a useful language means what you end up with *isn't* Prolog, it's
> something else. When the Fifth Generation Project was started, this
I'm not talking about a different language. Most Prolog systems have
modules. Does that stop it being Prolog in your view? The nasty
thing is they have different module systems. Most Prolog systems have
built-ins and libraries providing useful things such as better access
to OS facilities, list processing primitives, etc. Most do it slighly
(or sometimes totally) different though. What would C++ be without
its standard libraries? Still C++, but it wouldn't be used much. Same
for Java, Perl, .... If I want to write a portable program that
involves reversing a list I must write reverse/2 myself. Many Prologs
have it in the library, but in different files, sometimes in a module,
sometimes not. There is no standard way to even load something from
the library. Its like C++ where each compiler has something different
for #include and library files are all called differently. Then C++
still has #ifdef ... In Prolog the closest is term_expansion/2, but
it is not covered by the standard, some systems lack it and their are
subtle but important differences between the systems that do have it.
>
>
> It has been tested. There was a fashion for a while amongst
> university Computer Science departments to start students programming
> with a declarative language and only later move to an imperative
> language. In at least one case, the declarative language was Prolog,
> though more often it was a functioal language. There are some university
> CS departments which do this to this day (Cambridge is an example, I think).
> Now, even though the departments which did this tended to be those who
> took on the smartest students, it still seems to have had no impact.
You mean impact on the popularity of Prolog? Impact on their programming
skills?
>
> One of the reasons OOP works is because it can act as a glue tying together
> different resources. Prolog doesn't work like that.
Why not? I can encapsulate resources in Prolog and write the glue.
Actually that is the most common application of Prolog at my institute.
>
> Not in the OOP style where you can package up your use of the other language
> in an object. When I use stuf from the Java library, how do I know that
> I am using just Java? The stuff I'm using may well be programmed in
> something else, so I am using a multilingual system.
I fail to see why you can do that with OO and not with Prolog. If you
want to stick with the common Prolog core it has too weak
encapsulation primitives, but many real systems out there can deal
with encapsulating external resources reasonable well. Typical examples
are database interfaces, graphical libraries, networking libraries, etc.
Lack of typing, named arguments and struct-like datatypes with named
files is a problem, but with some care we can get away with the standard
Prolog functionality.
The most common remark I get from the average IT person recalling
Prolog vaguely from a Universoty course is that they think it is a
`toy' language. If you show them real applications and give some
metrics on its development time, size of the code and overall
performance they are often very surprised. The most serious
problem I have convincing people is the lack of ready-to-use
libraries.
Cheers --- Jan
| |
| Bill Spight 2005-03-18, 8:56 pm |
| Dear Jan,
>
> My english is worse than my Prolog, but to me "A nor B" means
> not(A) and not(B)!?
Actually, 'nor' means 'and not'. As in 'The Rime of the Ancient
Mariner':
Water, water, every where,
And all the boards did shrink;
Water, water, every where,
Nor any drop to drink.
'A nor B' means 'A and not B'.
Best regards,
Bill
| |
| oxforddictionary 2005-03-19, 8:04 pm |
| quote: Originally posted by Bill Spight
Dear Jan,
>
> My english is worse than my Prolog, but to me "A nor B" means
> not(A) and not(B)!?
Actually, 'nor' means 'and not'. As in 'The Rime of the Ancient
Mariner':
Water, water, every where,
And all the boards did shrink;
Water, water, every where,
Nor any drop to drink.
'A nor B' means 'A and not B'.
Best regards,
Bill
It is indeed an easy mistake for dutch people Jan should be forgiven:
nor looks(and sounds like) noch in dutch
wich means neither,I was surprised myself:
nor:
conj. Neither(archaic);and not,and no more,neither,and not either.
best regards,
Ton | |
| Stephen Harris 2005-03-20, 4:01 pm |
|
"Bill Spight" <bspight@pacXbell.net> wrote in message
news:423B38B2.E057E4E5@pacXbell.net...
> Dear Jan,
>
>
One writes neither A or B. Or neither A nor B.(preferred)
but it was Prolog nor AI
should be but it was neither Prolog nor AI
Your construction doesn't legitimately exist in English
and most educated speakers would guess you meant "not"
and "nor" was a typo. The sentence needed "neither".
| |
| Jan Wielemaker 2005-03-21, 8:56 am |
| On 2005-03-20, Stephen Harris <cyberguard1048-usenet@yahoo.com> wrote:
>
> "Bill Spight" <bspight@pacXbell.net> wrote in message
> news:423B38B2.E057E4E5@pacXbell.net...
>
> One writes neither A or B. Or neither A nor B.(preferred)
>
> but it was Prolog nor AI
>
> should be but it was neither Prolog nor AI
>
> Your construction doesn't legitimately exist in English
> and most educated speakers would guess you meant "not"
> and "nor" was a typo. The sentence needed "neither".
That was indeed the mistake. Thanks and sorry for the noise.
Cheers --- Jan
| |
| Matthew Huntbach 2005-03-21, 8:56 am |
| On Sun, 20 Mar 2005, Stephen Harris wrote:
> "Bill Spight" <bspight@pacXbell.net> wrote in message
[color=darkred]
[color=darkred]
> One writes neither A or B. Or neither A nor B.(preferred)
>
> but it was Prolog nor AI
>
> should be but it was neither Prolog nor AI
>
> Your construction doesn't legitimately exist in English
> and most educated speakers would guess you meant "not"
> and "nor" was a typo. The sentence needed "neither".
It's a reasonable mistake to make. In logic we sometimes talk of a
"nor" operator, as well as "and" and "or", so I think a non-native
speaker might suppose "A nor B" is as valid as "A and B" and "A or B"
if that non-native speaker is familiar with the technical usage of "nor".
I agree, in English "nor" only works if there's a preceding "not" or
"neither". I would say it's become rather archaic - one can imagine
older people using a construction with "nor" far more easily than younger
people.
Matthew Huntbach
| |
| ofxroddticnioray 2005-03-21, 8:27 pm |
| [QUOTE]Originally posted by Bill Spight
[B]Dear Jan,
>
> My english is worse than my Prolog, but to me "A nor B" means
> not(A) and not(B)!?
Actually, 'nor' means 'and not'. As in 'The Rime of the Ancient
Mariner':
Water, water, every where,
And all the boards did shrink;
Water, water, every where,
Nor any drop to drink.
'A nor B' means 'A and not B'.
Best regards,
Bill
It is indeed an easy mistake for dutch people Jan should be forgiven:
nor looks(and sounds like) noch in dutch
wich means neither,I was surprised myself:
nor:
conj. Neither(archaic);and not,and no more,neither,and not either.
best regards,
Ton | |
| alex goldman 2005-03-22, 3:58 am |
| Matthew Huntbach wrote:
> So, yes, good, Prolog has a role in ILP. But there is more to AI than
> ILP.
Since you are/were interested in ILP and also seem to be in the business of
inventing new, better Prologs, I'll take this opportunity to ask: what are
your thoughts, if any, on Mercury, Goedel, lambda-Prolog and their
potential suitability for ILP?
| |
| Stephen Harris 2005-03-22, 3:58 am |
|
"alex goldman" <hello@spamm.er> wrote in message
news:1976752.6KEoVs2PcO@yahoo.com...
> Matthew Huntbach wrote:
>
>
> Since you are/were interested in ILP and also seem to be in the business
> of
> inventing new, better Prologs, I'll take this opportunity to ask: what are
> your thoughts, if any, on Mercury, Goedel, lambda-Prolog and their
> potential suitability for ILP?
This is not my idea of a scientific outline detailing the advent of
super-intelligent AI.
http://www.ssec.wisc.edu/~billh/gotterdammerung.html by Bill Hibbard
Part I. Humans will Create Super-intelligent Machines
http://www.ssec.wisc.edu/~billh/g/chapter2.html
"The enormous complexity of human brains also provides confidence that
the failure of computers to exhibit truly intelligent behavior is due
to their simplicity compared to human brains. Even the most optimistic
technology projections don't predict computers with the same complexity
as the human brain until about the year 2020. But it will probably
take longer than that, plus a few decades to figure out how to program
it for intelligence. My guess is that people will probably develop
intelligent machines some time around the year 2100, just to put it
in round numbers."
http://www.ssec.wisc.edu/~billh/g/chapter9.html
Chapter 9. Visions of [SH: compassionate] Machine Intelligence
"Increasing numbers of people are writing about the coming of
intelligent machines. As described in a previous chapter, some argue
it is impossible. Others think it is possible and are concerned with
predicting the nature of intelligent machines and their relationship
with humans. In this chapter I consider their ideas and how they
relate to the ideas in this book."
| |
| Matthew Huntbach 2005-03-22, 3:59 pm |
| On Mon, 21 Mar 2005, alex goldman wrote:
> Matthew Huntbach wrote:
[color=darkred]
> Since you are/were interested in ILP and also seem to be in the business of
> inventing new, better Prologs, I'll take this opportunity to ask: what are
> your thoughts, if any, on Mercury, Goedel, lambda-Prolog and their
> potential suitability for ILP?
No, I am not in the business of "inventing new, better Prologs". I
have made that quite clear in my articles. So far as I am concerned
at the moment I am interested in making use of the simple little
concurrency notation that owes its origin to the Fifth Generation
Project, but which is neither Prolog, nor "executable logic" in
the way that the founders of Prolog wanted it to be. Other people
may be interested in languages which are closer than Prolog is to
being "executable predicate logic" or which add on extra programming
features to Prolog. I am not, or at least while I might be interested
in seeing what these people are doing, it's not what I'm doing now
nor what I am planning to do at any time in the future.
In fact I'm completely and utterly fed up with finding my work
dismissed because people assume, because it had some remote origin
in the logic programming world, that it must be about "new, better
Prolog".
Matthew Huntbach
| |
|
| Having had a quick look at one of the paper's on your
homepage, wouldn't it be more accurate to dismiss your
work as being a reinvention of CSP or Occam?
Ok, upon rereading that does sound somewhat harsh, and I'm
quite a fan of both Prolog and concurrent language so
let me ask the more pertinent question - what is the
difference between what you have done and an imperative
language with synchronous channels for communication?
They both appear to have similar structure, to encode
conncurrency in the same way, and without backtracking, to
have a similar control flow.
Amoss
| |
| Matthew Huntbach 2005-03-23, 3:58 pm |
|
On Wed, 23 Mar 2005, Amoss wrote:
> Having had a quick look at one of the paper's on your
> homepage, wouldn't it be more accurate to dismiss your
> work as being a reinvention of CSP or Occam?
>
> Ok, upon rereading that does sound somewhat harsh, and I'm
> quite a fan of both Prolog and concurrent language so
> let me ask the more pertinent question - what is the
> difference between what you have done and an imperative
> language with synchronous channels for communication?
> They both appear to have similar structure, to encode
> conncurrency in the same way, and without backtracking, to
> have a similar control flow.
Assuming this is addressed to me, why yes, if the language
can be viewed in one interpretation as CSP, that's fine.
The nice thing about it is that, yes, one subset of it
does look very much like CSP. But another subset looks
and behaves very much like conventional functional programming,
a third subset looks like conventional imperative programming,
and another way of looking at it looks like object-oriented
programming of the Actors variety. All this in a framework
which compiles to a simple concurrent notation which gives it
its operational semantics. The whole is within a coherent
symbolic language, it doesn't seem to me as if it's overloaded
with features or the different aspects don't work together.
I think this makes it rather nice, though it's very much an
experiment rather than a fully worked out thing. BTW, it
uses asynchronous communication, not synchronous, though it's
trivial to program the communicaton to make it synchronous if
desired.
Matthew Huntbach
| |
|
| Ah, sounds as if I misread your paper. That sounds quite
interesting, do you have a simple example of using it in a
functional style (eg a 5-liner)? What you've described sounds
more like Alistair Campbell's Min, which uses an underlying
concurrent calculus with several language layers on-top to
give different programming models.
Amoss
| |
| Matthew Huntbach 2005-03-25, 8:57 pm |
| "Amoss" <andrewmoss@gmail.com> wrote:
> Ah, sounds as if I misread your paper. That sounds quite
> interesting, do you have a simple example of using it in a
> functional style (eg a 5-liner)? What you've described sounds
> more like Alistair Campbell's Min, which uses an underlying
> concurrent calculus with several language layers on-top to
> give different programming models.
Not sure if my previous message got through - am posting from home,
not work, having to use Google, which is playing up. Anyway, try
looking at part of my Aldwych tutorial:
http://www.dcs.qmul.ac.uk/~mmh/aldw...rial/part6.html
Matthew Huntbach
|
|
|
|
|