Hacker News new | past | comments | ask | show | jobs | submit login
Perlis's Programming Epigrams (yale.edu)
57 points by nomilk 14 days ago | hide | past | favorite | 10 comments



A few are dated but number 74 is one I think about a lot when programming.

  Is it possible that software is not like anything else, that it is meant to be discarded: that the whole point is to see it as a soap bubble?
Important to remember this was written in the early ‘80’s at the end of Perlis’s long career. For most of these to stay relevant and humorous 50 years later is pretty impressive.


https://dl.acm.org/doi/10.1145/947955.1083808

https://dl.acm.org/doi/pdf/10.1145/947955.1083808 [pdf]

Hurray for more open access from ACM, here's the original publication with the 10 missing epigrams.


I like this one a lot: "A language that doesn't affect the way you think about programming, is not worth knowing."

I frequently see newer programmers trying to learn as many languages as possible to list them on their resume...what they don't realize is that learning syntax is pretty much irrelevant to programming skill. Choose one language, master the building blocks, then choose another that works completely differently. Do this two or three times, and all of the sudden you can write in any language you want because you understand the fundamentals.


There's some value, in that language choice is often about ecosystem and legacy issues, so there's often reasons to use a language even if it by itself isn't interesting.

But, if you know one OOP language you can pretty much start working on any of them with a few Google(Or ChatGPT I guess) requests.

Beginner programmers can easily get in a "Using what they know" trap though, and sometimes it's some obscure thing like VB.Net they happened to learn first, stuff that might teach you programming fundamentals, which is good, but it won't teach you about making use of modern tooling and all the random stuff mainstream projects use.


I've seen several of these before in SICP and other places, but happy to find a longer collection here! Perlis just has his own style and humour...


A list of my favourites:

3. "Syntactic sugar causes cancer of the semicolon."

14. "In the long run every program becomes rococo - then rubble."

19. "A language that doesn't affect the way you think about programming, is not worth knowing."

55. "A LISP programmer knows the value of everything, but the cost of nothing."


Edgy. I wouldn't pay too much attention of them. E.g.

> 9. It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.

I'm sure that isn't always the case. At the very least, it shouldn't lead to mixing data structures.


This is very very sound advice. How many _actual_ data structures are there in our day to day? Trees, graphs, buffers, arrays, hashmaps, state machines... Yet we tend to overspecify operations as if they are special (see: many applications of OO), when they really aren't.

Another angle to look at this is moving complexity and specificity into data and away from functions. It's a recipe for success: HTTP/REST, SQL, CLI utilities etc.


Some of them are pretty obsolete, reflecting old conflicts and languages that are no longer in use, or obsolete due to hardware advancements, like the quip about lispers not caring about computational performance.

But that one is very good advice. A data structure that can represent a tree and be used with filter/map/reduce (e.g. list or array) can get you very far, and the functions can carry semantics instead of names attached to the data.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: