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.
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.
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.