19 ms·
Hofstadter on Lisp (1983)
- InDubioProRubio 2y agoLisp aNeeds Braces
- paddy_m 2y ago> Lisp needs braces You're a troll, but I'll feed you. I adapted Peter Norvig's excellent lispy2.py [0] to read json. I call it JLisp [1]. Lispy2 is a scheme implementation, complete with macros that executes on top of python. I made it read json, really just replacing () with []. and defining symbols as {'symbol': 'symbol_name'}. I built it because it's easier to get a webapp to emit JSON then paren lisp. I also knew that building an interpreter on top of lisp meant that I wouldn't back myself into a corner. There is incredible power in the lisp, especially the ability to transform code. [0] https://norvig.com/lispy2.html https://norvig.com/lispy2.html [1] https://github.com/paddymul/buckaroo/blob/main/tests/unit/lispy_test.py#L42-L100 https://github.com/paddymul/buckaroo/blob/main/tests/unit/li... #tests for JLisp
- NateEag 2y agoHere, have another approach to Lisp formatting: https://readable.sourceforge.io/ https://readable.sourceforge.io/ I looked into porting it to elisp a while back, but the elisp reader was missing a feature or two sweet-expressions require. I should see if that's still true...
- f1shy 2y agoWould be nice. But I think after hours/days of working with lisp, the brain starts to see it at sweet expressions. That is why all tries to go away from s-exp don't get traction: anytime anybody starts doing it, pretty fast discovers it is really not needed.
- lproven 2y agoI think this is true for the small percentage of people who get through that initial stage -- but it excludes the (I suspect) majority who just bounce off it. I just bounced off it, and I have tried quite hard, repeatedly. Idea: for the rest of us who can't simply flip syntax around in our heads, there should be an infix Lisp that tries to preserve some of the power without the weird syntaxless syntax. There are of course several, of which maybe the longest-lived is Dylan: https://en.wikipedia.org/wiki/Dylan_(programming_language) https://en.wikipedia.org/wiki/Dylan_(programming_language) ... but instead of Dylan's Algol- or Pascal-like syntax, do a Dylan 2 with C-style syntax?
- pjmlp 2y agoIn what form? We have Dylan, Julia, and a couple of other attempts at the matter.
- anthk 2y ago>Emacs defalias On Common Lisp too, by defining defalias as a macro: https://stackoverflow.com/questions/24252539/defining-aliases-to-standard-common-lisp-functions https://stackoverflow.com/questions/24252539/defining-aliase...
- dahart 2y ago> Why is most AI work done in Lisp? That’s changed, of course, but it remained true for at least another 15 or 20 years after this article was written and then changed rather quickly, perhaps cemented with deep neural networks and GPUs. Other than running the emacs ecosystem, what else is Lisp being used for commonly these days?
- volltrottel 2y agoRunning hacker news
- tombert 2y agoCan't speak for the entire industry obviously, but at a few jobs I've had [1] Clojure is used pretty liberally for network-heavy stuff, largely because it's JVM and core.async is pretty handy for handling concurrency. I know a lot of people classify "Clojure" and "Lisp" in different categories, but I'm not 100% sure why. [1] Usual disclaimer: It's not hard to find my job history, I don't hide it, but I politely ask that you don't post it here.
- packetlost 2y ago> I know a lot of people classify "Clojure" and "Lisp" in different categories, but I'm not 100% sure why It mostly boils down to Clojure not having CONS cells. I feel like this distinction is arbitrary because the interesting aspect of Lisps is not the fact that linked-lists are the core data-structure (linked-lists mostly suck on modern hardware), but rather that the code itself is a tree of lists that enables the code to be homoiconic.
- pfdietz 2y agoI mean, you can have a tree of vectors also, so I don't see why lists are needed for homoiconicity.
- iLemming 2y agoNo, not needed. This argumentation can go both ways; some may even say, "Well, Python is 'Lispy,'" which to me is obviously not. It boils down to what can you do in the REPL, right? https://news.ycombinator.com/item?id=41844611 https://news.ycombinator.com/item?id=41844611
- AnimalMuppet 2y ago> Every computer language has arbitrary features, and most languages are in fact overloaded with them. A few, however, such as Lisp and Algol, are built around a kernel that seems as natural as a branch of mathematics. Algol? The kernel of Algol seems as natural as a branch of mathematics? Can anyone who has used Algol give their opinion of this statement?
- andyjohnson0 2y agoI did some Algol programming back in the late 80s - when it had mostly been obsoleted by Pascal, Modula, and even C for what we called "structured programming" back then. I remember it as a likeable, economical, expressive language, without significant warts, and which had clearly been influential by being ahead of its time. So my guess is that Hofstadter was just referring to its practical elegance - rather than the more theoretical elegance of Lisp.
- nxobject 2y agoOut of curiosity: which dialect on Algol, and on what platform?
- andyjohnson0 2y agoI'm not sure, but possibly Algol 68. It was on an IBM mainframe running VM/CMS - possibly a 3090. Long time ago...
- gavindean90 2y agoFrom what I’ve studied, Algol wasn’t designed for typical software development—its main purpose was to give computer scientists a way to describe algorithms with a level of rigor that mirrors mathematical notation.
- deleted 2y ago[deleted]
- retrac 2y agoC is basically Algol with curly braces and pointers. The sentiment expressed there is probably equally applicable to C, or maybe Pascal. Those are often held up today as a minimal example in contrast to Lisp. There is a sort of sparse, warty elegance to the family. Blocks, arrays, if/then, assignment, while loops. What more could you need?
- kjellsbells 2y agoRegardless of your opinion on the utility of Lisp, this is an exemplary piece of writing. Crisp, engaging, informative. God I miss old Scientific American. Today's SA isn't especially terrible, but old SA, like old BYTE, was reliably enlightening.
- taeric 2y agoAgreed. It saddens me how I feel I completely slept through a golden age of magazines out there. With no real clue how I could help support that coming back. I was happy with the section in Wireframe magazines that would show how to code some game mechanics every issue. Would love for more stuff like that.
- sgustard 2y agoThe title of his column and book "Metamagical Themas" is an anagram of Martin Gardner's previous column "Mathematical Games". It's clever wordplay turtles all the way down.
- madcaptenor 2y agoOther Hofstadter book titles with wordplay: - Gödel, Escher, Bach: an Eternal Golden Braid (you have GEB/EGB, and I guarantee you he noticed those notes form a musical triad) - Metamagical Themas (anagram of Mathematical Games) - Le Ton beau de Marot (I don't have my copy at hand, but "ton beau" is surely a pun on "tombeau" meaning "tomb") - The Mind's I (editor) (I = eye) - That Mad Ache (translation of "La chamade" by Francoise Sagan; "mad ache" is an anagram of "chamade")
- gjm11 2y ago"tombeau" literally means "tomb", but the term also sometimes means "piece written as a memorial", like Ravel's piano suite "Le Tombeau de Couperin". And yes, Hofstadter explicitly links "ton beau" with "tombeau" (he doesn't explicitly mention the "memorial" meaning, though when he mentions the literal "tombeau de Marot" he is talking specifically about the epitaph on it) and also with "tome beau", the great book of Marot's life and work. I'd find it a cleverer bit of wordplay if "le ton beau de ..." itself didn't feel clumsy. Surely it would always be "le beau ton de ..."?
- taeric 2y agoI do think LISP remains the major language that can encompass the strange loop idea he explored in his work. I know LISP is not the only homoiconic language, but it is the biggest that people know how to use where the "eval" function doesn't take in a string that has to be parsed. I hate that people are convinced LISP == functional programming, writ large. Not that I dislike functional programming, but the symbolic nature of it is far more interesting to me. And it amuses me to no end that I can easily make a section of code that is driven by (go tag) sections, such that I can get GOTO programming in it very easily.
- nine_k 2y agoAnother (properly functional) homoiconic language that enjoyed mainstream adoption briefly in '00s is XSLT. Its metaprogramming features were rather widely used, that is, producing an XSLT from XSLT and maybe some more XML, instead of hand-coding something repetitive, was rather normal. The syntax was a bigger problem than Lisp's syntax, though. It's not easy to produce a language with a syntax that's good as daily use syntax, but is also not unwieldy as an AST. Lisp is one of the few relatively successful examples.
- AnimalMuppet 2y ago> The syntax was a bigger problem than Lisp's syntax, though. Yeah. XML and S expressions are pretty close to functionally equivalent. But once you've seen S expressions, XML is disgustingly clumsy.
- nine_k 2y agoSGML was intended for sparse markup in mostly plaintext files. From it grew HTML that is markup-heavy, and XML which is often 100% markup. What made sense for rare markup nodes became... suboptimal when applied in a very different role.
- jll29 2y ago1. GML => SGML => XML 2. rm * 3. JSON 4. rm -rf /
- waffletower 2y agoI find this article to be quaint -- remember reading it decades ago and feeling more receptive to its perspective. Ironically, I prefer using Clojure (though some here challenge its status as a Lisp lol) to interface with Large Language Models rather than Python. Clojure in particular is much better suited, for some reasons that Hofstadter details, and if you can interact with an LLM over a wire, you are not beholden to Python. But what we use to interface to these massive digital minds we are building, including the Bayesian sampling mathematics we use to plumb them, may have their elegance, but they are orthogonal to the nearly ineffable chaos of these deeply interconnected neural networks -- and it is in this chaotic interconnectedness where artificial intelligence is actually engendered.
- deleted 2y ago[deleted]
- iLemming 2y ago> Clojure in particular is much better suited Clojure in general is far better suited for manipulating data than anything else (in my personal experience). It is so lovely to send a request, get some data, and then interactively go through that data - sorting, grouping, dicing, slicing, partitioning, tranforming, etc. The other way around is also true - for when you need to generate a massive amount of randomized data.
- troupe 2y ago> when you need to generate a massive amount of randomized data. Even faster than Clojure: Open VIM for a VS Code user and ask them to exit.
- iLemming 2y agoThere's no such thing as a "VS Code user", VS Code is the one that uses you, not the other way around. btw. this isn't some kind of an FP joke, there's no 'fun' in it, only sad truth.
- lenkite 2y ago
- dunefox 2y ago> I hope you enjoyed Hofstadter's idiosyncratic tour of Lisp. You can find more like this re-printed in his book Metamagical Themas. This seems like an interesting book.
- ceautery 2y agoIt was one of my favorites back in the 1980s. It was a followup to Gödel Escher Bach, written in much the same style.
- lopatin 2y agoAny Shen people in the house?
- corinroyal 2y agoAdmirer, not user. So ambitious and gorgeous. Hosted on Common Lisp with full integration, so useful now. I hope more people check it out. The new Shen book is awesome.
- jll29 2y agolinks?
- corinroyal 2y agoHere's a link to their website with the book: https://shenlanguage.org/TBoS/tbos.html https://shenlanguage.org/TBoS/tbos.html
- susam 2y ago> Attempting to take the car or cdr of nil causes (or should cause) the Lisp genie to cough out an error message, just as attempting to divide by zero should evoke an error message. Interestingly, this is no longer the case. Modern Lisps now evaluate (car nil) and (cdr nil) to nil. In the original Lisp defined by John McCarthy, indeed CAR and CDR were undefined for NIL. Quoting from <https://dl.acm.org/doi/pdf/10.1145/367177.367199 https://dl.acm.org/doi/pdf/10.1145/367177.367199>: > Here NIL is an atomic symbol used to terminate lists. > car [x] is defined if and only if x is not atomic. > cdr [x] is also defined when x is not atomic. However, both Common Lisp and Emacs Lisp define (car nil) and (cdr nil) to be nil. Quoting from <https://www.lispworks.com/documentation/HyperSpec/Body/f_car_c.htm https://www.lispworks.com/documentation/HyperSpec/Body/f_car...>: > If x is a cons, car returns the car of that cons. If x is nil, car returns nil. > If x is a cons, cdr returns the cdr of that cons. If x is nil, cdr returns nil. Also, quoting from <https://www.gnu.org/software/emacs/manual/html_node/elisp/List-Elements.html https://www.gnu.org/software/emacs/manual/html_node/elisp/Li...>: > Function: car cons-cell ... As a special case, if cons-cell is nil, this function returns nil. Therefore, any list is a valid argument. An error is signaled if the argument is not a cons cell or nil. > Function: cdr cons-cell ... As a special case, if cons-cell is nil, this function returns nil; therefore, any list is a valid argument. An error is signaled if the argument is not a cons cell or nil.
- susam 2y agoI was curious what it is like on Maclisp. Here is a complete telnet session with Lars Brinkhoff's public ITS: $ telnet its.pdp10.se 10003 Trying 88.99.191.74... Connected to pdp10.se. Escape character is '^]'. Connected to the KA-10 simulator MTY device, line 0 ^Z TT ITS.1652. DDT.1548. TTY 21 3. Lusers, Fair Share = 99% Welcome to ITS! For brief information, type ? For a list of colon commands, type :? and press Enter. For the full info system, type :INFO and Enter. Happy hacking! :LOGIN SUSAM TT: SUSAM; SUSAM MAIL - NON-EXISTENT DIRECTORY :LISP LISP 2156 Alloc? n * (status lispversion) /2156 (car nil) NIL (cdr nil) NIL ^Z 50107) XCT 11 :LOGOUT TT ITS 1652 Console 21 Free. 19:55:07 ^] telnet> ^D Connection closed. $
- 2y ago
- oaktowner 2y agoI just love his writing so much -- he captures what I felt when I discovered Lisp. As a kid learning programming in the 80s, I had already done some BASIC, Fortran, Pascal and COBOL in high school and early college. There were differences, of course, but they had some fundamental commonality. At UC Berkeley, however, the first computer science class was taught in Scheme (a dialect of Lisp)...and it absolutely blew me away. Hofstadter is right: it feels the closest to math (reminding me a ton of my math theory classes). It was the first beautiful language I discovered. (edit: I forgot to paste in the quote I loved!) "...Lisp and Algol, are built around a kernel that seems as natural as a branch of mathematics. The kernel of Lisp has a crystalline purity that not only appeals to the esthetic sense, but also makes Lisp a far more flexible language than most others."
- Jeff_Brown 2y agoHave you tried Haskell? It feels much closer to math to me. Definitions, not procedures. It even looks like math.
- oaktowner 2y agoNo! After about 10 years of writing software professionally, I moved over to product management, and my time spent coding decreased drastically (in the last 15 years, only some Python to show my kids a thing or two). But I'd love to try! Maybe I'll take an online class for fun.
- Jeff_Brown 2y agoI can't recommend it highly enough. You're already familiar with laziness from Lisp, but purity is another head-trip. It made me a better programmer in any language, and even a better software architect before I've written a line of code. And algebraic data types make it possible to make your code conform to reality in ways that classes can't. Once you're exposed to them, it's very much like learning about addition after having been able to multiply for your whole life. (In fact that's more than a metaphor -- it's what's happening, in a category theoretic sense.) Haskell has other cool stuff too -- lenses, effect systems, recursion schemes, searching for functions based on their type signatures, really it's a very long list -- but I think laziness, purity and ADTs are the ones that really changed my brain for the better.
- eigenhombre 2y agoI loved Hofstadter's writing on Lisp in Metamagical Themas and adapted the code in the last article of the series to Clojure for a study group at work, written up here[1]. [1] http://johnj.com/posts/oodles/ http://johnj.com/posts/oodles/ edit: clarification
- silcoon 2y agoNice, I wonder if there was a translation on a modern Lisp.
- abecedarius 2y agohttps://github.com/darius/cant/blob/master/examples/text/oodles.cant https://github.com/darius/cant/blob/master/examples/text/ood... though modern is a matter of fashion.
- susam 2y ago> In a testament to the timelessness of Lisp, you can still run all the examples below in emacs if you install these aliases: > (defalias 'plus #'+) > (defalias 'quotient #'/) > (defalias 'times #'*)* > (defalias 'difference #'-)* Looks like we also need a defmacro for def that is used much further in the article: > > (def rac (lambda (lyst) (car (reverse lyst)))) I mean the above example fails in Emacs: ELISP> (def rac (lambda (lyst) (car (reverse lyst)))) *** Eval error *** Symbol’s function definition is void: def If we want the above example to work, we need to define def like this: ELISP> (defmacro def (name lambda-def) `(defalias ',name ,lambda-def)) def Now the previous example, as presented in the article, works fine: ELISP> (def rac (lambda (lyst) (car (reverse lyst)))) rac ELISP> (rac '(your brains)) brains
- activitypea 2y agoI remember reading GEB and being shocked that he never mentions Lisp. He _does_ wade into CompSci topics, but it's something half-hearted about how compilers are programs that read and generate programs. This really should've been integrated into a revised edition of the book.
- lisper 2y agoHuh? He mentions Lisp all over the place. Check the index.
- deleted 2y ago[deleted]
- silcoon 2y agoGive it another go! _The Anatomy of LISP_ is the first entry in the bibliography.
- baruchthescribe 2y agoNonsense. "One of the most important and fascinating of all computer languages is LISP (standing for "List Processing"), which was invented by John McCarthy around the time Algol was invented. Subsequently, LISP has enjoyed great popularity with workers in Artificial Intelligence."
- deleted 2y ago[deleted]
- susam 2y agoIn case anyone else is confused by what the functions named "oval" and "snot" mean in the following example: > (cond ((eq (oval pi) pie) (oval (snot pie pi))) (t (eval (snoc (rac pi) pi)))) I realised after a few seconds that they are meant to be "eval" and "snoc" instead. The above code should be written as the following instead: (cond ((eq (eval pi) pie) (eval (snoc pie pi))) (t (eval (snoc (rac pi) pi)))) This article has been a fascinating read, by the way. Kudos to the maintainer of the Gist post. I am also sharing these corrections as comments on the Gist post. EDIT #1: Downloaded a copy of the original Scientific American article from https://www.jstor.org/stable/24968822 https://www.jstor.org/stable/24968822 and confirmed that indeed the functions "oval" and "snot" are misspellings of "eval" and "snoc". EDIT #2: Fixed typo in this comment highlighted by @fuzztester below.
- hinkley 2y agoOCR maybe?
- lionkor 2y agomaybe LLM "reformat/rewrite this"?
- fuzztester 2y ago>confirmed that indeed the functions "oval" and "snot" are misspellings of "eval" and "snot". Correction of your correction: confirmed that indeed the functions "oval" and "snot" are misspellings of "eval" and "snoc". And I guess snoc is cons reversed and rac is car reversed.
- susam 2y ago> Correction of your correction Thanks! Fixed. > And I guess snoc is cons reversed and rac is car reversed. Indeed! That's exactly how those functions are introduced in the article. Quoting from the article: > The functions rdc and snoc are analogous to cdr and cons, only backwards.
- Xen9 2y ago
- kevindamm 2y agoThis article, and the two companion articles it mentions, can be found in the book "Metamagical Themas" [0] in chapters 17-19, as well as all of his other articles that appeared in this series of Scientific American. [0]: https://www.goodreads.com/book/show/181239.Metamagical_Themas https://www.goodreads.com/book/show/181239.Metamagical_Thema... (the book's title is the article series, which originated as an anagram of the article series that Martin Gardner authored, "Mathematical Games," also published in Scientific American and which Hofstadter then took over)
- antitoi 2y agoI love this book. Highly recommended for all lovers of Godel Escher Bach (his classic).
- onemoresoop 2y agoThis book is indeed very beautiful to read and look at, it has a lot of fascinating illustrations.
- analog31 2y agoI read that article when it came out, as my parents subscribed to Scientific American. Even though I had learned BASIC and Pascal, the concepts in the article were just way over my head. Also, I had no access (that I was aware of at least) to a machine where I could try my hand at Lisp programming. Alas, I wish I had taken it more seriously. At least Hofstadter was successful at getting me interested in math beyond high school.
- lproven 2y agoMe too. I admire the theory of Lisp, but man, all the Lisp folks going "but don't you get it, the absence of syntax IS the syntax!" don't half get tiring. For some of us, we can just about handle the simple algebraic infix stuff, and we'll never make that leap to "my god, it's full of CARs". https://xkcd.com/224/ https://xkcd.com/224/
- anthk 2y agoIf you have a look on some Emacs code (and modules such as Mastodon.el), you'll see than the syntax is not that scary, as Lisp makes it trivial to modularize code into smaller functions.
- lproven 2y agoI have spent years writing about and studying Lisp, including buying several books. This is categorically not the case. Let me paraphrase my own post from Lobsters a year or two back: I hypothesise that, genuinely, a large fraction of humanity simply lacks the mental flexibility to adapt to prefix or postfix notation. Algebraic notation is, among ordinary people, almost a metonym for “complicated and hard to understand”. I suspect that most numerate people could not explain BODMAS precedence and don’t understand what subexpressions in brackets mean. I have personally taught people to program who did not and could not understand the conceptual relationship between a fraction and a percentage. This abstraction was too hard for them. Ordinary line-numbered BASIC is, I suspect, somewhere around the upper bound of cognitive complexity for billions of humans. One reason for the success of languages with C syntax is that it’s the tersest form of algebraic notation that many people smart enough to program at all can handle. Reorder the operators and you’ve just blown the minds of the majority of your target audience. Game over. I admire Lisp hugely, but I am not a Lisp proponent. I find it fascinating and the claims about it intrigue me, but to me, personally, I find it almost totally unreadable. Those people I am talking about? I say this became I am one. I myself am very firmly in the camp of those for whom simple algebraic infix notation is all I can follow. Personally, my favourite programming language is still BASIC.
- bsder 2y agoThis article simply reinforces that the primary problem with the popularity of Lisp was people explaining Lisp. This article, like every other Lisp article, tells pre-teen me nothing that he could use. Nobody ever demonstrated how much easier task X is in Lisp over asm/C/Pascal/etc. By contrast, current me could have told pre-teen me "Hey, that spell checker that took you 7 months to write in assembly? Yeah, it's damn near trivial in Lisp on a microcomputer with bank switched memory that nobody every knew how to utilize (it makes garbage collection completely deterministic even on a woefully underpowered CPU). Watch." I want to weep over the time I wasted doing programming with the equivalent of tweezers, rice grains and glue because every Lisp article and textbook repeated the same worn out lists, recursion and AI crap without ever demonstrating how to do anything useful.
- _19qg 2y agoPractical Common Lisp https://gigamonkeys.com/book/ https://gigamonkeys.com/book/
- bsder 2y agoDidn't exist back then. Likewise SICP first edition was 1996. I did have a copy of "LISP: A Gentle Introduction to Symbolic Computation" by Touretzky in 1986. It wasn't really that much better than any of the articles. It never explained why using Lisp would be so much easier than anything else even for simple programming tasks. Had some of the Lisp hackers deigned to do stuff on the piddly little micros and write it up, things would look a whole lot different today. Maybe there was a magazine somewhere doing cool stuff with Lisp on micros in the 1980-1988 time frame, but I never found it.
- keithwinstein 2y agoThe first edition of SICP came out in the fall of 1984 (a year after these Hofstadter columns). This fall is the 40th anniversary!
- bsder 2y ago
- timonoko 2y agoMaclisp goodness: (compress (reverse (explode x))) Elisp much improved: (defun explode (x) (if (symbolp x) (setq x (symbol-name x))) (string-to-list x)) (defun compress (x) (concat x))
- _yb2s 2y ago(upgrade (mail (change (trash (fix (break (use (buy it))))))))
- fuzztester 2y ago(learn (lisp) with fixnum parentheses) https://en.m.wikipedia.org/wiki/Teach_Yourself_Scheme_in_Fixnum_Days https://en.m.wikipedia.org/wiki/Teach_Yourself_Scheme_in_Fix...
- deleted 2y ago[deleted]
- _yb2s 2y agohttps://www.wikihow.com/Develop-a-Sense-of-Humor https://www.wikihow.com/Develop-a-Sense-of-Humor
- fuzztester 2y agohe he. good one. but you may have misunderstood what I meant. I wasn't criticizing you. it was just a joke related to that scheme book.
- timonoko 2y agoI was wrong: It was "implode" in Maclisp. (compress (reverse (explode 'ABC))) ;COMPRESS UNDEFINED FUNCTION OBJECT (implode (reverse (explode 'ABC))) CBA The point being that I never learn any fancy string-processing commands. I just implement explode and compress.
- g19205 2y ago
- smrq 2y agoI certainly know the Lisp information in this article already, but it's still a fun read. Hofstadter just has a charming way with words. I found this bit extra amusing: >It would be nice as well as useful if we could create an inverse operation to readers-digest-condensed-version called rejoyce that, given any two words, would create a novel beginning and ending with them, respectively - and such that James Joyce would have written it (had he thought of it). Thus execution of the Lisp statement (rejoyce 'Stately 'Yes) would result in the Lisp genie generating from scratch the entire novel Ulysses. Writing this function is left as an exercise for the reader. It took a while, but we got there. I don't think 2024's AI is quite what he had in mind in 1983, but you have to admit that reproducing text given a little seeding is a task that quite suits the AI of today.
- furyofantares 2y ago40 years ago, and 20 years into the field: > February, 1983 > IN previous columns I have written quite often about the field of artificial intelligence - the search for ways to program computers so that they might come to behave with flexibility, common sense, insight, creativity, self awareness, humor, and so on. This is very amusing to me because it reads like a list of things LLMs truly stink at. Though at least they finally represent some nonzero amount of movement in that direction.
- zyklu5 2y agoYou must interact with more interesting people than I because to me LLMs have demonstrated as much "common sense, insight, creativity, self awareness, humor" as the average person I run into (actually maybe more but that makes me sound crazy to myself).
- ska 2y agoHis research group has a long history of trying to tackle these problems. Some interesting reading , even if much of it hasn’t (yet?) panned out .
- marbletiles 2y agoWhat dialect is he using that has “plus” vs “+” and so on?
- paulddraper 2y ago> As you might expect, the value of the atom 1729 is the integer 1729, and this is permanent. (I am distinguishing here between the atom whose print name or pname is the four-digit string 1729, and the eternal Platonic essence that happens to be the sum of two cubes in two different ways - i.e., the number 1729.) He is? What is the distinguishment he is making? This writing styling is....interesting.
- WolfeReader 2y agoThe lisp atom 1729 is like a "constant" in a programming language, representing a particular arrangement of bits in lisp systems. The integer 1729 is a number that, in a mathematical sense, has always existed and will always exist regardless of computer systems. While some atoms can be assigned values, the atom 1729 cannot be assigned any value other than the number 1729.
- Y_Y 2y agoAn atom is something defined in the semantics of lisp and a part of the program, it will be represented as bits in the computer memory and as pixels on the screen. A number is a very general concept with many representations, on of which is as a lisp atom, and another could be a pile of 1729 kiwis. The kiwis and the code both represent the number, but they don't represent each other.
- shrubble 2y agoThe use of 1729 would be known to people who know about Ramanujan: https://en.wikipedia.org/wiki/1729_(number) https://en.wikipedia.org/wiki/1729_(number)
- Y_Y 2y agoHey, that's the code to my safe!
- rsktaker 2y agoInteresting article, I enjoyed following along - but I do hate the parentheses lol
- eska 2y ago* After this "def wish" has been carried out, the rac function is as well understood by the genie as is car. * Sometimes I wonder what non-programmers think about us when they hear us talk..