• nfw2 2 days ago

    I have some major disagreements with this:

    1.) Arguments about what words should mean are silly, as words clearly can mean different things in different contexts. If a word conveys a concept consistently and without confusion between the speaker and audience, it's a valid usage.

    2.) Any discussion of abstraction in a purely mathematical sense without paying any attention to human factors is not going to be useful for many software engineers.

    For example, many programmers have day-to-day tasks like "make it so when the bookmark icon is clicked, the relevant record gets saved as a bookmark." One might create a function called "saveBookmark" with a side effect of flipping a boolean on a db record. I would say this is abstraction because the reader of the code can sufficiently understand what will happen when it is called without needing to understand the details. All the underlying DB operations are compressed into the minimal interface that is relevant for the context of a UI page.

    It's very unnatural to try to discuss this sort of what-I-would-call-abstraction as a mapping across mathematically defined domains. The reason people find these sorts of articles hard to follow is they bear little resemblance to what most software work looks like.