News for hackers. Stuff that matters.
Re:To make programming easier, first be conscious of what ma... by TheOtherHobbes on Friday August 13, 2021 @08:15PM (#28176469)
The complexity is historic, not accidental. If you start with a linearly organised address space then you need some way to reference the items in it.

The physical address in the linear space [1] isn't just the obvious option, it's the only option. [2] It's a short step from there to indirect addressing via a linear lookup table, and/or simple address arithmetic to find items stored sequentially.

You can only avoid this by adding layers of abstraction which hide these mechanisms.

But you can only do that after the mechanisms are in place. Otherwise your "reference" is just an unimplementable idea with no meaning.

[1] Ignoring hardware paging, because that's usually invisible.

[2] Ignoring hypothetical magic associative O(1) key-value store hardware with the same speed as semiconductor RAM - which could be built at ludicrous expense, but would cause complexity issues of its own.

Re:To make programming easier, first be conscious of what ma... by Jtsummers on Friday August 13, 2021 @09:29PM (#28176938)
To be clear I'm using "accidental complexity" in the sense of Brooks. He breaks complexity in software systems, in his No Silver Bullet paper, into two categories: accidental and essential. My contention is that for most programers and programs pointers fall under the category of accidental complexity. That does not diminish their utility, nor mean that they never fall under the category of essential complexity (indeed, having spent most of my career on embedded systems, there are things we could not have done or done as easily without pointers). Just that, for most of the things people want to accomplish when programming a computer, pointers (though often not the broader sense of references) are accidental (i.e. unnecessary) complexity.