Re: Minsky still posting

From: Patrick Herring (ph_at_anweald.co.uk)
Date: 03/18/05

  • Next message: Nameless: "Re: Minsky still posting"
    Date: Fri, 18 Mar 2005 22:19:18 +0000
    
    

    | Matthew Huntbach <mmh@dcs.qmul.ac.uk> wrote:
    |
    | On Fri, 17 Mar 2005 rafe@cs.mu.oz.au wrote:
    | > Matthew Huntbach wrote:
    | >> On Wed, 16 Mar 2005 examachine@gmail.com wrote:
    | >>> Matthew Huntbach wrote:
    ...
    | >> I think the relatively simple control mechanism of Prolog is the
    | >> reason for its longevity.
    |
    | > Prolog's control mechanism is anything but simple (cf. cuts,
    | > assert, retract, var/nonvar, variable identity etc.) The
    | > correspondence between a Prolog program and a set of logical
    | > formulae collapses if you use any of these tools and often
    | > even if you don't (Prolog does not, for instance, reorder
    | > goals to ensure that the operational semantics of a program
    | > match the expected denotational semantics).
    |
    | Yes, I always think of Prolog purely in operational terms, which
    | is what I've been getting at in this thread. I don't think it works
    | to try and think of it as "executable logic". But trying to make
    | programming languages more like executable logic increases the
    | complexity of them in operational terms. With Prolog, it's knowing
    | the goals will be executed just in one order that makes it easy
    | to comprehend.
    ...
    | >>> Ok. But we write programs in poor languages like C/C++ or Java. I
    | >>> don't regard these languages as good OOP languages even.
    |
    | >> Neither do I, but they must have something going for them for people
    | >> to use them.
    |
    | > The programming "market" obviously doesn't select tools on technical
    | > merit. A whole bunch of reasons could be advanced including similarity
    | > to familiar tools (C -> C++ -> Java -> C#), that most of the graduates
    | > we churn out can't get past the imperative model, impressive hype
    | > machines (e.g. object orientation, Perl, XML are generally asserted as
    | > being good, without any real evidence), and so forth.
    |
    | No, the point I've already made is that a lot of these *didn't* have
    | impressive hype machines. Perl and C++ were both one-man ideas that
    | grew because they seemed to fill a need.

    Hmm, hasn't Perl's hype machine been the "if you want to join the club
    of Unix gurus learn this really obscurantist language" line, which
    worked a treat. And C++'s was "C is really useful in the real world,
    look at all these jobs, and C++ is better" (I don't think we know how
    many people use a C++ compiler but actually almost all their code is C).
    PHP/MySQL's has been the web-shop revolution for which it simply works
    brilliantly, and Python's has been "you didn't like Perl, neither did
    we, and you surely don't want to resort to Basic".

    |Java did have the hype, but
    | I think it's a reasonable clean-up of C++. I use C as essentially
    | a structured assembly language, and I use Java as a practical language
    | which has a lot of back-up and is a reasonable implementation of some
    | of the abstract OOP idea - but I have always refused to touch C++ as
    | it's an ugly mess which falls between the two.
    |
    | I do think that object-orientation has something serious going for it.

    Code portability mostly, IMHO. I'm not convinced you couldn't get the
    same benefit from code analysis tools, and then you wouldn't have to pay
    the heavy price of adopting an OO mindset for everything.

    | I think the lack of appreciation of that amongst most academics
    | involved in programming language work was a prime reason why the
    | languages that academics have put so much work into - the functional
    | and logic ones - have made so little headway in the world outside
    | academia. Sorry, I think we academics are guilty of a "not invented
    | here" mentality when it comes to our attitude towards OOP.

    I've done enough years down the COBOL mines to be able to report that
    the problem with academia is assuming that the algorigthm's the problem.
    Commercial data processing is more akin to librarianship than AI. IMHO
    what could have succeeded out there, even over SQL, is a solution to the
    million-line deductive database problem, and I'd say it still would do
    if anyone found one.

    COBOL is another example of something that succeeded precisely because
    it's simple. It also got a lot of other things (DB access and screen
    handling mostly) added on top, just like CPAN except commercial. Come to
    think of it it too was touted as a general best language since it was
    "in English", ha ha ha.
     
    | >> Functional and logic languages have had huge amounts of academic
    | >> backing and have been forced down the throats of generations of
    | >> Computer Science students. Other languages, which never had that
    | >> backing, have taken off. C++ was just Stroustrup's little idea
    | >> originally, wasn't it? I think its success compared to the lack of
    | >> success of langauge like Prolog indicates that it does have something
    | >> more useful which is fundamental to it, even if it's not the best
    | >> way of presenting that useful thing.
    |
    | > I'd argue that C++' "something useful" is (a) it's percieved similarity
    | > to what everyone's familiar with, namely C, and (b) it's perceived
    | > advantages over C. But it's not clear to me that either (a) or (b) is
    | > true, or at any rate true enough to support C++' uptake on technical
    | > grounds.
    |
    | Didn't C itself grow up in general usage at a time when most
    | university CS programs would have been taught in Pascal? C caught on
    | because it had something going for it i.e. closeness to the raw
    | machine.

    Wasn't it also the "Unix guru" aura, like with Perl?
     
    | >> Funny, I never see the sort of people who post homework problems
    | >> to comp.lang.prolog mentioning classes. Nor do I see anyone else.
    |
    | > Judging by their postings, 99% of the people who post to c.l.p asking
    | > for homework help have got to be somewhere near the bottom end of the
    | > academic bell curve. But...
    |
    | You may think that, but my experience of teaching programming (in Prolog
    | as well as Java and years back in Pascal and C) is that most
    | ordinary joes are about that level. We to whom Prolog and declarative
    | style programming seems obvious and intuitive are a small minority.

    Agreed <g>. I had a real struggle learning Prolog from an imperative
    background, and I did so by switching on trace and learning to read the
    code operationally. I've yet to meet a Prolog programmer who didn't do
    the same (including you by your comment above). I've always assumed the
    logical reading meant there would be some systematic transformations
    available into new formalisms, or that better provers could run the same
    code better with less risk of re-coding being necessary.

    I suppose it depends on what you think computers are for: if you see
    them as doing real-world tasks automatically that you'd otherwise have
    to do by hand then the imperative mindset is natural. Physical sequence
    is essential to the "real world" e.g. try putting on your socks & shoes
    in the wrong order - SLD appears not to care but in fact just hides the
    shoe-removal backtracking under the cover of logical validity. ISTM that
    small example shows everything necessary to understand why most people
    find Prolog non-intuitive.
     
    | > I'd like to finish by making a point of my own. It seems to me that
    | > this argument over what makes a good AI programming language is
    | > premature. Before you can have such a debate, you should have a
    | > pretty good idea of what it is you want to be able to express. So
    | > far I've only seen vague statements and hand waving along these lines.
    |
    | Yes, but that brings me back to one of the points I was making, which
    | was that the Fifth Generation Project started when the logic-based
    | approach to AI was at the height of fashion.

    ISTR hearing the main goal of the FGP was to gear up a whole generation
    of Japanese IT researchers, hence the choice of a theme that had both
    software and hardware aspects. Then there was the, surely scurrilous,
    rumour that the whole thing was in the hope of making a word processor
    for Japanese...

    | So it was supposed you
    | could define intelligent behaviour by logic, and then implement it
    | with a programming language which was executable logic. Personally
    | I don't think the idea of what makes a "good AI programming language"
    | is very useful, because there are so many different sorts of AI which
    | requires different sorts of programming. AI has been useful in giving us
    | tricky programming problems, with the languages developed to cope with
    | these spinning off to more general usage. So I don't think there's really
    | a distinction between "a good AI programming language" and "a good
    | general purpose programming language".

    ISTR the idea was that you have all these problems expressible in FOPC
    clauses so a FOPC evaluator would solve them all, assuming it didn't add
    too much big O of it's own. Difficult to argue with that...

    --
    Patrick Herring, http://www.anweald.co.uk/ph
    

  • Next message: Nameless: "Re: Minsky still posting"

    Relevant Pages

    • Re: Sublists question
      ... I do not really get what the predicate means or does. ... >>helps just to write the predicate out clearly in natural language, ... >>then translate into Prolog. ... more as a functional programming language than as a logic ...
      (comp.lang.prolog)
    • Re: Real World Applications
      ... For Prolog `in the wild', that may be true, I see a lot of really ugly ... As long as people follow shared design ... I don't think that is a real issue with the language. ... graduate courses in logic and logic programming. ...
      (comp.lang.prolog)
    • Re: Mainstreaming Prolog a Pragmatic Approach?
      ... experience is that Prolog is an incredibly useful language for virtually all ... often than not end up using Prolog. ... I think you're right when you question whether logic programming really ...
      (comp.lang.prolog)
    • Re: Discussion: Is prolog domain specific?
      ... The availability of exhaustive search lets you program things ... this cannot be the basis for a general purpose programming language. ... > solution for it in Prolog. ...
      (comp.lang.prolog)
    • Re: Minsky still posting
      ... pushing Prolog out of the way as the standard logic programming ... I think the lack of appreciation of that amongst most academics ... involved in programming language work was a prime reason why the ...
      (comp.lang.prolog)