3 ms·
Nothing against Lisp, but to correct the record: > For decades, Lisp was the language of artificial intelligence. [...] Then came the "AI winter," funding drie
by ux266478 2mo ago
Nothing against Lisp, but to correct the record:
> For decades, Lisp was the language of artificial intelligence. [...] Then came the "AI winter," funding dried up, and Lisp went from star to cult language.
Lisp had fallen from relevance before then. Only the United States was still using it, and mostly out of technical debt and a stubborn refusal to move on. Prolog displaced it in the late 1970s, and even within the US, the Lisp part was an unfortunate implementation detail to get to a Prolog-shaped object. It's not surprising that the US fell way behind Japan in this area in the 1980s. Anybody who would imply they would take a Lisp machine over a PIM is either not interested in symbolic computation and just likes Lisp, or they're doing so out of total ignorance of how much more advanced the PIMs were for symbolic AI.
The cutting edge was with Prolog, and that's still the case today. Nobody's researching MIL in Lisp, even in America.
- BoingBoomTschak 2mo agoAnd then mini/microKanren put Prolog in its rightful place: that of a useful DSL instead of a poor general purpose language.
- ux266478 2mo agominiKanren is a replacement for a Prolog like a shitty tree-walking sexpr interpreter that doesn't even have modules is a replacement for Racket. I don't even know what to say to you for suggesting that, frankly. Anyways the embedded inference engine as an idea failed a long time ago, Americans convinced themselves it was the way to do things and just refused to ever let it go. It's just extra baggage on the important bit, which is the symbolic computation. miniKanren has a niche more in line with a theorem solver.
- BoingBoomTschak 2mo agoInstead of us two milling about: https://minikanren.org/minikanren-and-prolog.html https://minikanren.org/minikanren-and-prolog.html (and this is both informed and pretty impartial from what I can read)
- YeGoblynQueenne 2mo agoI don't see where the above says that Prolog is a "poor general purpose language"? I'd instead say that claim is incompatible with the following paragraphs that rather sing the praises of Prolog as a programming language: Prolog is one of the two classic languages for symbolic artificial intelligence programming (the other classic language being Lisp). Prolog excels at implementing symbolic rule-based systems in which declarative knowledge is encoded in first-order logic. The language is optimized for expressiveness and efficiency for these types of applications, sometimes at the expense of logical purity. For example, by default Prolog does not use the "occur check" in unification. From a math/logic standpoint, this version of unification is incorrect. However, the occur check is expensive, and in most cases the lack of the occur check is not a problem. This is a very pragmatic design decision, as is Prolog's use of depth-first search, and use of cut (!) to control backtracking. I'm sure these decisions were absolutely necessary when running on the hardware of the 1970s, and today are very useful when working on large problems, and when dealing with huge (often infinite!) search spaces. Prolog supports many "extra-logical" or "non-logical" features, including cut, assert and retract, projection of variables for arithmetic using is, and so forth. Many of these features make it easier to express complex control flow, and to manipulate Prolog's global database of facts. One very interesting feature of Prolog is that Prolog code is itself stored in the global database of facts, and can be queried against at run time. This makes it trivial to write meta-interpreters that modify the behavior of Prolog code under interpretation. For example, it is possible to encode breadth-first search in Prolog using a meta-interpreter that changes the search order. This is an extremely powerful technique that is not well known outside of the Prolog world. 'The Art of Prolog' describes this technique in detail. Tremendous effort has gone into improving Prolog implementations, most of which are based on the Warren Abstract Machine (WAM). The WAM uses a side-effecting model in which values are destructively assigned to logic variables, with these side-effects being undone upon backtracking. Many features can be added to Prolog by extending the instructions of the WAM. One disadvantage of this approach is that Prolog implementation papers can be difficult to read without a solid understanding of the WAM. On the other hand, Prolog implementer have a common model for discussing implementation issues. There has been a great deal of research in parallel Prolog, culminating in Andorra Prolog in the 1990s. At least some of these ideas live on in Ciao Prolog. (Ciao Prolog is full of interesting ideas, many of which go far beyond the Prolog standard.) Prolog has a beautiful unification-based "pattern-matching"-style syntax that results in very succinct programs. Prologers love their syntax, just like Lispers love their s-expressions. Prolog also has a large library of standard predicates. Due to all of the engineering that has gone into making the WAM fast, there are very capable and mature Prolog implementations. As a result, many large knowledge-based systems have been written entirely in Prolog. So, why do you say that Prolog is a "poor general purpose language"?
- so-cal-schemer 2mo agoI've read a large factor was minicomputers and microcomputers running Unix in C became much more affordable, and when the Berlin Wall fell in 1989 DoD funding for powerful and expensive Lisp workstations quickly dried up. And the nascent free software Lisp offerings left a lot to be desired (to be developed). This visualization of relative programming language popularity shows Lisp was the 3rd most popular general purpose language in Q1 of 1984 behind Pascal (a learning language?) and C. (Prolog shows at 12th, then drops off the chart) Most Popular Programming Languages: Data from 1958 to 2025 https://youtu.be/ZTPrbAKmcdo?t=116 https://youtu.be/ZTPrbAKmcdo?t=116 Gabriel's perspective from 1990: Lisp: Good News, Bad News, How to Win Big - Richard P. Gabriel - Lucid, Inc https://dreamsongs.com/WIB.html https://dreamsongs.com/WIB.html
- ux266478 2mo agoThat's why nobody uses Lisp machines today, but Lisp is somewhat orthogonal. It's true that the death of the Lisp machine economy hurt Lisp more than the end of the FGCS hurt Prolog. BUT this was happening long before the winter hit. > This visualization of relative programming language popularity shows Lisp was the 3rd most popular general purpose language Which is fine, and makes sense. But I'm addressing a claim about Lisp being "the Language" for the era of symbolic AI. Which is decidedly not high volume, nor is it general at all, it's really quite specific. I'm correcting it, because I know Americans are heavily culturally silo'd on this, and symbolic AI is especially esoteric. Most people probably can't name a single commercial expert system off the top of their head, and that's not unreasonable. Our cultural view of symbolic AI is rife with American exceptionalism (I theorize partially because of government involvement) that just doesn't track with reality. Speaking as an American.
- pasc1878 2mo agoPascal in 1984 was not just a teaching language. The ranking then was due to Turbo Pascal which came out in November 1983. It was probaly the first IDE and compiler on PCs
- so-cal-schemer 2mo agoGreat point for the timeline. more: https://wiki.c2.com/?PascalLanguage https://wiki.c2.com/?PascalLanguage
- so-cal-schemer 2mo agoIf anybody reading this branch of the discussion wants to investigate Logic Programming and Nondeterministic Computing further in the context of Racket/Scheme, it is discussed in §4.4 of SICP as a Scheme variant. A variant created by modifying the meta-circular evaluator -- as Ableson says, the real superpower of Lisp, and an excellent display of the usefulness of homoiconicity. 4.4 Logic Programming https://sarabander.github.io/sicp/html/4_002e4.xhtml#g_t4_002e4 https://sarabander.github.io/sicp/html/4_002e4.xhtml#g_t4_00... 4.3 Variations on a Scheme — Nondeterministic Computing https://sarabander.github.io/sicp/html/4_002e3.xhtml#g_t4_002e3 https://sarabander.github.io/sicp/html/4_002e3.xhtml#g_t4_00... 4.1 The Metacircular Evaluator https://sarabander.github.io/sicp/html/4_002e1.xhtml#g_t4_002e1 https://sarabander.github.io/sicp/html/4_002e1.xhtml#g_t4_00...