[HN Gopher] The birth of Prolog (1992) [pdf]
       ___________________________________________________________________
        
       The birth of Prolog (1992) [pdf]
        
       Author : alokrai
       Score  : 56 points
       Date   : 2021-02-22 12:51 UTC (1 days ago)
        
 (HTM) web link (alain.colmerauer.free.fr)
 (TXT) w3m dump (alain.colmerauer.free.fr)
        
       | ProfHewitt wrote:
       | As Kowalski has acknowledged and reported by others, Prolog was
       | invented as a subset of Planner that only implemented backward
       | chaining.
       | 
       | See the following for further information:
       | 
       | "Middle History of Logic Programming: Resolution, Planner, Prolog
       | and the Japanese Fifth Generation Project" ArXiv 2009.
       | 
       | https://dev.arxiv.org/abs/0904.3036
        
         | inetsee wrote:
         | The link provided takes me to a "Test server", and an abstract
         | titled "Inconsistency Robustness in Logic Programs". Clicking
         | on the pdf download link returns "Not Found". Searching arxiv
         | for "middle history of logic programming" produces no results.
         | 
         | I would really like to read more about Planner, but I have had
         | no luck searching for this paper.
        
           | buescher wrote:
           | https://www.cs.unm.edu/~eschulte/classes/cs550/data/middle-h.
           | ..
        
             | inetsee wrote:
             | Thank you very much for helping me find this paper, but I
             | am still somewhat confused.
             | 
             | When I couldn't find the paper in arxiv, it didn't occur me
             | at first to go back to the beginning and use a general
             | search engine. When I did plug the title into DDG it took
             | me to arxiv, which had the expected abstract and a working
             | link to the pdf. But doing another search in arxiv returned
             | "No Results", even though I had put in the exact title from
             | the abstract I was just looking at.
             | 
             | A little more digging uncovered the fact that the paper in
             | question has gone through 41 revisions, and somewhere along
             | the line the title was changed from "Middle History of
             | Logic Programming: Resolution, Planner, Edinburgh LCF,
             | Prolog and the Japanese Fifth Generation Project" to
             | "Inconsistency Robustness in Logic Programs", which is
             | still rattling my brain a little bit.
             | 
             | edit: The working link I found is
             | https://arxiv.org/abs/0904.3036v22
        
               | andrekandre wrote:
               | thats interesting, one slightly different link i found
               | was
               | 
               | https://arxiv.org/pdf/0904.3036.pdf
               | 
               | seems like your link is versioned (v22) and the one i
               | found was unversioned... i wonder which one is the
               | latest...?
        
         | [deleted]
        
       | dang wrote:
       | If curious, past threads:
       | 
       |  _Prolog and Logic Programming Historical Sources Archive_ -
       | https://news.ycombinator.com/item?id=22658770 - March 2020 (33
       | comments)
       | 
       |  _The Birth of Prolog (1992) [pdf]_ -
       | https://news.ycombinator.com/item?id=18178215 - Oct 2018 (39
       | comments)
       | 
       |  _A Tribute to Alain Colmerauer (2001)_ -
       | https://news.ycombinator.com/item?id=15254369 - Sept 2017 (1
       | comment)
       | 
       |  _In Memoriam Alain Colmerauer: 1941-2017_ -
       | https://news.ycombinator.com/item?id=14399688 - May 2017 (5
       | comments)
       | 
       | Others? Prolog itself is probably too big a theme to list here,
       | but Prolog origins?
       | 
       | (Edit: thanks to commenter who supplied now-deleted reference.)
        
         | [deleted]
        
         | nextos wrote:
         | The history of Erlang is also intimately related to Prolog, as
         | explained by Joe Armstrong in this article:
         | 
         | https://www.cse.chalmers.se/edu/year/2009/course/TDA381_Conc...
         | 
         | It's quite amazing how one can implement Erlang or basically
         | any other language prototype as a Prolog metainterpreter.
        
           | ProfHewitt wrote:
           | Strict logic programs (including Prolog) do not implement
           | concurrency, which motivated the invention of Actors.
           | 
           | For more information see the following:
           | 
           | "Information Security Requires Strongly-Typed Actors and
           | Theories"
           | 
           | https://papers.ssrn.com/abstract=3418003
        
       | emmanueloga_ wrote:
       | I was wondering if anyone knows of a resource in the same vein as
       | [1] or [2] but to implement a prolog interpreter instead of lisp.
       | 
       | 1: https://github.com/kanaka/mal
       | 
       | 2: http://www.buildyourownlisp.com/
        
         | gglitch wrote:
         | I believe several of the canonical Lisp books implement a
         | simple Prolog as an exercise. I'm pretty sure Norvig's
         | Paradigms of Artifical Intelligence Programming, pg's On Lisp,
         | and Winston & Horn's Lisp all do.
        
           | Jtsummers wrote:
           | The relevant section of PAIP: https://github.com/norvig/paip-
           | lisp/blob/master/docs/chapter...
           | 
           | Also worth exploring _The Reasoned Schemer_ which teaches
           | minikanren, which can be (and has been) implemented in many
           | programming languages. It explores much of the same space as
           | Prolog. I wrote most of a minikanren in Common Lisp while
           | working through the book (someone else had already published
           | a version to quicklisp which was better than what I made).
        
             | abecedarius wrote:
             | The PAIP implementation seems more practical than the other
             | textbook Prologs I've seen like SICP's, while still quite
             | small and clear.
        
               | Jtsummers wrote:
               | If you've never gone through PAIP, you're in for a treat.
               | Most of the code is very practically written (I'd wager
               | all, but it's been a while since I read/worked through
               | it). Norvig writes good code, see also his website and
               | many of the Python programs he's published over the years
               | since he switched to it.
        
         | ethagnawl wrote:
         | You could study core.logic:
         | https://github.com/clojure/core.logic/tree/master/src/main/c...
         | 
         | I swear I'd bookmarked a resource that was more analogous to
         | #2, but you may want to have a look at The Little Prover:
         | https://mitpress.mit.edu/books/little-prover
        
           | tobmlt wrote:
           | Yep! Or go for miniKanren if you want something like
           | core.logic, but outside of clojure.
           | 
           | Will Byrd has a lot of documentation out there. (Scheme focus
           | of course.)
           | 
           | I think the easiest way for a programmer with a vanilla
           | background to "get it" is here:
           | 
           | https://codon.com/hello-declarative-world
        
         | carapace wrote:
         | Traditionally the WAM[1] has been the route, but see Paul
         | Tarau's "A Hitchhiker's Guide to Reinventing a Prolog
         | Machine"[2]. Check out also Nils M Holm's "PROLOG Control in
         | Six Slides"[3]
         | 
         | [1] https://en.wikipedia.org/wiki/Warren_Abstract_Machine
         | 
         | [2] https://www.cse.unt.edu/~tarau/research/2017/eng.pdf
         | 
         | [3] https://www.t3x.org/bits/prolog6.html
         | https://news.ycombinator.com/item?id=20591771
         | 
         | I don't know anything about it but there's "Prolog.c: a simple
         | Prolog interpreter written in 200 LOC of C++ (2000)
         | (cam.ac.uk)"
         | 
         | https://news.ycombinator.com/item?id=12193694
         | 
         | http://www.cl.cam.ac.uk/~am21/research/funnel/prolog.c
        
         | [deleted]
        
         | inetsee wrote:
         | It's not exactly what you're asking for, but there is "Racklog:
         | Prolog-Style Logic Programming" https://docs.racket-
         | lang.org/racklog/ which is "an embedding of Prolog-style logic
         | programming in Racket". You could see how they added Prolog
         | style logic functions to the Racket programming language.
        
         | howerj wrote:
         | I was hoping there would be something like this as well, all of
         | the prolog interpreters out there are either too complex or do
         | not explain how they work. I might have to write something
         | myself as implementing your own (toy) interpreter is a good way
         | to fully understand the concepts behind the language.
        
         | DonaldFisk wrote:
         | There's details on how to implement Prolog (in Common Lisp) in
         | Peter Norvig's Paradigms of Artificial Intelligence:
         | https://github.com/norvig/paip-lisp/blob/master/docs/chapter...
         | 
         | There's also Implementations of Prolog:
         | https://archive.org/details/implementationso0000unse (limited
         | preview)
        
         | bmitc wrote:
         | There is _The Reasoned Schemer_.
         | 
         | https://www.amazon.com/Reasoned-Schemer-MIT-Press/dp/0262535...
        
           | agumonkey wrote:
           | I skimming through it. I wonder if people prefer this or
           | kanren over good old prolog.
        
             | remexre wrote:
             | I definitely prefer miniKanren, but (with a small sample
             | size) find that non-logic programmers have an easier time
             | reading simple Prolog than equally-simple miniKanren.
        
         | ookdatnog wrote:
         | Perhaps not quite what you're looking for, but the free MIT
         | book "Structure and Interpretation of Computer Programs"
         | (https://mitpress.mit.edu/sites/default/files/sicp/full-
         | text/...) has a section on interpreting logic programs (section
         | 4.4) in Scheme. I think it's sufficient to understand the
         | semantics of Prolog, but I'm not sure how much of the rest of
         | the book you'd need to read to understand that chapter (it's an
         | amazing book though!)
         | 
         | edit: to be clear, in the book you interpret a logic
         | programming language with lisp-like syntax
        
       | gglitch wrote:
       | One of the debates I always enjoy when it shows up on HN is the
       | comparison of lightweight serialization formats, especially,
       | e.g., sexprs vs json. I don't believe I've ever seen Prolog terms
       | show up, but they seem apposite.
        
         | sedachv wrote:
         | One of those three is not like the others. Prolog is
         | homoiconic. JavaScript programs are not JSON. Parsing Prolog
         | terms is easy. Parsing JSON correctly is very difficult:
         | http://seriot.ch/parsing_json.php
        
           | gglitch wrote:
           | It seems to be conventional to use the homoiconicity of Tcl
           | to serialize data out in a way intended to be interpreted
           | back in again as code [0], but I don't think I've seen this
           | recommended by Lispers.
           | 
           | [0] - e.g. https://trs.jpl.nasa.gov/bitstream/handle/2014/766
           | 0/03-1728....
        
       ___________________________________________________________________
       (page generated 2021-02-23 23:01 UTC)