On the relationship between specific cases and general cases


One of the frustrations I have is people who don't see the relationship between specific cases and general cases.

Statement: In general, you can't do X.

Refutation: You're wrong. Y can do X.

Example: The statement "In general, you can't trust the return address" comes with the refutation "You're wrong. .NET trusts the return address." (Sometimes, it's not so much a refutation as just the assumption that the .NET folks are somehow stupid for not understanding this general rule.)

If I use this same argument in a different context, the fallacy becomes more clear.

Statement: In general, you can't sell cigarettes to people who appear to be underage without checking their ID.

Refutation: You're wrong. A bar can sell cigarettes to anyone.

The flawed refutation introduces new assumptions, namely that you're in the special case of being in a bar. But the bar has its own restrictions, namely that you have to be at least 21 years old to enter. Therefore, they don't need to check your ID because they can assume that everybody in the bar is already at least 21 years old.

Similarly, .NET can trust the return address since it doesn't let programs modify arbitrary memory. Memory access must first pass the verifier before the CLR will run it. (Of course, you can access arbitrary memory by using unsafe code or p/invoke, but you have to be granted full trust in order to do it, so you haven't actually accomplished anything.)

In the general case, however, a called function does not have control over what other code is running in the same process.

A related source of frustration comes from people who treat all statements as absolute metaphysical truths, even if they are clearly generalizations once you accept that people have free will. I've gotten in the habit of inserting weasel words like typically or generally, but not everybody remembers to do this in the comments, exposing themselves to nitpicky responses from other commenters. Welcome to my world.

Comments (35)
  1. James Schend says:

    It’s "smarter than you" syndrome. Some people, after reading a clever or well-researched article have to instantly reply with some refutation to prove that they’re smarter than the person who wrote it. The problem is that it’s hard to refute some articles (eating only Big Macs makes you fat), so they just nit-pick every single syllable in every single word to make their smart-response. (Oh yeah? Eating only Big Macs doesn’t make you fat if you only ever eat at Mac’s Salad Bar!) Stupid example, but you get the point.

    I always wonder if these people do the same thing in face-to-face conversations. (And yes, the obligatory: I’ve done this too in the past.)

  2. Raymundo Chennai says:

    The problem with this, if you’re trying to run an educational blog, is that you don’t describe your own set of assumptions when speaking in generalities.  Rather than adding in one of your "weasel" words, why don’t you simply describe the scope of your statement?

    If there are too many specific cases that violate the general rule, consider whether your general rule is very valuable.

  3. manyirons says:

    Different people use the same words in different ways.  If you want to use the word "generally" with mathematical precision, go right ahead, but be tolerant enough to acknowledge that there are other legitimate meanings for this word, and you’re in the minority when you use it that way.

    "I generally, but don’t always drive withing the speed limit."  Is there anything really wrong with that statement?

  4. Trevel says:

    For extra fun, there’s the people who will take the one sentence you added in response to someone else’s question, pull it entirely clean of the context of the article AND the question, and then call you an idiot for not taking into consideration…. the details in the article you just wrote.

  5. Maurits says:

    Sorry, can’t resist… I’m a mathematician, it’s a disease…

    If you want to use the word "generally" with mathematical precision

    Raymond is making an excellent point but he is /not/ using the word "generally" in a mathematical sense.

    This is the relevant quote, I assume?

    — BEGIN QUOTE —

    One of the frustrations I have is people who don’t see the relationship between specific cases and general cases.

       Statement: In general, you can’t do X.

       Refutation: You’re wrong. Y can do X.

    — END QUOTE —

    Mathematically speaking, the statement is wrong and the refutation is the /correct/ way to point out that the statement is wrong.

    To make it mathematically correct, it would be necessary to restructure it as follows:

       Statement: You can’t, in general, do X.

       Non-Refutation: You’re wrong. Y can do X.

    Now the "refutation" is no longer a refutation.  The claim is weaker, and the (presumptive) fact that Y can do X is no longer incompatible with the claim.

    To truly refute the weaker statement, it would be necessary to prove that, in fact, you could ALWAYS do X.

    It is generally easy to disprove generalities than to prove them.

  6. Chuck McKinnon says:

    I had a physics teacher in high school who took ten minutes from a class one day to explain that only idiots and pedants cite the exception to a well-known rule.

    He said, while sketching at the board, "If I say that all British people have Roman noses [he was British, with a prominent nose] or all black people have flat noses, of course there are exceptions. Intelligent people understand this and let the exception pass without comment because as a rule these statements are true. Inevitably, though, someone will insist on pointing out that this isn’t ALWAYS true. You’re not advancing the discussion when you do this; the rest of us already know."

    One (only one) of the black girls in the class got offended because of his "racial stereotyping." Q.E.D.

  7. codekaizen says:

    @Maurits –

    Actually, I thought that Raymond’s usage was more in line with how "generally" is used in treating cases (mathematical cases came to my mind immediately, too), rather than the more conversational usage of the term "generally".

    For example, in general, matrixes aren’t invertible. However, I mostly work with matrixes in computer graphics, so they generally are.

    My personal take is that the overload of the term causes the confusion between specific and general – if you typically spend all your time in a specific case of a general idea, the term "generally" can easily be taken to mean "usually" and it triggers the refutation.

  8. SM says:

    Statement: In general, you can’t do X.

    Refutation: You’re wrong. Y can do X.

    Counter-Refutation: Sure, Y can do it. But you still can’t!

  9. Maurits says:

    in general, matrixes aren’t invertible

    The point I apparently failed in making is that there are two similar looking but – mathematically – totally different assertions.

    "In general, matrices aren’t invertible" – false

    "Matrices, in general, aren’t invertible" – true

    The first I interpret as "For all (‘In general,’) matrices M (‘matrices’), M is not invertible (‘aren’t invertible’)."

    Clearly true.

    The second I interpret as "The set of all matrices M (‘Matrices, in general,’) does not consist entirely of invertible elements (‘are not invertible’)."  There’s an implied "all" in between "are not" and "invertible" here.

    Clearly false.

  10. Bryan says:

    @Maurits:

    Is there anything at all you gain from that needless overcomplication of a simple statement?

    @Chuck:

    Your teacher sounds similar to one I had and I agree.  Needless statements of implied assumptions are needless.

    When anyone uses the word Generally, I take it to mean "in most cases" or "as far as you are concerned".  There are likely exceptions, but the author has decided that they don’t apply.  If there weren’t exceptions, the author would’ve probably written something more absolute – like always or never.

  11. Joe Butler says:

    Yep, Raymond, it is as annoying as anything can possibly be.  I would tend to agree with James Schend, but as I pointed out once before, I believe there might be a certain psychological type (perhaps codekaizen is of this type), where things are taken a bit too mathematically and literal and it is not possible to allow an ‘incorrect’ statement to go without comment – not because they are on the left hand side of the bell curve, but because they are perhaps quite far to the right, but have a biological trait which also limits the amount of filtering out they are able to do for irrelevant points during a normal discussion, and you just have to shrug and accept that they are not always doing it to it be smart – it’s just the way they are.

  12. Friday says:

    No one is immune.

    Statement: Igor Levicki is a Vista basher and troll.

    Refutation: You’re wrong. He bashed .NET once.

    (and had some quite valid points too).

    And the statement that became predominant here is plain wrong.

    No, I’m not Igor.

  13. Mike Dunn says:

    (Hopefully the spam trap won’t delete my comment this time if I put lots of words before the upcoming hyperlink)

    http://xkcd.com/386/

  14. Adam V says:

    @Raymundo:

    > why don’t you simply describe the scope of your statement?

    Because a) he’s explicitly *trying* to enumerate the general case. Giving us general information teaches us a lot more than "in this one specific case, this works" does. This blog is made for more "this is why Windows was written this way", even in the face of a million "it doesn’t work that way in this MS product, ha ha, I’m smarter than Raymond" posts.

    And b) people would ignore his restrictions anyway. Raymond is such a high-profile MS employee that people will do anything to try to show up on his radar screen, like off-topic Vista trolling (Igor), breaking down his posts line-by-line to attempt to prove a point (Norman), or even posting comments with a name similar to his (…).

  15. chrismcb says:

    @Maurits

    Perhaps I don’t understand how you translate English into Math, but how is:

    "In general, matrices aren’t invertible" ANY different than "Matrices, in general, aren’t invertible" Grammatically these are equivalent.

    I clearly don’t understand your translation:

    "The first I interpret as "For all (‘In general,’) matrices M (‘matrices’), M is not invertible (‘aren’t invertible’)."

    " You claim that "In general" somehow means "For All."  It says IN GENERAL, not "for each and every case." "In general" as in most of the time, or "for most Matrices M in the set of all Matrices"

    Grammatically the sentence is "Matricies aren’t invertible." Throw in "in general" pretty much anywhere in the sentence, says this truth isn’t quite true ALL of the time, only some of the time.

    Typically, usually, commonlly, in general… ALL THE SAME.

  16. Mark Sowul says:

    All generalizations are false : )

    Preemptive nitpicker ablation: just think about it.

  17. KenW says:

    @SM: "Counter-Refutation: Sure, Y can do it. But you still can’t!"

    Refutation #1: Y can do it.

    Refutation #2: O can do it.

    Refutation #3: U can do it.

    Refutation #4: Y, O, and U can do it.

    Refutation #5: The set of [YOU] can do it.

    Refutation #6: [YOU] can do it.

    See? YOU *can* do it.

  18. Ari says:

    Oh Raymond, I understand your frustration in this matter too well.

    I would say that this is Gabes greater internet f***wad theory in action, but sadly it isn’t.

    As the examples cited above clearly show too many people have problems with any statement which does not imply/contain absolute truth.

    I really wonder how some of those people get through the day.

    Also, marketing companies must love them!

  19. André Pereira says:

    When I hear "general" I think general vs particular as in:

    2^3=2^2*2. In general, a^(n+1)=a^n*a

    So "in general" would would introduce a broad true statement.

    «Statement: In general, you can’t do X.

    Refutation: You’re wrong. Y can do X.»

    The refutation is not a "specific case", as you call it, of the statement, otherwise it would necessarily be true given the statement.

    Obviously, in informal circumstances, one needn’t be so rigorous, but if people are constantly giving you those answers, then they’re being pedantic or you’re not being clear enough about the scope of the statement.

    Just use "typically" or "usually/commonly", those words are not nearly as ambiguous.

  20. Peter R says:

    @chrismcb: I agree completely.

    @Chuck McKinnon: I have to disagree with your professor on that one.  His assumption that "the rest of us already know" is just plain wrong (in general :P) and it has nothing to do with the audience’s intelligence.

    When teaching, it’s critical to indicate when you’re stating a general rule (as in it usually applies) and when you’re stating an absolute rule (as in it always applies).  You’re just inviting confusion if you don’t.  And I do sympathize with Raymond.  People who think that specific cases invalidate general rules are just plain annoying.

  21. Ulric says:

    I believe this happens the good programmers’ brains are wired to look for edge cases.  

    So you can’t avoid this.

    btw, I don’t really buy the discussion above of the  mathematical meaning of  ‘in general’ changing with its position in the sentence.  

    English is not my first language but in French, the grammar rules would say these two sentences have identical meaning, and everything else is in your nitpicker imagination ;-)

  22. Arlie says:

    The solution?  Disable blog comments.

  23. Craig says:

    @ Raymond:

    "…even if they are clearly generalizations…"

    That "clearly" in there seems to pose a problem; what’s clear to you may not be to me. When talkig about a subject with which both of us are highly familiar, then go ahead and make generalizations sans weasel words. But if you start discussing the properties of return address handling, you can’t necessarily rely on your readers to have very many shared assumptions. Indeed, our unfamiliarity with the subject may be a big part of why we’re reading your blog to begin with!

  24. [ICR] says:

    @chrismcb: General, rather annoyingly, can mean both "for most cases" and "for all cases". Consider having a "general discussion about Politics" – That doesn’t mean you can talk about "most things on Politics, but not this, that or the other" it means you can talk about "all things on Politics, with no real further restrictions".

    The spirit behind the word is analogous to "painting with broad strokes". Sometimes by doing this you cover everything, other times you’ll sweep over the finer details.

    Of course Raymond meant the "for most cases" and I’m sure Maurits realises that. It’s a fun exercise. Well, *I* found it fun, but then again I’m weird.

  25. Starfish says:

    This thread shows that, in general, there are two types of critical thinkers. Those who do it to be smarter, and those who use it to look smarter.

  26. njkayaker says:

    The clause "in general" (where ever you place it in the sentence), indicates that the speaker knows there are exceptions to the rule but that those exceptions are not normal or common.

    Offering an exception does not refute the general case unless the exception is indeed common. (Otherwise, it just belabors the obvious.)

    Using "all" in a statement indicates that there are NO exceptions. Thus, any exception (common or not) suffices as a refutation.

    Why would one say "all British people have" (almost certainly -always- false) when one could as easily same "most/many/some/etc British people have"?

  27. njkayaker says:

    <<Consider having a "general discussion about Politics" – That doesn’t mean you can talk about "most things on Politics, but not this, that or the other" it means you can talk about "all things on Politics, with no real further restrictions".>>

    The "general" here is typical intended to mean that the discussion is wide ranging and will be accessible to non-experts.

    The phrase "in general" has a different (and commonly understood) meaning, namely, "in the majority of cases".

  28. J says:

    Doesn’t "in general" in mathematics really mean "to generalize this specific example"?  Whereas "in general" in regular english usually (generally) refers to that which is most common?

  29. logic says:

    @Maurits:

    I understand the point you’re making, but the interpretation you’re using doesn’t quite line up with English grammar. In fact, the two statements:

     In general, matrices are invertible.

     Matrices are, in general, invertible.

    ..are actually equivalent, apart from a slight shift in the emphasis. The first one has a very slight bias towards emphasizing the fact that it is only a general rule, while the second one has a very slight bias towards emphasizing that matrices *are*, generally speaking, invertible (as opposed to not). The second might be used in a reply to someone who had implied that the general rule did not apply.

    One alternate phrasing that fits your interpretation might be:

     Matrices are generally invertible.

    This still requires context to correctly interpret, but in a scientific context, the word "generally" in that use does strictly mean that it is always true.

    @Friday (re: Igor Levicki):

    There is a difference in cardinality when comparing the original example given and your example. In the original example, the statement and refutation follow the pattern:

     Statement: Almost all X are Y.

     Refutation: There exists an X that is not Y.

    In your example about Igor, the pattern is:

     Statement: Almost all X are Y.

     Refutation: Only one X is Y.

    To construct an analog with your topic, one might write:

     Statement: So-and-so is a troll.

     Refutation: So-and-so is not a troll because 3 years ago there was a whole day on which they did not post any negative or provocative comments at all.

    This fits the original pattern and quite obviously also the original complaint.

    @Raymond:

    I have a suggestion but I can’t find a place to post it. I was wondering if you had heard anything that might explain why Microsoft chose to create SysWOW64 for 32-bit files and filesystem & registry redirection instead of making a System64 for 64-bit files and leaving the status quo alone.

  30. MadQ says:

    "General" is an interesting word. It can be used to be vague about something specific, or to be specific about something vague. It’s an oxymoron onto itself.

    Heh… that last statement is an oxymoron.

    If you’re into that sort of thing, I highly recommend checking out its etymology.

    So it seems that until someone comes up with a description of "general" in EBNF (blech!) we’ll just have to contend with the fact that it means different things to different people. In general.

    Tune in again next week, when we’ll tackle the word "basically" and the term "pretty ugly".

  31. Richard says:

    An engineer, a physicist and a mathematician were driving into Wales.

    They saw on a hillside a black sheep.

    The engineer said "Sheep in Wales are black".

    The physicist said "No. At least one sheep in Wales is black".

    The mathematician said "No. At least one side of one sheep in Wales in black".

    It all depends on your perspective and context.

    Note for the geographically challenged: Wales has a lot of sheep.

    But not as many as New Zealand claims to have — the first animal I saw in New Zealand was an ostrich, several days before I saw a sheep, and I studied maths at university.

  32. Triangle says:

    One side of what appears to be a sheep is black.

    [Preemptive snarky comment: This comment is useless.]

  33. BryanK says:

    Triangle:  But only when it’s standing on what appears to be the side of a hill.

    ;-P

  34. 640k says:

    Do general failures exclude the possibility of other failures?

  35. Sitten Spynne says:

    If this blog were some kind of formal proof or journal article I could see all of this bickering over semantics, but in the end you’re only reinforcing the aggravation Raymond was pointing out.  Let’s discuss it in the way that you guys can understand.

    There is a subset of the universe of all people ("people" meaning members of the species homo sapiens either male or female that are currently alive ["alive" meaning the person has a heartbeat and brain activity] in any location of the universe [if it turns out that the set of all universes includes more than one universe, all universes in that set shall be included as well]) that includes most, but not all members of the set; we will call this subset the "general" population.  The general population reads the "In general, you (shouldn’t|can’t|won’t) do X" and interpret it to read as "It is a bad idea to do X unless you have a specific reason."  It causes the smart person who does X to ask himself, "Am I in a specific case where this is OK, or should I consider Y instead?"

    There is a subset of the universe of all people ("people" as previously defined) that includes all people who are not a part of the previously defined subset named "general"; we will call these the "exceptions".  The exceptions read Raymond’s statements as "THERE ARE NO CASES WHERE YOU (SHOULD|CAN|WILL) DO X.  DON’T EVEN TRY.  IT’S IMPOSSIBLE YOU JERK, WHAT KIND OF IDIOT ARE YOU?" and have to immediately respond with the specific case where X is fine.  This clouds the point Raymond was trying to make and causes other programmers to see X and think "Hmm, X must always be a good idea, that one guy in that blog says it was wrong but 10 people said it was OK sometimes."

    Am I really clarifying my points by explicitly stating the scope of my definitions, or am I making it more difficult to figure out what the point is because you have to read a paragraph of scope definition before I even state my point?  Not everything requires a design document, guys.

Comments are closed.