|
| ▲ | munificent 5 hours ago | parent | next [-] |
| If you want to go out of your way to interpret things as uncharitably as possible, you'll find yourself missing out on a lot of potential wisdom. Obviously, it's relevant if the language itself forces the user to worry about some pointless minutia. The problem is that the language created that relevance, when it is otherwise irrelevant to the problem the user is trying to solve. Forward declarations are relevant in C because the program won't compile without them. But they aren't relevant in any meaningful way to any domain a user might be writing C programs for. |
| |
| ▲ | movpasd an hour ago | parent [-] | | > If you want to go out of your way to interpret things as uncharitably as possible, you'll find yourself missing out on a lot of potential wisdom. Thank you for that line --- I may steal it :) |
|
|
| ▲ | rpdillon 4 hours ago | parent | prev | next [-] |
| 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't make sense to me the previous year suddenly does. In this particular quote, Perlis is talking about relevancy to the problem. He'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's arguing against solutions that bring incidental complexity that requires attention to aspects that aren't relevant to the problem. |
| |
| ▲ | abirch 19 minutes ago | parent [-] | | My CS teacher in the algorithms frequently said, “until you have the question, the answer doesn’t help.” |
|
|
| ▲ | addaon 5 hours ago | parent | prev | next [-] |
| "If something requires attention, it’s by definition relevant" 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'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'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'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. |
| |
| ▲ | gwerbin 5 hours ago | parent [-] | | And if I'm writing a script to query the Google Maps API then I really don't want to have to think about registers at all. Maybe "high-level"" low level" should be understood in terms relative to the task and its goals. | | |
|
|
| ▲ | kbenson 5 hours ago | parent | prev [-] |
| But relevant to what? Some things are relevant directly to the outcome by nature of what you'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're using them, but at the same time the specific details are often somewhat irrelevant for your goal. 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. |
| |
| ▲ | skydhash 4 hours ago | parent [-] | | 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. 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. |
|