Epigrams in Programming (1982) [pdf]
gwern.net
gwern.net
Edit: https://web.archive.org/web/20230127130734/http://pu.inf.uni... has an HTML version - thanks to o11c (https://news.ycombinator.com/item?id=38746206).
Perlisms – “Epigrams in Programming” - https://news.ycombinator.com/item?id=33702150 - Nov 2022 (8 comments)
Epigrams in Programming - https://news.ycombinator.com/item?id=32176598 - July 2022 (1 comment)
Epigrams in Programming - https://news.ycombinator.com/item?id=25984343 - Feb 2021 (1 comment)
Epigrams in Programming (1982) - https://news.ycombinator.com/item?id=20628827 - Aug 2019 (24 comments)
Epigrams in programming (1982) - https://news.ycombinator.com/item?id=8674919 - Nov 2014 (7 comments)
Epigrams in Programming - https://news.ycombinator.com/item?id=3613900 - Feb 2012 (2 comments)
Perlisisms - "Epigrams in Programming" by Alan J. Perlis - https://news.ycombinator.com/item?id=1701683 - Sept 2010 (2 comments)
Perlisisms - "Epigrams in Programming" [repost] - https://news.ycombinator.com/item?id=1277519 - April 2010 (2 comments)
"Epigrams in Programming" by Alan J. Perlis (ACM SIGPLAN Sep-82) - https://news.ycombinator.com/item?id=482630 - Feb 2009 (3 comments)
Canonical location is https://doi.org/10.1145/947955.1083808 leads to https://dl.acm.org/doi/10.1145/947955.1083808 (preview page, incomplete and not text-selectable), PDF link https://dl.acm.org/doi/pdf/10.1145/947955.1083808 is seems to have text data though?
https://web.archive.org/web/20180827170243/http://thecoremem... is a reformatted text PDF of the full version, and https://web.archive.org/web/20230127130734/http://pu.inf.uni... is a full HTML version, which only went offline this year.
Maybe that’s somewhat reasonable (?) given the last nine are epigram epigrams, not directly about programming…
If there are epigrams, there must be meta-epigrams.
122. Epigrams are interfaces across which appreciation and insight flow.
123. Epigrams parametrize auras.
124. Epigrams are macros, since they are executed at read time.
125. Epigrams crystallize incongruities.
126. Epigrams retrieve deep semantics from a data base that is all procedure.
127. Epigrams scorn detail and make a point: They are a superb high-level documentation.
128. Epigrams are more like vitamins than protein.
129. Epigrams have extremely low entropy.
130. The last epigram? Neither eat nor drink them, snuff epigrams.Edit, the old #60 is missing:
Dana Scott is the Church of the Lattice-Way Saints.
That one’s totally obscure, it seems okay to elide. Even the pun’s reference will elude most readers.Allocate four digits for the year part of a date: a new millennium is coming.
David Martin
Norristown, Pennsylvania
A beautiful thought and I would add that Shakespeare only wrote in english, developing his ability in that beautiful if messy language further and further, rather then trying all sorts of different languages to gain different perspectives on writing.
That's why it's harder to write a fully typed program in TypesScript than just hack it JavaScript.
A static type system will show you edge cases; probably more than you encounter in practice, but also the few that you will.
> 70. Over the centuries the Indians developed sign language for communicating phenomena of interest. Programmers from different tribes (FORTRAN, LISP, ALGOL, SNOBOL, etc.) could use one that doesn’t require them to carry a blackboard on their ponies.
> 105. You can't communicate complexity, only an awareness of it.
a flash of insight:
Perlis was a secret Zen master.
https://translate.google.com/?sl=auto&tl=ja&text=heh&op=tran...
Make sure to press the speaker icon in the lower box. ;)
> 125. Epigrams crystallize incongruities.
How does this need to be rewritten in the sight of Dall-E, Midjourney and friends?
They start:
A
a
aa
aal
and end: anticonductor
anticonfederationist
anticonformist
anticonscience
How do you want to describe those with a picture?(ok, these days one could make a long, thin screen shot, but a non-trivial picture, that doesn't factor through a textual representation? Even representing the 8 strings given here via graphics sounds iffy to me...)
Those models may be more adequately described by #63: When we write programs that “learn”, it turns out that we do and they don’t.
92. The computer is the ultimate polluter: Its feces are indistinguishable from the food it produces.
Maybe of these are great, but X-D that one didn’t age well.
Oh I tried to kick my kids out to play, it just didn’t work very well. The computer options I had as a kid were few and far between, and it was absolutely nothing like the vast sea of high quality entertainment they have on their multiple computer devices today. I got so bored with the sparse choices, I had to learn how to program my own games. My kids, on the other hand, had so many insanely good games and TV shows, they didn’t have the patience to learn to write code (until very recently) despite a lot of interest.
Nobody writes handwritten letters anymore (and even though it was fun, I’m not sure we should.) Movie theaters are dying since everyone can stream movies at home on big screen TVs (that are stuffed with computers now). Many many brick-and-mortar stores are closing their physical shops and going increasingly online. It seems like the computer has already changed the household immensely and irreversibly, not to mention the whole world we know.
> 67. Think of all the psychic energy expended in seeking a fundamental distinction between “algorithm” and “program”.
I mean... it's semantics but I feel like taking the bait here. I have a weird concept of fun.
I've always understood it as a program takes external input and/or gives external output (like keyboard presses, display to screen, write to disk, etc) whereas an algorithm is self contained and can run on any turing machine regardless of capabilities.
Basically "Side Effects", but I avoided using that phrase because input isn't clearly a side effect, but if your semantics don't require no side effects for an algorithm, then yeah a program is functionally equivalent to an algorithm.
Mostly semantics don't capital-M Matter, but can be important to clarify meanings. Depending on what project/team I'm working on I can have completely incompatible definitions of the same word in the same day.
spec -< algorithm -< program -< executable
where each (a -< b) says both that b implements a and that there are almost always multiple valid potential bs for any given a.A recipe book contains an algorithm for baking cookies, but how you do it vs how someone else does it is going to have slight differences (accuracy of measurements, size of cookie, etc).
And that, folks, is why I am studying programming languages for my PhD.
Did Perlis diss Perl, or miss Perl?
Is Perl A. Perlis language?
Perl is a language Perlis did miss.
#Please don't diss, this was a chance too good to miss.
> 4. Every program is a part of some other program and rarely fits.