[HN Gopher] Paradigms of Artificial Intelligence Programming (1992) ___________________________________________________________________ Paradigms of Artificial Intelligence Programming (1992) Author : RafelMri Score : 242 points Date : 2022-08-14 10:16 UTC (12 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | medo-bear wrote: | this is my favourite book on software engineering (as well as | common lisp) | lukego wrote: | Mine too. | naillo wrote: | It's weird that it still feels like this is almost something I'm | 'supposed' to know and at some point work my way through. (Maybe | because it was on the brink of still being relevant when I got | interested in programming in middle school.) Kind of a relief to | realize that this for sure is no longer something you're expected | to know whatsoever. | medo-bear wrote: | the engineering concepts elaborated in this book are very much | relevant today and you might very well be expected to know | them. what this book does (and this is relevant merrit) is that | it so effectively drills them into you (provided you follow | along of course) | BlueTemplar wrote: | What changed ? | PaulHoule wrote: | When people talk about AI today they are usually talking | about machine learning systems based in neural networks. | | The kind of symbolic AI described in this book went through | several cycles of hype and disappointment to the point where | many think it is obsolete. People often do it connect recent | breakthroughs in SAT and SMT solvers with this history and | for that matter production rules engines are dramatically | better than they were in the 1980s but they've never made a | breakthrough into general purpose use. | tel wrote: | Maybe if you define AI to be "technology that could | plausibly lead to AGI", but everything in this book is | still terrifically relevant for many practical "how to get | my computer to solve this semi-open ended search problem | efficiently". Which is far from uncommon. | hmcamp wrote: | Hi @Paul, I'm a newbie in this field. Are you saying that | this branch of AI isn't relevant when compared to machine | learning that's based on neural networks? | ameasure wrote: | Norvig addresses this at the end of f | http://norvig.com/Lisp-retro.html . Basically these old | AI techniques are now considered regular programming and | modern AI is focused on ML. Both are useful but for | different tasks. | mark_l_watson wrote: | That is a great retrospective! Still very relevant 20 | years after it was updated. | dunefox wrote: | Mostly not, no. | potatoman22 wrote: | The most relevant field this would apply to is AI for | games. | KineticLensman wrote: | Symbolic AI never managed to scale to significant and | general real world problems. Neither did Machine | Learning, not until the advent of fast processors and | massive datasets for training which broke the scale- | barrier. | | Rule-based expert systems (as opposed to SAT, etc) based | on Symbolic AI also have the issue that for non-trivial | problems, coding the rules themselves usually requires | programming expertise in addition to the domain knowledge | required to capture the business logic. Things have | improved a lot since the 80s, but applications remain | fairly niche. | mark_l_watson wrote: | I wrote a small Common Lisp book for Springer Verlag about the | same time that Peter wrote this fantastic book and I then met him | shortly thereafter at a Lisp Users Vendors conference in San | Diego. After 30 years of following his writing, Python notebooks, | etc., I think that he just has a higher level view of software | and algorithms. | | There is some talk on this thread about good old fashioned | symbolic AI. I have mixed feelings about this. I am currently | working for an all-in Common Lisp + GOFAI company, but most of my | best successes in my career involved neural networks, and later | deep learning. | | I think we need a new hybrid approach but it is above my skill | level to know what that would be. I keep hoping to see some new | research and new paradigms. | zmgsabst wrote: | We're building that paradigm right now, in the math community. | | Homotopy type theory tells us that semantic information from a | symbolic logic can also be represented by the topology of | diagrams. But this is a two way relationship: the topological | structure of diagrams also corresponds to some synthetic type | theory. | | The conjecture is that the topology of, eg, word2vec point | clouds will correspond to some synthetic type theory describing | the data -- and this is bolstered by recent advancements in ML: | Facebook translating by aligning embedding geometries, data | covering models, etc. | | I'm personally working on the problem of translating types into | diagrams stored as matrices, in the hope that building one | direction will give insights into the other. (Again, because | equivalence relationships are symmetric.) | larve wrote: | Off topic, but what does diagrams mean in this context? | zmgsabst wrote: | Diagrams in the category theory sense. | | https://en.wikipedia.org/wiki/Diagram_(category_theory) | | And for some context, a brief talk by Michael Shulman. | | https://www.youtube.com/watch?v=zUPBEQe4Ti8 | larve wrote: | thank you! | Geee wrote: | I guess this is more of a historical curiosity rather than | something that is relevant today? | larve wrote: | It's actually just a really good book about programming, with | both "high-level" but also really practical advice (how to | attack performance issues, how to debug). The examples are all | really fun to build and extend. In fact I'm going through it | again currently (I kickstarted a datalog compiler off of the | prolog compiler chapter). | sicp-enjoyer wrote: | No this is one of the best programming books you can buy. It's | just not about ML. | lispm wrote: | > No this is one of the best programming books you can buy. | | It's even no-cost. The book is available for free in digital | forms. | rbc wrote: | Norvig commented on this: | | http://norvig.com/Lisp-retro.html | | The last section, "What did PAIP Accomplish?" summarizes his | view on PAIPs legacy. | thomasfl wrote: | The Prolog programming language implementation is just 139 lines | of Lisp code. Never the less, Prolog is a really powerful tool. | pronoiac wrote: | Hi all! I'm not the author, but I'm part of the effort to turn | PAIP from a scanned pdf into a _lot_ of markdown. | wodenokoto wrote: | Can anyone recommend a source for setting up an environment in | Linux to run the code in this book? | | Do I need to learn eMacs to get close to a "modern lisp" | programming environment? | headcall wrote: | vim + slimv | | check out susam's guide | susam wrote: | Hello! Thank you for mentioning my Vim + Slimv guide. I have, | in fact, two guides to set up a Common Lisp programming | environment from scratch: | | For Vim: https://susam.net/blog/lisp-in-vim.html | | For Emacs: https://github.com/susam/emacs4cl | sdkgames wrote: | Most popular Linux distributions include Common lisp packages. | For example, "sbcl". if you have Debian/Ubuntu you should be | able to install it like this: "sudo apt-get install sbcl" | rbc wrote: | I would say Emacs with SBCL is a good start. I haven't started | PAIP yet, I'm working through the Touretzky Lisp book, "Common | Lisp: A Gentle Introduction to Symbolic Computation" as a | warmup before starting PAIP. I've found that Inferior Lisp mode | in Emacs is sufficient for working through those examples. It | seems like a lot of working programmers are using SLIME with | Emacs though. | alaaalawi wrote: | Many people will fret when mentioning a commercial vendor. but | IMHO and YMMV the leaset systems to get going with the least | hassle would be either Lispworks or Allegro and both offer | trial versions not getting in your way throughout the book | (even though I'm Emacs SLIME user for long time). I'm | interested in user minimzing unrelated side topics and spiral | customization (I love them) and focusing on the book | nanna wrote: | Bear in mind that this book explicitly expects readers to | already be familiar with lisp, so if you've not got a lisp | environment going already and need an introduction, you should | really look elsewhere first. Touretzsky's book is a great place | to start. https://www.cs.cmu.edu/~dst/LispBook/ | Jach wrote: | Emacs is popular. I like vim, but people are also using VS | Code. https://lispcookbook.github.io/cl-cookbook/editor- | support.ht... and other pages on the wiki may help you. | https://github.com/CodyReichert/awesome-cl#community has a list | of community spots if you want to seek out other opinions. | | The SBCL implementation is very good, consider getting a binary | directly from their site if your distro's version is out of | date http://www.sbcl.org/ | | I disagree with a sibling comment that this book expects you to | be comfortable with Lisp; the first chapter is literally an | introduction, and the next two chapters cover most of the | basics a working programmer should expect to cover quickly with | chapter 3 being a handy reference to look back on for a lot of | things. If you're new to programming or find the intro too | fast, sure, look at other resources, but it's not too bad to | just dive in. The main supplement is to figure out, with your | editor of choice, how to send blocks of Lisp code to the Lisp | prompt so that you can type and edit with an editor and not | have to do everything directly on the prompt line. | math-dev wrote: | emacs is the easiest but you can try lispworks personal edition | or allegro common lisp (they have a web ide IIRC) | | there's portacle which combines emacs with a lisp environment | MichaelBurge wrote: | Download and run Portacle: https://portacle.github.io/ | | It's a distribution of emacs together with a Lisp compiler, | emacs add-ons like SLIME, etc. | zelphirkalt wrote: | Emacs would be a fine choice, but is not mandatory, if you can | live with less support for parens found in other editors. Emacs | traditionally excels at working with lispy languages and REPLs. | | I started working through the book, but did not feel like using | Common Lisp. Instead I used GNU Guile. I am not very far in the | book yet, but so far I was able to translate between Common | Lisp and Scheme easily. | | So for me the way to set things up was to install GNU Guile. I | did that via GNU Guix package manager. However, GNU Guix can | also install SBCL, so that you could use Common Lisp as the | book does. SBCL is also in many distros' repositories. | andrejlamov wrote: | do you think elisp will work for this book? or would one need | to implement unique common lisp features in elisp? or will | elisp just be too slow | math-dev wrote: | most of it should work in elisp, note that elisp and common | lisp have different semantics for IF. | | you might find some variances later on. also elisp doesn't | have as nice a debugging environment as SLIME so I'd | honestly recommend just setting up common lisp | kazinator wrote: | As far as I can tell, any Elisp if-form that is also a | valid Common Lisp if-form has the same semantics; but | Elisp allows more than one else-form in its syntax, with | additional semantics. | | It's something like: (defmacro elisp-if | (expr then &rest elses) `(cond (,expr ,then) (t | ,@elses))) | | Whereas the regular if is like: (defmacro | cl-if (expr then &optional else) `(cond (,expr | ,then) (t ,else))) | | In a book that uses Common Lisp, you shouldn't see an if- | form that isn't Elisp-compatible. | math-dev wrote: | Oh yes you are 100% right, I just had a brain fart. | Thanks for correcting | proamdev123 wrote: | What does "IF" stand for in your comment? | | Are you referring to the IF expression or something | different? | math-dev wrote: | ignore me, read the comments above | trenchgun wrote: | You should use Common Lisp for this book, unless | specifically want a challenge. | medo-bear wrote: | this is ridiculous for a first reading. its the same as | telling someone to use common lisp for sicp. why? maybe on a | second or third reading for fun but to digest this book just | use a well supported language like common lisp for which the | book was written | zelphirkalt wrote: | I can switch to Common Lisp at any time later in the book, | if I feel, that translating to Scheme is too difficult for | me. I will need to understand CL anyway, to do the | translation. | | What I do not like about CL is probably one of the "wars" | fought in computer programming: I do not like, that I have | to use funcall, instead of simply wrapping with parens. I | do not like, that variables and functions are in separate | namespaces. However, if going through the book using Scheme | gets too complicated, these are not things I cannot get | over. | | EDIT: I probably also do not like the less emphasis on pure | functions in CL. I think while solving some exercises I | already did some things, so that I could solve without | mutating global state. But it's been a while since I last | continued working through the book, so I am not so sure. I | get that sometimes a simple side-effect can be practical, | but this is my free time occupation and I get joy from | doing things in clean ways. Nevertheless, Common Lisp is | one of the languages, which I wish I could actually work in | (like on the job, not in my free time), when I compare it | to things like Python, JavaScript and so on. At least it is | in the family of languages I enjoy using. | phyrex wrote: | Lucky you, one of the chapters implements scheme. Seriously | though, use CL, you're not going to have a good time with | scheme with this book. It's making use of some CL specific | behaviours | zelphirkalt wrote: | Thanks for the warning and look-ahead! | eternalban wrote: | Apparently Perlis devoted some time to making epigrams. I like | #119 (and have amended it in line with #122 and recent | developments in Canada, et al) : _Programming is an unnatural | act, but so far it is still mostly legal_. | | https://web.archive.org/web/19990117034445/http://www-pu.inf... | | p.s. | | Actually applying Perlis's epigrams to epigrams, we inevitably | reach the conclusion that epigrams stifle thought yet #125 still | holds: | | #121 permits meta-epigrams. | | proposed: Epigrams optimize expression. | | #21: optimization hinders evolution | | q.e.d. epigrams stifle evolution of thought. | | [Alan Perlis: https://en.wikipedia.org/wiki/Alan_Perlis] | Jtsummers wrote: | Wrong thread? | eternalban wrote: | This is how PoAIP book [ch. 1] starts: | | "You think you know when you learn, are more sure when you | can write, even more when you can teach, but certain when you | can program. --Alan Perlis " | | So I was curious as to who is Alan Perlis. Sorry, assumed | others had also accessed the pdf :{} | MontyCarloHall wrote: | It is interesting how almost none of these paradigms/principles | are relevant to what we think of as AI today. Lisp, a language | specifically formulated for AI applications, is now mostly | relevant in the context of programming language theory (and | essentially irrelevant to the statistical programming/linear | algebra toolkits that underpin modern AI applications). Instead, | Fortran and its descendants are actually what power today's AI | programs. Nobody could have foreseen this in the 50s! | taeric wrote: | I'm always surprised that the symbolic math paradigms aren't | used more. I suppose most cost functions just aren't | continuous? | | That said, seems most of what is important in today's code is | the ability to drive a gpu. Don't know why that couldn't be | done from a lisp. | pgorczak wrote: | Neural nets do use extremely long compositions of nonlinear | functions whose gradients need to be computed over and over. | I guess because chain rule (automatic differentiation) works | so well, most of the libraries in use are only "a little" | symbolic in that they can automatically figure out first | derivatives for symbolic input and output variables. | taeric wrote: | I thought automatic differentiation is a little different? | Will have to look again. I thought the norm for a while was | to manually enter the gradient, if possible, or to use a | calculated one at each step. | mirker wrote: | The norm is to use library functions like addition, | multiply, power, etc., which have hardcoded derivatives. | Then the derivative is computed "symbolically" by | composing these base derivatives, which is essentially an | exercise of implementing calculator logic. I use scare | quotes because there are numerical problems with some | functions that have to be hacked around with more manual | derivatives, like the cross-entropy/softmax function. In | those cases, people suggest to use a different library | function special-cased out for the situation, which is | not really "symbolic" in the typical mathematical sense. | ianbicking wrote: | I'm not sure if anything has or will happen with this, but | this seemed like an interesting symbolic extension of neural | nets: https://syncedreview.com/2020/11/19/facebook-building- | automa... | | At least my take on it is: what if you simulate a domain | (physics being the most tractable) then can you train using | differentials of the model itself and not just | differentiating the internal neuron estimators? | | Lots of open questions... like what's the driving force that | asks for an effect that calls for differentiating the model? | We kind of expect the training process to just recreate | everything internally. | | Now it has me thinking about "coprocessors"... a lot of the | domain-specific math is given to the NN as input features, | but what if the NN could select inputs to those algorithm? | That would give the NN the ability to speculate. Of course | you'd need to also differentiate those algorithms. | | Now that I'm thinking about it, I guess this is just another | activation function, just one that is domain-specific. Are | there approaches that use eclectic activation functions? Like | in each layer 1-10 is one activation function, 11-20 is | another, and then you finish off with tanh or relu or some | other genetic activation function. | kmod wrote: | I'd say this is because the term "AI" has been redefined, not | because the same work is being done in a different way | jimbokun wrote: | Lisp was once in the forefront of high level numerical | computing systems: | | https://en.wikipedia.org/wiki/Macsyma | | Similar to the way Python today is a high level language used | for numerical computing today. Lisp is certainly more than | capable of this role, but the fallout from the AI winter killed | Lisp's reputation and popularity, leading to other languages | filling those niches. | MAXPOOL wrote: | One of the top 5 programming books. | | Old AI is today's bleeding edge computer engineering. There is an | enourmous amount of free lunches for computer engineers and | software startups in the old school artificial intelligence. | | * modern SAT solver performance is impressive. They can solve | huge problems. | | * Writing a complex systems configurator with Prolog or Datalog | can be like magic. | | * Expert systems. There has never been so much use for them than | today. Whenever you see expensive systems utilizing complex mess | of "business logic" and expensive consultants, you should know | there is a better way. | | (I use SAT-solvers to partially initialize neural network | parameters). | lukashrb wrote: | Are there any examples for 2 and 3 openly accessible? While I | grasped the basic idea I lack the imagination how it would look | in a real world system. | jaggirs wrote: | SAT for initializing nn parameters? Can you elaborate on this a | bit, it seems interesting. | albertzeyer wrote: | I can only guess: | | In certain cases, you know what the neural network should do, | for certain inputs, and you have a quite clear idea how each | component of the network would solve this, and this should be | doable, and with a bit of work you could also construct the | parameters by hand, such that it works at least for non-noisy | constructed toy input data. | | Actually, I think for more complex tasks, having such | intuition would anyway be a good idea. | | Now, you could use a SAT solver such that it does the work | mostly for you. You formulate some constructed | inputs/outputs, maybe some other constraints, and let it | solve for the parameters. This would be a good parameter | starting point for real world data. And if the SAT solver | fails to find any solution, maybe your neural network is | actually not powerful enough. | snek_case wrote: | Also curious to hear more about this... | davidhs wrote: | What are the other 4 top programming books? | nextos wrote: | * Structure and Interpretation of Computer Programs: | https://web.mit.edu/6.001/6.037/sicp.pdf | | * Concepts, Techniques and Models of Computer Programming: | https://www.info.ucl.ac.be/~pvr/book.html | | * The Art of Prolog: | https://www.dropbox.com/s/2umr9ouz0jdelio/1407.pdf?dl=1 | | * Probabilistic Models of Cognition: https://probmods.org | | Something that merges logic, types and proofs, perhaps yet to | be written. Some good preliminary material: | | * Program = Proof: https://www.lix.polytechnique.fr/Labo/Samu | el.Mimram/teaching... | | * Concrete Semantics: http://concrete-semantics.org | | * The Hitchhiker's Guide to Logical Verification: https://raw | .githubusercontent.com/blanchette/logical_verific... | | * Programming Language Foundations in Agda: | https://plfa.github.io | | * Logic and Computation Intertwined: | https://cs.uwaterloo.ca/~plragde/flaneries/LACI/ | | * Software Foundations: | https://softwarefoundations.cis.upenn.edu/ | larve wrote: | Since I also put PAIP in my top 5 books, here are my 4 other | ones: | | - The Pragmatic Programmer - | | This changed my life when I started programming 20 years ago. | Most of the practices are now common, but it was almost | radical back then. | | - Designing Data Intensive Applications | | This is so well written, so elegantly fundamental. It's an | absolute pleasure, even if I don't really refer to it in | practice. | | - Structure and Interpretation of Computer Programs | | In many ways, the MIT version of PAIP. Its elegance | complements the pragmatism of PAIP well. | | - The unicorn project | | My number 5 book varies often, because I haven't found many | books that reach the writing quality of the other 4. This is | a business novel, but it really solidified a lot of concepts | for me: lean, queues, theory of constraints, what devops is | about, working as a programmer in a business. | EddySchauHai wrote: | DDIA, SICP, and PAIP have been on my reading lists for | years. Maybe I'll finally get round to them after this | glowing review :) | vasili111 wrote: | Does this book teaches how to write SAT-solvers? | zerr wrote: | I've got an impression that it is a breadth introduction book | to various interesting topics in symbolic computation. It | doesn't go deep. | lispm wrote: | It just implements a computer algebra system, a Prolog, a | Scheme and a bunch of other stuff. On its way it teaches | advanced Lisp programming. | zerr wrote: | Yes, basic/toy versions. | lispm wrote: | For a book I find the description of the development | process and the level of implementation to be quite good. | | A great opportunity for the reader to expand them. | | I've seen for example the Scheme implementation from PAIP | expanded and integrated into a CMS. | dread88 wrote: | Do you mean "Dyalog" rather than "Dynalog"? | trenchgun wrote: | Most likely he means "Datalog". "Dyalog" is an APL. | MAXPOOL wrote: | I meant Datalog. ___________________________________________________________________ (page generated 2022-08-14 23:00 UTC)