
I’ve Consed Every Pair - DonHopkins
https://medium.com/@peternorvig/ive-consed-every-pair-54ef5d9d93b6
======
mark_l_watson
Peter tech-reviewed the second edition of my Java AI book and made the comment
that Java was half as good as Common Lisp for AI and that was probably good
enough (we had both written Common Lisp books). He then went to Google and I
had lunch with him; I was surprised that he was using Python.

I like his poem in the article!

A little off topic, but I retired (that is a bit of a joke) and at the age of
69, this year I decided that for maximum programming enjoyment I would only
use Lisp languages (linking in Python and TensorFlow on occasion). I am
approaching 40 years using Common Lisp and using the language is so much fun.
I bought a license for LispWorks and using it for developing a semantic web
app.

~~~
PythagoRascal
If I may ask, what references would you recommend to someone interested in
something like Lisp, but who has never touched a functional language before?

~~~
pcr910303
Not OP, but Lisp isn’t really a functional language — it’s a usual language
that also has some functional ideas inside. Mutation is common, don’t think
Lisp will be a language like Haskell.

For resources, I would recommend Practical Common Lisp[0] and PAIP[1].

For some modern development practices, the Common Lisp Cookbook[2] is great.

[0]: [http://www.gigamonkeys.com/book/](http://www.gigamonkeys.com/book/)

[1]: [https://github.com/norvig/paip-lisp](https://github.com/norvig/paip-
lisp)

[2]: [http://lispcookbook.github.io/cl-
cookbook/](http://lispcookbook.github.io/cl-cookbook/)

~~~
munificent
_> Lisp isn’t really a functional language — it’s a usual language that also
has some functional ideas inside._

The idea that "functional language" means "purity" is something that was
retconned onto functional programming in the 90s decades after Lisp had
defined functional programming to mean programming in terms of expressions
that produce values.

I like the ML/Miranda/Haskell lineage of languages a lot, but it _really_ bugs
me when people in that camp lay claim to some notion of being a "better"
functional language than the older Lisp family. (Lispers, while smug about
many other things, are generally less smug about how "pure" their languages'
approach to functional programming is.)

This is like arguing that Lagavulin isn't "really" whiskey because real
whiskeys are made in the US from corn mash.

~~~
DonHopkins
Lisp is "Functiony"! ;)

But it took JavaScript to invent the concept of "Truthy".

[https://www.sitepoint.com/javascript-truthy-
falsy/](https://www.sitepoint.com/javascript-truthy-falsy/)

~~~
hedora
Perl 5 has truthy values, and it came out a year (1994) before JS (1995). The
idea probably appeared in Perl 1 (1987), and probably was borrowed from shell
scripting, etc. It wouldn’t surprise me if “Truthy” predated unix.

------
nathell
In the genre of Lisp songs, I love “God wrote in Lisp”, by Julia Ecklar.
Touted as a parody, but it actually has beautiful lyrics.

[https://www.gnu.org/fun/jokes/eternal-
flame.html](https://www.gnu.org/fun/jokes/eternal-flame.html)

~~~
lihaciudaniel
>I love “God wrote in Lisp”, by Julia Ecklar.

Would bet to be HolyC or "I might be wrong"

~~~
pantalaimon
[https://xkcd.com/224/](https://xkcd.com/224/)

------
stickydink
Now, obviously, someone has to run this through Jukebox?

[https://openai.com/blog/jukebox/](https://openai.com/blog/jukebox/)

[https://news.ycombinator.com/item?id=23032243](https://news.ycombinator.com/item?id=23032243)

------
gambiting
Can someone explain what this means? What is this "consed" he is talking
about? I'm a c++ programmer, "consed every pair" means nothing to me.

~~~
simongray
Cons cells are the traditional Lisp data structure making up the nodes of a
linked list. It comes from the cons function which is short for "construct".

Ironically, Clojure doesn't use cons cells, although it does have a cons
function.

~~~
junke
Additionally, "to cons" more broadly means "to allocate memory".

~~~
DonHopkins
And remember, that's "CONS" not "CON"!

Don't confuse CONS ARTISTS:

[https://en.wikipedia.org/wiki/Category:Lisp_people](https://en.wikipedia.org/wiki/Category:Lisp_people)

With CON ARTISTS:

[https://en.wikipedia.org/wiki/List_of_con_artists](https://en.wikipedia.org/wiki/List_of_con_artists)

~~~
dunefox
"He is the cons man of the operation."

------
dowakin
Peter Norvig is the most inspiring genius in my coding world. I met(virtually)
him via AI course in Udacity and since that time I enjoy all reading/watching
from him.

His book AI programming(Lisp version) is a gem that I enjoy reading. I've
finish a book a few times already - but every time I read I find something new
that I missed previous time.

------
jakear
Probably familiar to some of you, but a song you can actually listen to along
the same vein, showed to me by Sussman:
[https://www.bing.com/videos/search?q=god+wrote+lisp&view=det...](https://www.bing.com/videos/search?q=god+wrote+lisp&view=detail&mid=88D1554531D6486AF6AA88D1554531D6486AF6AA&FORM=VIRE&PC=APPL)

~~~
DonHopkins
Maybe he's not as as mellifluous as that, but here's a recording Mitch Bradley
singing the Open Firmware theme song! But at least he's more mellifluous than
Richard Stallman singing the Free Software song.

[https://news.ycombinator.com/item?id=9844026](https://news.ycombinator.com/item?id=9844026)

That same Open Firmware Forth system [1], which was developed by Mitch Bradley
[2], was not only in the PowerPC Mac bios, but it was originally used for the
SparcStation boot roms, and eventually in the OLPC, and it was even an IEEE
Standard 1275-1994!

[1]
[https://en.wikipedia.org/wiki/Open_Firmware](https://en.wikipedia.org/wiki/Open_Firmware)

[2]
[https://en.wikipedia.org/wiki/Mitch_Bradley](https://en.wikipedia.org/wiki/Mitch_Bradley)

In fact: the Open Firmware boot loader and plug-in card firmware interface
technology, commonly used by both Sun and Apple, is the only firmware standard
in existence to have its own theme song [3] !!!

[3]
[https://web.archive.org/web/20070204145613/http://playground...](https://web.archive.org/web/20070204145613/http://playground.sun.com/pub/1275/misc/ofwsong.au)

    
    
        : OpenFirmwareSong ( -  )
            \ By Mitch Bradley.
            \ Sung to the tune of "The Flintstones".
            𝄞
            ." Firmware" cr
            ." Open Firmware" cr
            ." It's the appropriate technology," cr
            ." Features" cr
            ." FCode booting" cr
            ." Hierarchical DevInfo tree." cr
            ." Hack Forth" cr
            ." Using Emacs on the keys," cr
            ." Save in" cr
            ." NVRAM if you please." cr
            𝄒 cr
            ." With your" cr
            ." Open Firmware" cr
            ." You can fix the bugs in no time" cr
            ." Bring the kernel up in no time" cr
            ." We'll have an FCode time!" cr
            𝄒 cr
            \ Thank you and good night!
            reboot
        ;

------
DonHopkins
I tried writing some of my own verses for this song, but I couldn't think of
anything that rhymed with RPLACA and CDADAADR.

Speaking of consing every pair, here's a previous discussion about "The Origin
of CAR and CDR in Lisp (2005) (iwriteiam.nl)":

[https://news.ycombinator.com/item?id=16008239](https://news.ycombinator.com/item?id=16008239)

[http://www.iwriteiam.nl/HaCAR_CDR.html](http://www.iwriteiam.nl/HaCAR_CDR.html)

~~~
dang
Funny you bring up rhymes; my brain keeps matching "I've Consed Every Pair,
Man" with "Bicycle Repairman".

[https://www.dailymotion.com/video/x2howud](https://www.dailymotion.com/video/x2howud)

~~~
DonHopkins
Straight up admission of HN's rabid pro-Python bias at the end there.

------
sillysaurusx
Arc is underrated as an information management tool. There's something to be
said for having a web framework that works out of the box. Rails is probably
the only other framework that makes it as easy to "just make some forms that
pass data around and run some code on that data." But not quite -- I haven't
seen arc's closure-storing technique used in any other web framework.

The main issue that arc solves is that it gives you a full pipeline for
managing "objects with properties" via the web. It's so flexible. I wrote a
thread on how we're using it in production to manage our TPUs:
[https://twitter.com/theshawwn/status/1247570883306119170](https://twitter.com/theshawwn/status/1247570883306119170)

~~~
throwanem
You haven't been around long enough, at least under the same name, to remember
when there was an implicit time limit on the comment reply page, inflicted by
those stored closures silently timing out. Having long comments so often eaten
that way was actually the specific thing that annoyed me into first installing
It's All Text.

It's an interesting approach, as attempts to force statefulness on a
stateless-by-design protocol go, but I don't know that I like how it scales.

~~~
sillysaurusx
My account was reset. I've been around since day two. :)

You're right, it has some downfalls. But a lot of the time it simply doesn't
matter. All the links at
[https://www.tensorfork.com/tpus](https://www.tensorfork.com/tpus) are
dynamic, and the speed you gain by being able to whip up a feature in 10
minutes is worth the pain of an occasional dead link.

On the other hand, I did some work for "deduplicating fnids":
[http://arclanguage.com/item?id=20996](http://arclanguage.com/item?id=20996)
which the site is using, so the links possibly last much longer than the
early-HN links.

(Basically, we calculate the fnid key based on the lexical environment, rather
than using a random ID each time the page is loaded. So each link gets a
unique ID based on the code structure rather than a random ID. Meaning,
instead of millions of random links to store, you end up with a few tens of
thousands.)

~~~
DonHopkins
Are fnids anything like Fnords?

[https://en.wikipedia.org/wiki/Fnord](https://en.wikipedia.org/wiki/Fnord)

Or are they more like Vermicious Knids?

[https://roalddahl.fandom.com/wiki/Vermicious_Knids](https://roalddahl.fandom.com/wiki/Vermicious_Knids)

~~~
sillysaurusx
It's short for function ID. If you want to route requests to specific
closures, you have to have some sort of ID that you can send down to the user.
Arc stores closures in a hash table keyed by random ID, but we use lexical
structure plus lexical values (like username) to make the key deterministic.
It greatly cut down on the number of closures that needed to be stored.

Basically, if you have a closure that does a certain action – e.g. editing a
comment – Arc generates new a closure every page refresh. That was the root
reason for the "dead link problem" during the early days of HN. I reworked it
to make the closure IDs deterministic.

If you walk the source code from the point of the closure up to the root, and
then you stick all the local variables in a list and use that as a key, then
hash that, along with the _actual source code_ , you end up with something
that (a) has a very low probability of collision, and (b) is deterministic
each time the page refreshes, unless the variables' values change. (E.g. if
you store the current time in a local variable, the value changes, so the fnid
will change as well, since that value is captured by the closure and therefore
the closure has to do something different by definition.)

~~~
throwanem
That sounds like a complicated fix! How many tens of minutes did it take? And
how many tens of minutes did the bug cost, in effort spent on comments that
got eaten instead of posted?

(I know there's no way to answer that last question, but that doesn't mean its
answer is equal to zero.)

~~~
throwanem
(Ah, never mind, I see this line of thought has already been explored nearby.
I've nothing to add beyond what's already been said there.)

~~~
sillysaurusx
It was complicated, but at one point I was so in love with Arc that I wanted
to give it a real shot at taking over the world. It seemed like a necessary
change to make, since the moment someone brought up dead links as a slight
against arc, I could point to the change and say, "Already fixed!"

(I made a few other improvements, like having accurate line numbers in error
messages, and a clojure-style REPL for emacs:
[https://www.youtube.com/watch?v=3v1KpEmuPeM](https://www.youtube.com/watch?v=3v1KpEmuPeM))

------
talaketu
With apologies to Geoff Mack, here's a performance by Lucky Starr:
[https://www.youtube.com/watch?v=dpRvAnhHfmc](https://www.youtube.com/watch?v=dpRvAnhHfmc)

~~~
adrianmonk
As long as we're doing recordings of the song, Hank Snow:
[https://www.youtube.com/watch?v=jet7Ue743Do](https://www.youtube.com/watch?v=jet7Ue743Do)

------
daly
Is this set to music somewhere? I've been writing in lisp since using Lisp 1.5
in college; nearly 50 years.

~~~
evanb
There's a great hack showing the Johnny Cash original version of the song,

[http://www.johnnycashhasbeeneverywhere.com/](http://www.johnnycashhasbeeneverywhere.com/)

------
avmich
Professor steps one level up in awesomeness :) .

Skip here comments regarding AI online courses, questions related to AIMA and
PAIP books. It's not quite a good opportunity to inquire about finer points of
JScheme or even ask clarifications along last September interview with Lex
Fridman. The art of maintaining approachability for beginners and reference
level of usefulness for advanced is not easy, but it's demonstrated - and here
is flipped on another human side. Peter, thank you for your works for all of
us.

------
Optimal_Persona
Haha! I love Medeski Martin & Wood's version of "Let's Go Everywhere" with
Col. Bruce Hampton on vocals:
[https://www.youtube.com/watch?v=7WMzDRtU0wU](https://www.youtube.com/watch?v=7WMzDRtU0wU)

------
nickburlett
Reminds me of CS 314, the musical
[http://captainchang.com/cs314-musical.html](http://captainchang.com/cs314-musical.html)

> Think in hex, think in hex

> Look around you, who needs dec?

> You can do anything in base sixteen or I'll go to my rest!

~~~
kqr2
Or how about _Kill Dash Nine_ the rap song:

[https://www.youtube.com/watch?v=IuGjtlsKo4s](https://www.youtube.com/watch?v=IuGjtlsKo4s)

------
Keyframe
This is stupid and I love it, but come on - who sits down with Norvig and does
not know his Lispen background?

~~~
DonHopkins
People who also think John McCarthy has no sense of decency?

[https://www.senate.gov/artandhistory/history/minute/Have_you...](https://www.senate.gov/artandhistory/history/minute/Have_you_no_sense_of_decency.htm)

------
dang
I feel like there were other things like this that people like Guy Steele
wrote in the heyday of things like this. More serious people with better
memories will be able to say.

~~~
jecel
Guy Steele's "Tree" poem: [http://prl.ccs.neu.edu/img/gls-trees-
poem-1979.pdf](http://prl.ccs.neu.edu/img/gls-trees-poem-1979.pdf)

~~~
dang
Thanks! And you reminded me of
[https://news.ycombinator.com/item?id=10785349](https://news.ycombinator.com/item?id=10785349)

------
hangonhn
This may be the opposite song to "I've Consed Every Pair":

"Write in C":
[http://www.poppyfields.net/filks/00259.html](http://www.poppyfields.net/filks/00259.html)

Someone apparently made a YouTube video too:
[https://www.youtube.com/watch?v=wJ81MZUlrDo](https://www.youtube.com/watch?v=wJ81MZUlrDo)

------
jedberg
The most important thing I ever learned from Professor Norvig was how to not
get fat at Google. He said, "Never take a tray. If it won't fit on one plate,
it's too much".

A wise man.

I mean I suppose some of the stuff I learned from his textbook was pretty
useful too.

~~~
eyelidlessness
What advice would you give to those of us who struggle with our weight,
regardless of the size of our plate, who came here to discuss lisp and not
what the author of the blog post said to you one time about food portions?

~~~
silviogutierrez
Write down what you eat. Even if you change nothing, you'll re-consider
grazing/snacking. Write it down _before_ you eat it for extra effectiveness.

Shameless plugs in my post history. But to be clear, even a sheet of paper can
be tremendously helpful.

~~~
eyelidlessness
As a person who recalls every bite and gains weight at one meal a day with no
snacking at all, this is not helpful. I'm still looking for advice on why I'm
being told to count my food intake in a lisp discussion.

~~~
parasubvert
This is no more a lisp discussion than a Johnny Cash discussion. You can
ignore the top post if it doesn’t interest you.

As an aside, obesity is a disease that hormonally and mentally encourages self
deception. The point of writing everything down and (most importantly)
translating this list into objective calorie counts (usually looked up from a
third party reference) is to remove this self deception. It is one of the most
effective ways to leverage logic and willpower over habits and hormones. There
are other ways of course.

~~~
eyelidlessness
The post is a topic that discusses tech. The commenter discussed eating advice
to “avoid getting fat” that is plainly unbelievable to people who experience
weight gain following said advice and who don’t benefit from being told to
starve themselves more or be more hyper aware of the fact that it doesn’t
matter how little they eat they gain weight. The post had nothing to do with
getting fat.

Of course I’m welcome to ignore everything that makes me feel bad for gaining
weight but it’s shitty to be gaining weight and told it’s my fault for eating
too much when I barely eat.

~~~
User23
Have you tried lifting heavy weights? Follow a program like Starting Strength
and make that calorie surplus work for you. Being skinnyfat isn’t really a
compelling goal. Lift and gaining weight becomes a good thing, because it
means you’re putting on muscle.

~~~
hvna
Starting strength is great for smaller men and women but can be hard on bigger
people. Especially with Rippletoe's eating philosophy. I gained 15kg when I
started SS so be careful. It was worth it and my numbers went up a ton, but
it's always good to measure your options. If you're very large it is
worthwhile to hire a trainer. They will teach you how to get started easily
without jumping off the deep end.

------
chiph
Man. I miss Johnny Cash.

His cover of NIИ's _Hurt_ is so powerful. June Carter (his wife) died a few
months after filming the video, and that just broke his heart. Johnny followed
her less than six months later.

[https://www.youtube.com/watch?v=8AHCfZTRGiI](https://www.youtube.com/watch?v=8AHCfZTRGiI)

Trent Reznor admitted that the song was no longer his after watching it.

~~~
malkia
I like mostly metal, industrial, heh even ska, ... bust mostly death metal,
but then there is Johnny Cash, and I hate country - though not Johnny - there
is something about it - also Willie Nelson (and few other, probably there is
more, it's just that I don't like mainstream one...)

~~~
Gollapalli
Nah, most country on the radio just doesn't have the same kinda honesty that
Johnny Cash or Willie Nelson had. Nor do they have the kind of intensity that
a man like Cash had. It just isn't the same. Fellow metalhead who likes ska,
btw.

~~~
coreyp_1
If you like them, you should also consider Ray Wylie Hubbard. Slightly
different style, but in the same vein of truth.

~~~
malkia
Hey thanks, just googled and found this concert - and yes, it's my thing -
[https://www.youtube.com/watch?v=y9_xBIuV9nE](https://www.youtube.com/watch?v=y9_xBIuV9nE)
\- wonder why country is not like this... then again even modern metal is not
to my liking - so I maybe just old :)

That to be said, recently discovered Ho99o9 and love them.

------
masonic

      this Johnny Cash song
    

Cash made it popular in the USA, but it was composed by Australian Geoff Mack.

~~~
dang
My inner Canadian asks me to point out that Hank Snow made it popular in the
USA.

------
TurboHaskal
It's not ironic once you realise that most Clojure developers are converts
from other languages and new to Lisp.

------
hprotagonist
Ah, filk. Never die.

------
floatingatoll
Paragraph one sounds like Hanahaus.

------
abdulhaq
Is Peter waving or drowning?

If a pair is consed in a forest, and no one observes it, did it really happen?

~~~
daly
That depends> Did you look before or after GC?

------
microcolonel
But peter, don't be fooled, those are not pairs, that's a seq!

------
Waterluvian
I'll admit I don't think I've really noticed the presence of lisp online other
than when people want to talk about lisp. Can someone share some practical
examples of where lisp is being used? Maybe a popular open source project I
never realised was written in a lisp family language?

~~~
downerending
It's a little sad that it's declined so far. In a way, it's a victim of its
own success--it's so easy to write a lisp system that literally dozens, if not
hundreds, of variants sprang up. The community was divided, and it never quite
came through.

IIRC, our fearless leader PG made his zillions using Lisp.

~~~
kazinator
The division was never a problem during the heyday. The decline in Lisp in
fact started at the height of standardization.

> _it 's so easy to write a lisp system_

Have you tried it, and how far did you get?

Making a Lisp system useful for production is pretty brutal.

13 years into it you will be debugging some eleven-year-old GC or compiler
bug.

People think it's easy because they visualize the job as being done when some
executable file converts (+ 1 1) into 2.

~~~
downerending
Maybe it declined for other reasons, but my impression was that the Lisp world
was very splintered. I certainly can't think of any other example of a set of
quite similar languages that's anywhere near as large.

The Xerox Dandelion and friends was a thing to behold. If you ever got to
touch one, you never forgot it.

In my school, implementing a basic Lisp interpreter was part of a required
class in the CS curriculum. (If it's not still, everywhere, well, then _for
shame_.)

Yeah, production is something else entirely. By "easy", I mean that dozens if
not hundreds of people were tempted to write their own slightly better Lisp.
Many of those did reach a production-ish level. But then what? There was no
flag to rally around--just lots and lots of niche systems.

I'm not sure. I think if the community had rallied around Common Lisp or
Scheme, or maybe just those two, it might have ruled the world. It just didn't
happen.

And I'm miserably sad about that. What do we have now? Elisp is great, but I
can't build production on emacs. I'll look at Clojure, but I'm dubious. Python
is kind of lispy, but has had its own destructive schism. And C++ marches on--
somewhere buried in there is a mildly functional lisp, using the worst of all
possible syntaxes.

~~~
TeMPOraL
I'd think a refreshed Common Lisp would still have a chance. It's a great
language with some really solid open-source implementations, but it got
standardized at the transition point in our industry, so the spec doesn't even
consider (now-commonplace) things like threading or networking, while exposing
you to some abstractions over systems died out.

The problems of CL wouldn't be unsurmountable if the community was larger,
though. All the important stuff that wasn't standardized gets added by each
implementation anyway, and then portability libraries get created that ensure
consistent interface. But the state of most libraries is... rough at the
edges. I contrast that with Clojure, with which I spent some months over the
last two years. The library ecosystem (not Java-side, but Clojure-specific) is
great, and a lot of care goes into it. I particularly remember being in awe of
just how _thorough_ Liberator is[0].

\--

[0] - [http://clojure-
liberator.github.io/liberator/tutorial/decisi...](http://clojure-
liberator.github.io/liberator/tutorial/decision-graph.html)

------
PaulAJ
My first thought looking at the title was to wonder if he had Climbed Every
Mountain.

------
zerr
I bet he hasn't used LISP 2.

------
MhMRSATORI
Have you read your SICP today‽

------
MichaelMoser123
cons lists are kind of slow because they don't play well with CPU caches. Are
there any ideas how to adapt Lisp (or LISP) so that it plays well with current
CPU architectures?

~~~
kazinator
> _cons lists are kind of slow because they don 't play well with CPU caches._

Cons lists were slow on the IBM 704 too. Good thing that didn't stop anyone,
right?

> _Are there any ideas how to adapt Lisp (or LISP) so that it plays well with
> current CPU architectures?_

An ARRAY feature was described in the 1960 Lisp manual. That's probably
because it was recognized that linked lists weren't the be-all data structure
even on the IBM 704; sometimes it's nice to have compact storage and fast
random access.

Can we move past this in 2020?

Let's leave this to the people who have a single aggregate structure in their
programming language that is ambiguous between list and array.

~~~
dreamcompiler
If I can elaborate just a bit on kazinator's comment: While it's still
possible to use cons cells as one's sole data structure in Lisp, no Lisp
programmer with any experience does that. Making cons cells faster would be
like forcing horses to drink Red Bull so they could pull chariots as fast as
cars. It's a solved problem -- just use a car (npi) -- and there's no need to
abuse any horses.

------
blakesterz
I remember reading something someplace that was something like ... the problem
with being old and full of wisdom is it's hard to share that wisdom with the
people that need it most without sounding like an old condescending jerk.
Plus, they won't listen anyways. The best you can hope for is that when they
are old and full of wisdom they'll remember you and think "hey that old guy
was right" . I know when I was 25 I was damn sure I knew better than anyone
twice my age.

~~~
gumby
> I know when I was 25 I was damn sure I knew better than anyone twice my age.

This is why I've long believed voting systems should restrict the voting age
to 16-28. After all, whom would you rather have voting: people wracked with
doubt and who fear their own ignorance, or people who know everything?

~~~
mirimir
I'd rather have "people wracked with doubt and who fear their own ignorance"
:)

~~~
gumby
Ah, so you don't believe in experts, eh? Not even ones apparently expert on
_every_ subject?

~~~
mirimir
As a non-testimonial litigation consultant, I used to joke that I could pose
as an expert in anything, given a couple months.

But in truth, one of my favorite deposition answers goes something like this:

> I'm not prepared to offer an opinion on that question.

~~~
gumby
My joking aside, the tragedy is only the truely expert are willing to make
this answer.

~~~
mirimir
Right.

But actually, "prepared" is often literally the case.

Before critical depositions, experts spend a day or two, with attorneys and
consultants, practicing replies. And experts are very cautious about answering
unexpected questions.

------
throwaway99AA99
> I found it ironic that this programmer seemed not to realize that I had used
> Lisp as my primary language for 15 years of my career.

Why is that ironic?

~~~
ggm
If somebody is trying to school you, and if there is a reason to believe you
work in a genius-factory, then its ironic that the school-er doesn't do their
homework into the school-ee to understand what they might be doing.

Go back to school?

~~~
quickthrower2
School you?

Sounds like someone mentioned how awesome a Lisp is. Ironically he said to
someone who has done a bit of Lisp before. There ain't much to the OP story,
or at least he hasn't divulged that much, but the song he wrote is pretty
cool.

~~~
smabie
Op is Peter Norvig, someone who any self respecting lisper should have heard
of.

~~~
lonelappde
Please don't gatekeep respect

~~~
apotheon
I'm not sure whether you're serious.

------
jiveturkey
finally. a useful post on medium.

------
balthasar
Maybe the most cringy thing I have read on here.

~~~
dang
That's part of the tradition it belongs to.

------
kazinator
> _While that is a sentiment with which I can wholeheartedly agree, ..._

... (since, ya know, I rewrote a Lisp book to make it about Python, so if I
said what I really think, there would be no end to the crow I'd have to eat),
but anyway ...

~~~
DonHopkins
Peter Norvig explained why he came to Python from Lisp in an HN posting a
decade ago:

[https://news.ycombinator.com/item?id=1803815](https://news.ycombinator.com/item?id=1803815)

>norvig on Oct 18, 2010 | parent | favorite | on: Ask PG: Lisp vs Python
(2010)

>Peter Norvig here. I came to Python not because I thought it was a
better/acceptable/pragmatic Lisp, but because it was better pseudocode.
Several students claimed that they had a hard time mapping from the pseudocode
in my AI textbook to the Lisp code that Russell and I had online. So I looked
for the language that was most like our pseudocode, and found that Python was
the best match. Then I had to teach myself enough Python to implement the
examples from the textbook. I found that Python was very nice for certain
types of small problems, and had the libraries I needed to integrate with lots
of other stuff, at Google and elsewhere on the net.

>I think Lisp still has an edge for larger projects and for applications where
the speed of the compiled code is important. But Python has the edge (with a
large number of students) when the main goal is communication, not programming
per se.

>In terms of programming-in-the-large, at Google and elsewhere, I think that
language choice is not as important as all the other choices: if you have the
right overall architecture, the right team of programmers, the right
development process that allows for rapid development with continuous
improvement, then many languages will work for you; if you don't have those
things you're in trouble regardless of your language choice.

Kenny Tilton (smuglispweeny) tells this story, that ced posted a link to in
the same discussion:

[https://news.ycombinator.com/item?id=1803627](https://news.ycombinator.com/item?id=1803627)

>ced on Oct 18, 2010 | parent | favorite | on: Ask PG: Lisp vs Python (2010)

>That reminds me of a cool story, in Norvig's talk about Python...

>When he finished Peter [Norvig] took questions and to my surprise called
first on the rumpled old guy who had wandered in just before the talk began
and eased himself into a chair just across the aisle from me and a few rows
up.

>This guy had wild white hair and a scraggly white beard and looked hopelessly
lost as if he had gotten separated from the tour group and wandered in mostly
to rest his feet and just a little to see what we were all up to. My first
thought was that he would be terribly disappointed by our bizarre topic and my
second thought was that he would be about the right age, Stanford is just down
the road, I think he is still at Stanford -- could it be?

>"Yes, John?" Peter said.

>I won't pretend to remember Lisp inventor John McCarthy's exact words which
is odd because there were only about ten but he simply asked if Python could
gracefully manipulate Python code as data.

>"No, John, it can't," said Peter and nothing more, graciously assenting to
the professor's critique, and McCarthy said no more though Peter waited a
moment to see if he would and in the silence a thousand words were said.

[http://smuglispweeny.blogspot.com/2008/02/ooh-ooh-my-turn-
wh...](http://smuglispweeny.blogspot.com/2008/02/ooh-ooh-my-turn-why-
lisp.html)

~~~
TurboHaskal
So basically a race to the bottom in order to communicate with the ALGOL
intolerant fanatics.

~~~
dang
Aw, come on. It's a truly beautiful story.

~~~
randomsearch
Wonderful. What a lovely unspoken communication, particularly from Peter.

