Perlisisms (1982)

(cs.yale.edu)

86 points by tosh7 hours ago

15 comments

  • isityettime3 hours ago
    &gt; A language that doesn&#x27;t affect the way you think about programming, is not worth knowing.<p>This one stood out to me. I&#x27;d say it&#x27;s a favorite.<p>These others are interesting in the age of LLMs:<p>&gt; 93. When someone says &quot;I want a programming language in which I need only say what I wish done,&quot; give him a lollipop.<p>&gt; 114. Within a computer natural language is unnatural.<p>&gt; 115. Most people find the concept of programming obvious, but the doing impossible.<p>&gt; 27. Once you understand how to write a program get someone else to write it.<p>&gt; 113. The only constructive theory connecting neuroscience and psychology will arise from the study of software.<p>This one remains worth thinking about in terms of the consequences and costs of automation and computerization, LLM-powered or not:<p>&gt; 99. In man-machine symbiosis, it is man who must adjust: The machines can&#x27;t.
    • layer83 hours ago
      Also: 102. One can&#x27;t proceed from the informal to the formal by formal means.
  • rezmason4 hours ago
    These are fun to say out loud in the voice of the Kai Lentit&#x27;s Perl programmer<p><a href="https:&#x2F;&#x2F;youtu.be&#x2F;0jK0ytvjv-E?t=43" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;0jK0ytvjv-E?t=43</a><p><a href="https:&#x2F;&#x2F;youtu.be&#x2F;xE9W9Ghe4Jk?t=238" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;xE9W9Ghe4Jk?t=238</a>
  • LelouBil5 hours ago
    &gt; A programming language is low level when its programs require attention to the irrelevant.<p>Great definition actually
    • dundarious5 hours ago
      Relevance is relative, very much so.
      • xn74 hours ago
        That makes that quote even better, no? What is relevant to you might not be relevant to me, the right level for you might too far low level for me.
      • marcosdumay24 minutes ago
        Yes, that&#x27;s the point.
    • hbcdbff5 hours ago
      Disagree - like many of the quotes on this page, it seems interesting at a very superficial level but upon further inspection turns out to be nonsensical.<p>If something requires attention, it’s by definition relevant
      • munificent4 hours ago
        If you want to go out of your way to interpret things as uncharitably as possible, you&#x27;ll find yourself missing out on a lot of potential wisdom.<p>Obviously, it&#x27;s relevant if the language itself forces the user to worry about some pointless minutia. The problem is that the language <i>created</i> that relevance, when it is otherwise irrelevant to <i>the problem the user is trying to solve</i>.<p>Forward declarations are relevant in C because the program won&#x27;t compile without them. But they aren&#x27;t relevant in any meaningful way to any domain a user might be writing C programs for.
        • movpasd32 minutes ago
          &gt; If you want to go out of your way to interpret things as uncharitably as possible, you&#x27;ll find yourself missing out on a lot of potential wisdom.<p>Thank you for that line --- I may steal it :)
      • addaon4 hours ago
        &quot;If something requires attention, it’s by definition relevant&quot;<p>Not really. Consider an assembly language for a processor with a very orthogonal register set. The number of registers used by a block of code is relevant, but the identity of those registers isn&#x27;t. That is, if the code can be written without spilling with six distinct, uniform registers, the choice of one of the 6! possible assignments of those six registers are irrelevant. But when writing that code, you still need to make the choice. And in real assembly languages, it&#x27;s not necessarily obvious whether the choice here is arbitrary and unconstrained, or externally constrained (e.g. when choosing a mapping that avoids a move instruction by forcing the caller to pass a certain value in an agreed register; or when using an almost-orthogonal register set where it&#x27;s unclear if later code cares that the value is left in a register that is also the possible target of a div instruction or something), so this requires attention at both write-time and read-time, even when irrelevant.
        • gwerbin4 hours ago
          And if I&#x27;m writing a script to query the Google Maps API then I really don&#x27;t want to have to think about registers at all.<p>Maybe &quot;high-level&quot;&quot; low level&quot; should be understood in terms relative to the task and its goals.
          • wbl3 hours ago
            Exactly!
      • rpdillon3 hours ago
        These were published in the Communications of the ACM in the 1980s, I discovered them in the early 2000s, and have been reading them annually since. Every year, one of the ones that didn&#x27;t make sense to me the previous year suddenly does.<p>In this particular quote, Perlis is talking about relevancy to the problem. He&#x27;s hinting at the difference between incidental complexity and inherent complexity. Inherent complexity is a property of the problem, and incidental complexity is a property of the solution. He&#x27;s arguing against solutions that bring incidental complexity that requires attention to aspects that aren&#x27;t relevant to the problem.
      • kbenson4 hours ago
        But relevant to what? Some things are relevant directly to the outcome by nature of what you&#x27;re trying to express, while some other things are essentially incantations you need to repeat the same every time. Bad build systems and what you have to do to make them work are definitely relevant towards building a working program when you&#x27;re using them, but at the same time the specific details are often somewhat irrelevant for your goal.<p>Also, many stupid or nonsensical statements can often yield wisdom if you meditate on them enough. Indeed, many (most?) zen koans are so simplistic that to get any usefulness out of them you have to insert you own assumptions and try to determine how it might apply.
        • skydhash3 hours ago
          Relevant to the problem you’re trying to solve. If it’s only relevant to what you’re using for solving it (i.e. choosing a different tool would have make those issues disappear), then that make them irrelevant.<p>Each tooling set will bring its own irrelevant details. But you can rank them according to the amount and complexity of the irrelevant of details you have to think about.
  • chriscbr7 hours ago
    Random self plug - I liked a lot of these quotes from Alan Perlis, so around a year ago I bought the domain <a href="https:&#x2F;&#x2F;perl.is&#x2F;" rel="nofollow">https:&#x2F;&#x2F;perl.is&#x2F;</a> to display them.
    • summa_tech6 hours ago
      Neat! What do you think about adding a &quot;-2, -1, 0, +1, +2&quot; agreement scale to each quote and showing the average instead of votes?<p>I think many of those are pretty subjective, and maybe not always right for everyone or for all time. But there are certainly going to be some universal pearls of wisdom, and neither of us can - by ourselves - tell which ones they are.
  • shawn_w3 hours ago
    I read this as &quot;Perlism&quot; at first and got excited to see perl on HN.
  • dtagames7 hours ago
    And in #27 we find the rationale behind all LLM coding agents, <i>&quot;Once you understand how a program works, get someone else to write it for you.&quot;</i>
    • hugo0vaz6 hours ago
      I think you misunderstood what the phrase actually means. You can only successfully manage or outsource a process once you understand it well enough to explain it. Therefore, most of the people doing agentic engineering are not following this Perlisim.
      • dtagames5 hours ago
        Oh, that&#x27;s exactly what I meant, except its corollary. People who <i>do</i> understand how software works should absolutely be having agents code it. And we do.
        • skydhash3 hours ago
          &gt; People who do understand how software works should absolutely be having agents code it.<p>I don’t think there’s such people.<p>Either you’re writing a software for the first time and so the premise is not true. Or you’re writing it a second time and what would be the point? Just reuse the code you already have.
          • dtagames2 hours ago
            There are lots of people who understand how software works, including the fact that every line of code is new or else you wouldn&#x27;t need to write it.<p>Personally, I love &quot;philosophy of software&quot; questions like these, especially in the AI era. I write quite a bit about this on Medium:<p><a href="https:&#x2F;&#x2F;medium.com&#x2F;@mimixco" rel="nofollow">https:&#x2F;&#x2F;medium.com&#x2F;@mimixco</a>
    • fhars5 hours ago
      The actual prescient LLM quote is &quot;7. It is easier to write an incorrect program than understand a correct one.&quot;
    • summa_tech6 hours ago
      Once you understand how a program works, get someone else to write it for you. Then, you will quickly find out your understanding was insufficient.
      • dtagames5 hours ago
        Is that ever true! I wrote a whole Medium article[0] about this, one of my most popular. It&#x27;s called &quot;YOU ARE BUGS&quot; as a joke from Three Body Problem on Netflix.<p>[0] <a href="https:&#x2F;&#x2F;medium.com&#x2F;gitconnected&#x2F;you-are-bugs-improving-your-code-with-ai-agents-d6052de6633d" rel="nofollow">https:&#x2F;&#x2F;medium.com&#x2F;gitconnected&#x2F;you-are-bugs-improving-your-...</a>
  • rpdillon3 hours ago
    My favorite has always been:<p>&gt; 31. Simplicity does not precede complexity, but follows it.<p>Kind of close to &quot;build the first one to throw away&quot;.
    • 0xbadcafebee1 hour ago
      And then try not to fall into second system effect. So plan to build a third system...
  • ripe4 hours ago
    &gt; 102. One can&#x27;t proceed from the informal to the formal by formal means.<p>Seems to be a strike against LLM-based programming systems like Claude.
    • Sharlin2 hours ago
      To be fair, I don&#x27;t think anyone is claiming that the process is anywhere close to formal. The word &quot;vibe&quot; implies anything <i>except</i> formality.<p>What Perlis probably meant that formal methods are useless unless you already have a formal specification. The formalization process itself is by necessity informal.
  • jancsika5 hours ago
    &gt; 2. Functions delay binding; data structures induce binding. Moral: Structure data late in the programming process.<p>A good way to enforce this is to encrypt the data at the beginning of the process.<p>Then any function that returns structured data is clearly foolish and can be marked for removal.
  • sriram_malhar7 hours ago
    This feels so quaint today. How I&#x27;d like to be back in that timeframe.
  • jdw643 hours ago
    In the long run every program becomes rococo - then rubble.
  • LelouBil5 hours ago
    &gt; Once you understand how to write a program get someone else to write it.<p>Pretty relevant with LLMs and coding agents.
  • tenderfault3 hours ago
    76! Let’s do this!
  • DonHopkins5 hours ago
    &gt;1. One man&#x27;s constant is another man&#x27;s variable.<p>Did you ever have one of those days when variables didn&#x27;t and constants weren&#x27;t?
    • layer83 hours ago
      It constantly varies.