On the hellpits of abstraction

April 20, 2020 by Lucian Mogosanu

Recently, as recent as an hour since the moment of writing, which for the reader bears exactly zero relevance... so recently, as I was reviewing my old Romanian blog, I stumbled upon a little series of posts dubbed at the time "despre înțeles", that is, "on meaning". As the introductory article1 points out, the whole premise is that language is an interesting communication mechanism and humans assign a lot of information (information about the symbol, i.e. "meaning") to the symbols they use, and then why not look at the structure and evolution of said symbols, or at least some of them?

In retrospect, this all sounds like a pretty nice approach to systematically making sense of the (spoken and written) world, one that I would have even considered seriously pursuing at the time, had the idea stricken my stupider-yet-smarter-in-many-other-respects self. Except... here's the catch: the world "înțeles" was used as a double-entendre in that title. On one hand yes, the whole series was supposed to be a search for meaning, using language and analysis as the support; but on the other, "înțeles" also literally means understanding, which is sort of what the second article tried to go towards, using language(s) merely as didactic material. Thus this second article employs a more free-form approach, using whatever tools it finds along the way (analogy, example, and so on and so forth) to dissect language and understand how natural and artificial languages can be misused in similar manners.

Thusly, I decided to drop the "despre înțeles" part, which resulted in the title you can admire above. The article's translation lies below. Enjoy!

I'm not throwing the title around out of the blue. If Dante deemed that a layered inferno is more appropriate (than what?) then it's quite probable that somewhere in that allegory, the idea of abstraction may also find its place. The fact of the matter is, not only is inferno an abstraction -- we can only ask: whose abstraction? -- but abstraction itself may in some cases be considered a veritable hell.

As I was saying when I began writing on meaning, these so-called meanings can and will always pose problems to users of language. Moreover, since we're discussing language as a whole, the structure of language can effectinfluence the understanding of declarations2. If we extend this to literary units (that is, texts), then things get even uglier, not even looking at how independent populations have developed separate languages, so translating an idea from one language to the other alters its meaning more or less, oftimes "more". Given all this, Chomsky's formal linguistics proves to be an essential tool for making sense of things, if only for a bit3. Even so, the question left hanging nude in all the public places remains: how may one correctly abstract an idea, or a structured collection of ideas4?

Sure, I would find it entirely useless to start dissecting grammars and lay out production rules. A better idea, I think, would be to illustrate the problem through (a?) practical example, easily graspable by the high-school graduate5. Also, I don't find it very wise to dig into natural languages (due to their inherent ambiguities6), so I'll instead pick on those simpler7, formally-inclined languages, that is, programming languages.

Although non-informaticians may not find the subject fashionable8, there's this habit among computer programmers to wank around languages, comparing them along the lines of "X is cooler than Y" and "Z sucks monkey balls"; because X may favour some models of programming over Y, and Z was made by economists. Moreover, although W is unmatchedly beautiful, people kind of shy away from using it; why? Well, because, much despite its beauty, programmers still need to take care of the ugly things; or maybe the very same programmers are too lazy to load those beautiful programming models in head, who knows.

Take object-oriented programming for example. The naïve impression would be that it scales in(de)finitely: the programmer creates an object, whose set gets folded into another one, which is encapsulated in yet another object which is put in relation to another (type of) object. The idea that any object can be broken into smaller pieces of itself, or conversely, that smaller objects can be used to build bigger ones, is universal, innit? Well no, not quite, hence some languages that fail in elementary problems due to their abstraction mechanisms9. Computer iron can for example be programmed more effectively using certain languages, that provide some structure by only minimally abstracting over CPU registers, the stack and so on. On the other hand, a higher-level, say, a "functional" language, may (or may not!) prove to be fitter towards implementing complicated algorithms. Either way, programs written using the functional styles are not very popular10, despite their so-called "beauty". Sure, Sanskrit is beautiful too, as beautiful as it is dead.

In answer, some have designed so-called multi-paradigm programming languages, that is, a sort of shawarma with everything applied to programming. I guess the natural language equivalent of "multi-paradigm" would be trying to express oneself in a language comprising the grammars of English, Japanese and Chinese all in one11, so... as I was saying, shawarma. Potential solutions to burdening languages with all this "multi-paradigm" complexity could involve interfacing between languages coming from different paradigms, borrowing concepts as neologisms (that's how e.g. some languages have a very strictly-controlled notion of pointers), although now the work to ensure interoperability becomes higher. Overall, the idea of "multi-paradigm" isn't fundamentally broken, but as with all things, its {over,mis}use should be kept in check12.

Which brings us to the semantic engine of computer languages, their type systems: any clear, concise expression of a problem from some given domain may be found in languages containing appropriate primitives. As an aside, this is why I don't believe there is such as thing as a "general-purpose language"13in the true sense of the word. Some languages attempt to abstract the type level to so-called "categories"14, going towards a root that's algebraic in nature, more easily comprehensible by mathematicians and harder to grasp by the average programmer.

Either way, the "average programmer" will shoot themselves in the foot regardless of the language they use to express their thoughts; on one hand, a good engineer will make the best of the tools they have, whatever those may be; while on the other, the problem rests entirely with the "average programmer", not the computer, as the former will make a mess of whatever language they use, be it English or Haskell.


  1. Which I won't translate because I don't find it interesting enough at the moment. Which isn't to say that it isn't interesting, just that... I don't know, I guess I'm not trying to make any particular point here. 

  2. That "la nivel declarativ" is so fucking woodentongue, so I'm not sure one hundred percent that this is what I meant. In any case, what I was trying to say, I think, is that the syntax of natural languages tends to admit ambiguities. Which is sixth-grade level grammar, but whatever, I was all into formal logic in 2011. 

  3. Indeed, only for a wee bit. And here, I'll let the reader explore which portion of the whole is precisely this wee bit. When do formal tools start to break when attempting to apply them to the understanding and analysis of language? 

  4. Hell, what does "correctly" even mean? 

  5. Well... I don't know, with today's high-school graduates, I seriously doubt that much of the English-speaking web is going to understand the words here, and not for the great complexity and sophistication of the subjects discussed. Seriously, I'm not trying to insult you. Quoth the confused one:

    Now I feel like I know less about what that blog is about than I did before.

    Now who's being an asshole, eh? 

  6. The ambiguities won't make those languages go away, though, will they? So what the fuck was I thinking?

    I think it's saying something along the lines of: the hellpits of abstraction manifest even in those simpler languages, so we might as well take them as an example, for the sake of brevity. 

  7. This might not be the proper word to describe it though. They're simpler in the sense that both the vocabulary and syntax are limited, in a very strict sense of the word "limited": we know aforehand (even though we don't enumerate) the set of valid statements in, say, Common Lisp, this knowledge being provided by the language's grammar itself -- unlike natural languages, where, despite multiple useless efforts from your local state to engineer language, words and structures can be added and removed through mere usage, i.e. folklore. Take a walk through the dark streets of Ferentari one night, you'll see what I mean. 

  8. Although for quite a while now, the subject has found them fashionable and it will continue to, towards consuming them whole.

    Life in post-industrial times, what can you do. 

  9. "Fail" may be too strong a word; every language design choice has impact on how said language will be used by humans, making this a very human-computer-interaction-ey subject. Take method dispatch for example: multiple dispatch makes CLOS much more complicated than, say, C++, yet at the same time it makes it able to express forms of polymorphism that C++ couldn't even dream of. And no, the complexity of CLOS isn't exclusively its own problem, but that of people misusing it as well.

    Conversely, that's why for example "memory safety" abstractions aren't very much in use in nowadays' systems programs. Other than the bare fact that today's hardware comes with very limited support, it's merely the pragmatic fact that people are supposed to correctly employ whatever hardware exposes, not wade through piles of compiler-enforced shit. Sure, Ada already exposes that shit entirely correctly, but your operating system kernel is still written in C. Welcome, my son, welcome to the machine! 

  10. Meanwhile, a decade later "functional programming" is teh shiznit, and... and what, you fucking losers? You've managed to completely ruin a bunch of otherwise respectable paradigms of thinking, and your software still sucks. So I guess we can now add "functional programming" to the list of things that, in retrospect, represent nothing in particular. 

  11. Not so uncommon nowadays, is it? I don't know how things look over from your side, but one of the main characteristics of Romanian is that over time it kept borrowing words from other languages, while still maintaining its fairly strong Latin syntactic core. So Romanian stopped borrowing foreign words for about half a century starting in the 1950s, and that's when "they said" that the language "finally matured", except... in the 1990s and early 2000s it similarly started stealing words from English.

    Long story short, Romanians enjoy stealing a lot of shit. Or something. 

  12. Heh, listen to me doing prescriptions! 

  13. There was supposed to be a footnote here, except the footnote turned into an article of its own as I was writing it. I still want to keep the link between this place in the text and the article that it gave birth to, so I guess I'll just link it here after it's posted.

    Meanwhile... 

  14. Meh, categories schmategories. Model computing in any formal framework you wish and sooner or later the idiots will pour all their energy into corrupting it with their crooked thinking. Irrespective of how general, universal, "beautiful" and so on and so forth said formal framework it is. 

Filed under: computing.
RSS 2.0 feed. Comment. Send trackback.

8 Responses to “On the hellpits of abstraction”

  1. #1:
    Mircea Popescu says:

    > the structure of language can effect the understanding of declarations

    Do you mean effect as in, "the structure of language can cause the understanding of declarations" or do you actually mean affect, as in "the structure of language can change the understanding of declarations" ?

    That aside : the problem with ingenue attempts at (structuralist, or otherwise) semiotics/semiology is that they're definitionally devoid of any possible meaning.

    You don't (I presume, for lack of familiarity) continue any body of work, references to which would allow meaningful interpretation of the symbols and relations you propose ; nor do you (I presume, for lack of capacity) start a novel line in the field. Instead of either potentially respectable (though generally failful) approaches, you simply attempt to defraud the reader, who's expected to not notice that no, "immediate meaning" is not a thing, and "using everyday words" in "their obvious sense" for this purpose is akin to using your kitchen in the usual manner for medical procedures.

    You ran into the exact same problem with your attempt at a high level discussion of "engineering", but you failed to diagnose it there, also, for the same fundamental reasons.

    I don't expect a practical solution is possible, for many reasons (such as for instance that the materially comfortable if intellectually stimulating situation of the Swiss de Saussure family a century ago is not available for some Romanian kid today ; these things are fundamentally not within the purlieu of they who have to work for a living, nor is faking it a workable solution to the problem ; bad habits and counterproductive inhabituations already acquired are likely to overwhelm any attempts at self-righting etcetera) ; but I also can't read this sort of thing. Sorry.

  2. #2:
    spyked says:

    Do you mean effect as in, "the structure of language can cause the understanding of declarations" or do you actually mean affect, as in "the structure of language can change the understanding of declarations" ?

    I think the term I was looking for was "influence", i.e. to exert some effect on how declarations are understood. Thanks for the observation, fixed it.

    You don't (I presume, for lack of familiarity) continue any body of work, references to which would allow meaningful interpretation of the symbols and relations you propose ; nor do you (I presume, for lack of capacity) start a novel line in the field.

    Indeed, I don't do any of the things mentioned, and precisely for the reasons mentioned. I guess if anything, the thing could be simply filed under "intellectual masturbation".

    you simply attempt to defraud the reader,

    No, I'm taking some ideas and trying to explore them with the limited tools I have at my disposal, for my own pleasure. Whether they'll lead anywhere or not, whether they were crooked or not from the beginning, whether this is akin to a caveman trying to build a spaceship, I don't think it really matters.

    Speaking of which: how on Earth do you presume to know what I attempt? If you think that I'm being intellectually dishonest, then call it out, or if that's too much of a bother then shut the fuck up... or don't, whatever, I just don't see this going anywhere, just like I didn't see that other discussion, perhaps for my dunning-krugerism. Perhaps in nine years from now I'll see it rereading this, perhaps I won't be here to see it in a year from now, so tell me: who the fuck cares what "I attempt" anyway?

    If, say, this were a year of the Republic (and if I were someone and/or something else, perhaps), then yes, perhaps I would have gladly taken it upon myself to properly destroy this in that framework, but that's all gone now, so... what of it? None of it really matters, really. I'm well aware of that, check this out: the text has been on the interwebs since fucking 2011 (as the one on engineering was out there since what, 2016?) and nobody bothered to react to it in any way, until now. So tell me, why the fuck would I give two shits?

    but I also can't read this sort of thing. Sorry.

    I'm sorry to hear that. On the flip side, I didn't ask to be taken seriously. 'Tis just another blog on the web of horse shit, by the time I'm done with it I might just yet alienate all of my readers.

  3. #3:
    spyked says:

    In vaguely-related recursive lulz, and re. dunning-krugerisms: yes, I can totally see how I'm not equipped with the linguistic means required to properly explore this field. The funny thing being that this is what I was attempting to explore in the first place.

  4. [...] So, as I was saying: [...]

  5. [...] as much as my feeble mind can encompass of it so far. Meanwhile, however, I've stumbled upon some old pieces, among which the quote above, plus a few other texts, which together started clicking in my head, [...]

  6. [...] connection when IRC goes down. Yes, I could do it somewhere deeper or shallower down the ladder of abstraction, but there's no proper measure to decide upon the right place to introduce this change, since [...]

  7. [...] and the questions about interpretation reveal that the Turing test works precisely by obscuring the layers of abstraction (be they mechanical, biological or whatever) lying beneath the "device under test". In fact the [...]

  8. [...] to be a definitory characteristic of the so-called humanity: man is the only species capable of abstract [...]

Leave a Reply