Prolog's Eternal September (2017)
29 comments
·May 8, 2025crustycoder
JadeNB
> Coincidentally, on Friday I pulled my dusty 1987 copies of Sterling & Shapiro and Bratko off the bookshelf for the first time in literally decades, and built myself a copy of SWI so that I could have a tinker with it for something where I think it may be a good fit.
If you care for recommendations to complement those two, O'Keefe's The craft of Prolog is my favorite Prolog book.
chuckadams
Teaching prolog in the context of modern type systems might be more worthwhile, since to my understanding, there's quite a bit of overlap, to where you can write arbitrary prolog in Haskell or Scala's type systems. Probably even holds for C++ and TypeScript too. But I don't think there's a technological solution for teaching a subject for which the school cares so little that it won't hire anyone who actually understands it.
melenaboija
I wish I still had the curriculum from my logic class in computer science from 20 years ago. It was clearly structured to build a deep understanding of how Prolog works, starting from the fundamentals of tautology, then moving on to unification and backtracking implementations in Prolog and so on. The practical classes involved solving different problems ending with simulating the Enigma encryption machine.
The approach really worked and I know it did because whenever I revisit Prolog, it only takes me a few hours to get back up to speed on the fundamentals. For something as abstract as logic and Prolog I think it says a lot.
sitkack
Many of these course websites are still around and/or recycled to later courses.
billfruit
Sounds very interesting, which text book did you use for your course?
melenaboija
I don't remember sorry :(
agumonkey
would you accept telling us which university you went to ? unless you want to keep that private
neilv
> The pre-beginners are not at Stack Overflow to look at existing solutions (which is what Stack Overflow wants you to do). They just want someone to do their homework for them.
This is/was also a thing in the Scheme (and Racket) community, where maybe half the users in the world, at any given time, just want to pass the class and then never see it again.
The funny part was that it's a fairly small world, and the forums the students were asking include the people who wrote the textbooks and often the problem sets, as well as probably knew the students' professors.
Fortunately, :) "AI" is now doing all the lazy students' homework for them. So now:
1. The AI plagiarizes from books, open source code, and forums;
2. then the student plagiarizes from the AI;
3. then the forums are left to people who are actually interested;
4. then the AI companies come and again steal whatever the interested people do;
5. and repeat.
cbarrick
One of my many probably-going-nowhere hobby projects is a modern Prolog. I think the module system especially is a place where we need innovation.
I'd like to see someone do for Prolog what Clojure did for Lisp.
brudgers
what Clojure did for Lisp
Hickey’s goal was improving JVM programming ergonomics. It was not changing Common Lisp (or Scheme).
Sure, Clojure exposed some programmers to lisp, but lisp shops didn’t convert to Clojure. JVM shops did adopt it in part because Clojure “is just a Java library.”
tyre
Yep. The parallel here would be taking logic programming and opening it to new users. Prolog or systems like CLIPS are super powerful and map to common problems better than other tools, but are Scary and Niche and Unknown.
ww520
20 years ago I had the same thought. I actually started implementing the Rete algorithm. Midway through I realized, “hey, this is just relational algebra. May be I can integrate it in a relational DB engine. Use rows in tables as facts and materialized views as generated facts.” It soon spin out of scope and I lost interest. Later I did use what I learned to build a rule based event processing engine.
crustycoder
I still have a fanfold printout somewhere of the OPS5 implementation I wrote in C, back in the 80s :-)
Arch-TK
"I think the underlying problem is that Prolog is part of a mandatory curriculum, but the professor doesn’t understand it. How do you teach something you don’t understand?"
Same problem with C and probably other languages.
Although by far the most annoying is that lots of people who also get paid to write C don't know it and have no interest in actually learning it. (Worst of all, they don't realise how little they know about C and think they know it very well.)
ggerules
I agree with you!
Having spent decades writing C and sometimes teaching C at the university level, to really understand the "why" of things in C you have to spend some time,separately, writing / studying some assembly language. In many universities teaching assembly language has fallen out of favor.
Bootvis
What is something such a person should know but doesn’t? I don’t write C but the language is fairly small so I can imagine a professional keeping 99% of it in their head at all time.
remexre
Idiomatic design would be a big one; there are a lot of ways to design a program in a higher-level OO language that, if followed in C, will lead to a program with lots of bugs around error handling and resource cleanup.
This kind of ties into the argument made by some in the Rust community that "the ownership was there the whole time" -- in a language without automatic memory management, you really do need to be aware of the life-cycle of an object in memory. Rust's specific rules aren't fundamental, but "even when an error occurs, I know what cleans up this object / this state" is.
layer8
They should know what the C abstract machine does and doesn’t guarantee, for one.
oh_my_goodness
I hear this and I agree. It's obviously a serious problem.
As a side issue. There's also a different, deeper problem. Any Q&A site that's actively hostile to people who ask questions is going to become toxic and intolerable within a few years. I'm pretty sure that's true even if the hostility is reasonable and justified.
As a newsgroup user since 1986: The problem with the original Eternal September was not only a tidal wave of ignorant new users. It was also that a large fraction of the experienced user base were smug lunatics long before September finally arrived.
Sorry for the like "radical candor" here.
jamespo
Theres actively hostile and then there's indifference to a certain class of questions. Anyway AI models don't suffer from this nowdays
oh_my_goodness
Yes, that is a big difference. From what I've seen indifference leads to much better outcomes.
:) Agreed, the AI models have great "people skills." Every user is a genius!
null
subjectsigma
Someone, quick, perform the mtriska summoning ritual
I have no idea if he’s read this post but his YouTube channel provides, I feel, the missing link between a “day one” Prolog tutorial and an expert-level Prolog guide. It’s exactly what the author is talking about.
crustycoder
I hadn't come across that, In general I'm not a great fan of programming videos (life is too short) but the website content looks interesting - thanks!
JadeNB
It seems strange to make "let's make it easier for people to teach Prolog who don't understand it." At very best, this'll lead to students with a minimal factually correct knowledge of Prolog, and no idea why it matters. If we're imagining changing teachers' practice, why not aim a little higher and try to convince faculty that Prolog is interesting, at which point anyone qualified to teach computer science can learn about it themselves, and teach it better than from material designed around their ignorance?
passivegains
the author is pretty up front about this: I would like to live in a world where professors consider Prolog worth knowing and put in the effort. That probably isn’t realistic. He clearly wishes he's wrong, which makes three of us.
JadeNB
Right, but thinking you can change how people teach a subject without their believing it's worth knowing seems unrealistic, too!
CyberDildonics
"I think the underlying problem is that Prolog is part of a mandatory curriculum, but the professor doesn’t understand it. How do you teach something you don’t understand?"
Or the underlying problem is prolog itself. If students are constantly learning it for a class and never wanting to touch it again, maybe it's time to face facts. Some people get caught up in the pageantry of programming and forget to spend their mental energy building the software instead of doing clever stuff with a programming language.
Coincidentally, on Friday I pulled my dusty 1987 copies of Sterling & Shapiro and Bratko off the bookshelf for the first time in literally decades, and built myself a copy of SWI so that I could have a tinker with it for something where I think it may be a good fit.
Sure there are now some shinier toys in the Prolog box but the problems with Prolog seem to be the same now as they were 35+ years ago - it's seen as a niche CS-only tool, where to get any traction at all you have to absorb reams of terminology that's mostly unknown outside of academia, or has been forgotten post-graduation - Prolog really doesn't do itself any favours, and never has.
I think expecting academia to ever "sell" Prolog is a bust - if it hasn't happened by now, it never will. Better to directly target people earning their crust writing code, and sell the benefits to them, with real examples, not Towers of Hanoi and N-Queens. And as far as practicable, try to relate them to things that they are more likely to already know, such as SQL or Functional programming?