[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)