Slashdot Mirror


Microsoft Patents 'IsNot', Enlists WTO

Milhouse102 writes "I was just reading an article on The Register about Microsoft's offshore patent war following Ballmer's recent outburst in Asia. I came across this little nugget, it seems MS has patented BASIC's IsNot operator."

17 of 720 comments (clear)

  1. Not Quite by RangerRick98 · · Score: 5, Informative

    Unless I'm mistaken, they've only applied for a patent; it has not yet been granted. Sadly, given the state of the patent system nowadays, it would not surprise me if it is granted.

    --
    "You're older than you've ever been, and now you're even older."
    1. Re:Not Quite by servoled · · Score: 5, Informative

      Yes, this is a publication of a pending patent application. The easy to tell is to look at the number: 20040230959.

      Published patent applications use the format of YYYY/####### to denote the Year and the number in which the application was received.

      Granted patents have the format of ####### with no year attached to denote the order in which the patent was granted. They are someone around 6,800,000 right now.

      --
      "I have a porkchop, you have a porkchop. I have a veal, you have a veal".
  2. So am I infringing if... by N+Monkey · · Score: 5, Informative

    After a quick read of the patent, it seems to say that it is a test to see if two "variables" are actually the same entity, i.e. at the same address.

    That would seem to imply

    #define IsNot(A,B) (&(A) != &(B))

    infringes?

    Surely this is done in things like memmove() to prevent overwriting of data?

    1. Re:So am I infringing if... by Anonymous Coward · · Score: 4, Informative
      More to the point, the operator has existed in Lisp since at least the '60s:

      (neq a b)

      In Java the operator is simply !=, which tests for pointer equivalence in all non-numerical cases:

      a != b

      But ISNOT is likely a Bill Gates invention. It would seem the whole of the patent rests on a single claim, #2: the operator being in BASIC. Can this possibly stand up?

    2. Re:So am I infringing if... by OblongPlatypus · · Score: 3, Informative

      Unless I'm completely mistaken, each of the claims in a patent stands separately, so if the patent is granted, the first claim would have merit on its own, and a C version would indeed infringe.

      --
      -- If no truths are spoken then no lies can hide --
  3. c'mon.... trivial prior art by arn0n · · Score: 3, Informative
    From the patent application:
    A system, method and computer-readable medium support the use of a single operator that allows a comparison of two variables to determine if the two variables point to the same location in memory.

    Prior art:
    The C operator !=, for comparing two pointers.

  4. Re:Is the 'Is' operator patented? by albalbo · · Score: 5, Informative

    Actually, they specifically admit "Is" as prior art, the example they give is:

    If (Not(A Is B)) Then (Goto Z) End If

    By generating an IsNot operator, such that Not(A Is B)===(A IsNot B), you're re-ordering the sentance:

    If (A IsNot B) Then (Goto Z) End If

    That's what they're trying to patent. The use of a keyword rather than boolean logic. I rather hope and suspect this patent will fail for insufficient inventive step.

    --
    "Elmo knows where you live!" - The Simpsons
  5. Before you get too upset.... by N+Monkey · · Score: 3, Informative

    If ever there were an example of how completely broken and useless the current patent system is then this is it.

    Before you burst a blood vessel, this appears to only be a patent application, not a granted patent.

    The USPTO "recently" changed its rules (to match the rest of the world) and no publishes applications before they are granted.

  6. Re:Microsoft patents ones and zeros... by albalbo · · Score: 5, Informative

    UK patent application GB0312175.3, someone already tried:

    "The applicant appeared to be trying to protect the use of '0' and '1' in computer technology. [...] The applicant appeared to have completely misunderstood the patent system, and had not actually invented anything."

    Via softwarepatents.co.uk. Well, at least *that* didn't get through. ARM's patent on the use of pointer arithmetic in CPU emulators *was* allowed, though.

    --
    "Elmo knows where you live!" - The Simpsons
  7. IsNot IsNot in BASIC yet by unfortunateson · · Score: 5, Informative
    This really boils down to a RTFA, but I'll expound here:

    First off, the IsNot operator is not part of VB 6.0 or VB.net 2003 (I haven't checked 2005, which is still in Beta)

    Second, if you undestand VB's "Is" operator, IsNot makes more sense.

    "Is" is a memory location comparison commonly used to see if two variables point to the same object, e.g.
    objThisControl Is objTheControlICareAbout
    . It does not compare the values of the variables, only that they are pointers to the same object.

    Because there is no inverse version of this operator like there is with "=" and "", you end up with non-natural-language statements such as
    If Not (objThisControl Is objTheControlICareAbout) Then
    Much more natural looking is
    If objThisControl IsNot objTheControlICareAbout Then
    Whether this is patentable is another issue. But you can certainly patent a published idea -- it's the only way to protect it.
    --
    Design for Use, not Construction!
  8. Re:Only pertains to BASIC by servoled · · Score: 5, Informative
    Each claims stands alone. So, only claim 2 would be limited to BASIC, while claims 1, 3 and 4 would apply to any programming language.

    The dependent claims (2, 3 and 4) are merely shorthand to avoid writing the entire claim out each time, but for purposes of what they cover, you should read the claims like this:
    1. A system for determining if two operands point to different locations in memory, the system comprising: a compiler for receiving source code and generating executable code from the source code, the source code comprising an expression comprising an operator associated with a first operand and a second operand, the expression evaluating to true when the first operand and the second operand point to different memory locations.

    2. A system for determining if two operands point to different locations in memory, the system comprising: a compiler for receiving source code and generating executable code from the source code, the source code comprising an expression comprising an operator associated with a first operand and a second operand, the expression evaluating to true when the first operand and the second operand point to different memory locations, wherein the compiler is a BASIC-derived programming language compiler.

    3. A system for determining if two operands point to different locations in memory, the system comprising: a compiler for receiving source code and generating executable code from the source code, the source code comprising an expression comprising an operator associated with a first operand and a second operand, the expression evaluating to true when the first operand and the second operand point to different memory locations, wherein the operator is IsNot.

    4. A system for determining if two operands point to different locations in memory, the system comprising: a compiler for receiving source code and generating executable code from the source code, the source code comprising an expression comprising an operator associated with a first operand and a second operand, the expression evaluating to true when the first operand and the second operand point to different memory locations, wherein the compiler comprises a scanner, a parser, an analyzer and an executable-generator.
    --
    "I have a porkchop, you have a porkchop. I have a veal, you have a veal".
  9. Prior art already in BBC Basic by serviscope_minor · · Score: 4, Informative

    10 DIM A 10
    15 REM this is equivalent to A=malloc(10)
    20 B=A ... ...
    100 IF BA THEN ...

    So this tests to see if two variables point to the same memory location, in a variant of Basic which has been in use since about 1982.

    BBC Basic supports pointers, proper indirection, indexed indirection and dynamic allocation.

    --
    SJW n. One who posts facts.
  10. The relevant Blog entry of the "inventor" by grungeman · · Score: 5, Informative

    http://www.panopticoncentral.net/archive/2003/11/1 7/243.aspx#Comments

    And he writes that they "had requests for this in the past", so they did not even invent it, but some users suggested it.

    Finally check out the comments of the VB users below wetting their pants for this little feature. Now isn't that really sad?

    --

    Signature deleted by lameness filter.
  11. Re:IsNot Microsoft? by jimicus · · Score: 3, Informative

    The patent claim makes interesting reading. Specifically:


    2. The system of claim 1, wherein the compiler is a BASIC-derived programming language compiler.
    3. The system of claim 1, wherein the operator is IsNot.


    Most of the other claims simply describe how a compiler goes about producing executable code.

    IANAL, but does this mean that any language which wasn't BASIC derived would be free to implement this? Similarly, you could work around it simply by calling the operator Isnt.

  12. Prior art for sole ondependent claim by originalhack · · Score: 4, Informative

    So, just sent a registered letter to the patent examiner with a registered copy to the attorneys pointing out that there is prior art for claim one. this 1998 ISO comment, this 1997 IBM document or a few zillion others.

  13. Re:Isn't mathematics unpatentable? by Craig+Ringer · · Score: 4, Informative

    Umm... no, it doesn't.

    The Python 'is not' operator does, but to get the same effect in C/C++ you must, as another poster noted, do the equivalent of

    &a != &b

    to determine if they're the same object. It's not an equality test, it's an identity test.

  14. Microsoft HAS NOT PATENTED 'IsNot' by crow23 · · Score: 3, Informative

    If you check the PTO web site, it is for "published patent applications."

    Microsoft applied for a patent on "IsNot" on May 14, 2004, and the patent was published 18 months later on November 14, 2004.

    This doesn't mean that the patent will issue and that Microsoft will receive patent protection for the operator. The author is getting ahead of himself...