The Simplicity of Prolog

Prolog’s blend of declarative logic and simple syntax inspires both admiration for its expressiveness and frustration with its limitations and ecosystem. Commenters contrast it with SQL, Datalog, and languages like Mercury, argue over abstraction, metaprogramming, and constraint logic programming, and highlight modern implementations such as SWI-Prolog and Scryer that push the model forward. While many see Prolog as ideal for well-defined combinatorial and reasoning tasks — from Sudoku solving to scientific and industrial applications — others note practical hurdles around performance, tooling, standards fragmentation, and integrating it into web and database-heavy systems.

Prolog’s appeal and paradigm

  • Many commenters praise Prolog’s “small but powerful” core: once you internalize its logic/relational model, solutions can be surprisingly short, clear, and high‑level.
  • Logic programming is seen as a strong complement to mainstream paradigms; some wish for “Prolog sections” in other languages, similar to regex or embedded SQL.

Limitations, abstraction, and “not fully declarative” issues

  • Critics argue Prolog has weak abstraction: no implicit context parameters (“this”), leading to predicates bloated with repeated arguments or awkward global state (assert/retract, blackboards).
  • Supporters counter that meta‑interpreters, DCGs, associative structures, and compilation hooks can reintroduce “context” and high‑level abstractions, though this can be non‑obvious.
  • A recurring complaint: Prolog can express problems declaratively but naive search often loops or gets stuck; practical solutions may require cuts, tabling, or hand‑crafted control, which some see as undermining the ideal.

Constraint Logic Programming and expressiveness

  • Constraint libraries (e.g., over integers/Booleans) are highlighted as modern Prolog’s killer feature, enabling concise solvers (e.g., Sudoku) that many find more elegant than imperative equivalents.
  • Others respond that such examples are small and that for more complex combinatorial tasks solvers still hit walls.

Implementations, ecosystem, and standards friction

  • SWI‑Prolog is repeatedly recommended as the most “batteries‑included” and beginner‑friendly (web playground, docs, debugger, libraries).
  • Scryer and other systems focus on ISO purity, homoiconicity, and advanced CLP, but have fewer tools and libraries; there is visible tension around non‑standard syntax changes (notably SWI’s use of . for dicts) and portability.
  • Discussion covers Logtalk, Mercury, Curry, miniKanren, Picat, Ciao, Quantum Prolog, Datomic/Datascript, Soufflé, DES, and Datalog more broadly; some find Datalog tooling immature and hard to use.

Real‑world uses and integration

  • Examples cited: cancer research, particle physics, funding allocations, a Linux installer, a Prolog‑backed website stack, and a logic‑heavy database (TerminusDB).
  • Prolog is described as inherently close to a deductive database/query language; it can also front SQL (via libraries) or replace parts of a LAMP stack.
  • Parallel and distributed Prolog/search exist in research and some systems, but production‑ready GPU/cluster‑scale solutions are not clearly established in the thread.

Learning, tooling, and article feedback

  • Multiple learning resources (lectures, books, playgrounds) are mentioned.
  • Some readers liked the article’s Prolog vs OOP auth example; others criticized the site’s typography/contrast and a “don’t actually use this reverse” note as confusing about performance expectations.