6 ms·
I love the word "isomorphic". It's by far the most efficient word in the English language. When someone else uses it in conversation, it's absolutely guarante
by ianamartin 10y ago
I love the word "isomorphic". It's by far the most efficient word in the English language.
When someone else uses it in conversation, it's absolutely guaranteed that the person is a pretentious asshole.
When you use it in a conversation, the same is also true.
It's only ever acceptable in written contexts or if you happen to be Douglas Hofstadter.
- lacampbell 10y ago> When someone else uses it in conversation, it's absolutely guaranteed that the person is a pretentious asshole. I don't get your angle here. You realise an isomorphism is actually a well-defined mathematical concept, right? Are you advocating we use another, plainer word for an isomorphism, or do just naturally get angry when you hear words you don't understand?
- braythwayt 10y agoConsidering that TFA pokes fun at the word in the very first footnote, I took this comment to be mostly in jest. But if we’re going to be serious about it, technical jargon is really only appropriate when the speaker is 100% sure the audience 100% understands it. There is sometimes a problem (I wouldn't use personal terms to describe it, but still) where technical terms are slung about without regard for whether people understand them. That’s poor communication, and as a bad side-effect, it encourages people to misuse the words in ways that don’t match the formal definitions. In any event, if a comment is criticizing the article for using the word “isomorphism,” we could quite fairly ask if there is a bijective between algorithm and data structure, and whether the morphisms preserve behaviour. If not... Perhaps TFA is at fault.
- lacampbell 10y ago> But if we’re going to be serious about it, technical jargon is really only appropriate when the speaker is 100% sure the audience 100% understands it. I disagree. Half the reason I come here is to be exposed to new ideas or concepts. This isn't a lecture, I'll gladly take time to learn about a new concept if it seems relevant.
- braythwayt 10y agoFair enough, and here is an interesting thing: In a talk, if you stop to explain every technical term, you break up the flow and make it tedious for those who know the words. But in a web article, we have hyperlinks, footnotes, asides, and other devices for allowing some readers to skim and others to dive in. So to me, the choice for whether to use a word in an essay is different than the choice for whether to use a word in a talk at a conference, which is different than the choice for whether to use a word in a conversation where I am familiar with the participants.
- tedunangst 10y agoSince we're on the subject of recursion, there is a problem when somebody uses a term that they only understand 90%. Somebody else reads that and understands 90%, and then they use, and then another person reads it... And then we arrive in the current situation where people use terms like "rainbow table" or "HFT" to describe who knows what.
- lomnakkus 10y agoIsn't that just the general nature of human communication, though? I mean, yeah, maybe one could argue about math, but even math (proofs, especially[1]) can get a bit fuzzy. [1] Which one could argue are a prerequisite for true understanding of a mathematical concept.
- ianamartin 10y agoYou're correct. I was trying to make a joke. Didn't go over very well. So it goes.
- braythwayt 10y agoThere was this one time I made an enormously racist joke on HN... No, that didn’t go over well either. So maybe I know how you feel!
- matt4077 10y agoWith that standard, we'd all be stuck at grunting. Words exist for a reason. They allow precision, brevity, and – as Reginald so often shows – beauty. I expect readers to be willing to right-click an unknown word and quickly learn its meaning. I'd also expect programmers to know what isomorphic means. Heck, you could even guess it: iso, like the standards. Morph as in morphology, "shape".
- mypalmike 10y agoPretentious or not, the term is used erroneously here. Recursive data structures and recursive algorithms are, quite plainly, not isomorphic. They are not two equivalent representations of the same thing. Something that is isomorphic to a recursive function that works on a quadtree would be an imperative function that works on a quadtree with identical functionality. tl;dr: I think the author meant "synergistic".
- braythwayt 10y agoI don’t know that an algorithm and a data structure have to be equivalent representations of the same thing to be isomorphic. In the case of the algorithm, is it the code that must be equivalent? Or the runtime behaviour? The runtime behaviour of the ‘whirling regions’ algorithm clearly is not an equivalent representation of the two-dimensional array representation of an image. However, the runtime behaviour of the quadtree algorithm exactly matches the quadtree data structure. This is my proposition: That what matters is whether the algorithmic behaviour is equivalent. I would say the same thing about `binrec` matching a binary tree. ...Or at least, I would have, up until today. I am open to being disabused of this notion.
- gohrt 10y agoIsomorphic means "have the same shape". It means that there is some structural property that the two objects have in common. The more interesting/complex the property is (and the more superficially different the two objects look), the more defensible the use of the word is.
- stan_rogers 10y ago"Isomorphic" literally means "of the same shape".
- mypalmike 10y agoEven with a non-mathematical definition such as yours, I don't see the isomorphism. Recursive code that acts on a quadtree does not itself take the shape of a quadtree. Not the text, not the AST, not the machine code. The code is treelike, but that's because all code is treelike(1). As a counterexample, consider code that acts on arbitrary graphs. DFS on an arbitrary graph doesn't itself take the form of an arbitrary graph. It is still treelike. (1) My old Atari 800 BASIC programs notwithstanding.
- zzzcpan 10y agoI found the article to be very pretentious too. Although the author doesn't really try to convince you otherwise, if you read the footnotes: "In computer science, two things are isomorphic if the person explaining a concept wishes to seem educated.". But you know, if you claim that isomorphism makes the code easier to understand, support the claim by at least something. If anything the code with the "isomorphism" looks unnecessary complicated and harder to understand.
- pwm 10y ago> You realise an isomorphism is actually a well-defined mathematical concept, right? I think a prime example of how words loose their precise mathematical meaning is the word "function". It has a precise definition in maths but we programmers use it often with a different meaning. We used to have the terms "subroutine" and "procedure" for what we use "function" for nowadays. We even came up with the term "pure function" to refer to the original mathematical meaning of "function".