Slashdot Mirror


Microsoft's 'IsNot' Patent Continued...

An anonymous reader writes " According to the patent application--filed in mid-November by Paul Vick, lead architect for Visual Basic .Net at Microsoft; Amanda Silver, a program manager on the Visual Basic team; and an individual in Bellevue, Wash., named Costica Barsan--the IsNot operator is described as a single operator that allows a comparison of two variables to determine if the two point to the same location in memory." This article continues the tale started last november, and here is an eWeek story on the same subject.

15 of 566 comments (clear)

  1. Re:Changing code again by ZigMonty · · Score: 3, Informative

    No, they want to patent: if (ptr1 != ptr2) ...

  2. Re:In other news, English patented by MS by gowen · · Score: 3, Informative
    The fees are based on Scrabble's point system, with 1 cent per point.
    So that's why the cheat code in MS Minesweeper is "XYZZY". They're working on the principle that people won't share information that costs the $0.36 for everyone they tell.
    --
    Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
  3. Wow, nice bias by rabtech · · Score: 5, Informative

    I like how the submitter conveniently left out Paul's blog entry on the subject:

    http://www.panopticoncentral.net/archive/2004/11 /2 0/2321.aspx

    He says, among other things that software patents are a "bad idea" and that he did not "feel particularly proud of my involvement in the patent process in this case".

    So there you have it, from the horse's mouth.

    --
    Natural != (nontoxic || beneficial)
  4. Re:Oh please! by berglin · · Score: 3, Informative

    > I remember our programming instructor in sixth grade teaching us about this logic operator is BASIC.

    Actually, it's not the same operator.

    They're talking about creating an operator that can say if two objects are the EXACT same object or not.

    In C++ terms this is the equivalent of doing *ptr != *ptr (!=) vs. ptr != ptr (IsNot).
    As you all know, int a = 1 and int b = 1 does mean that &a != &b whereas it does not mean that a != b.

    So, basically they're trying to patent a new keyword with new functionality in all BASIC-related languages, effectively locking all companies that provide BASIC-interpreters out because they can't provide this functionality.

  5. Re:Oh please! by janoc · · Score: 5, Informative
    Well all LISP variants have at least four comparison predicates (and LISP predates Visual Basic by ages):

    From Lisp primer:

    = (= x y) is true if and only x and y are numerically equal.

    equal As a rule of thumb, (equal x y) is true if their printed representations are the same (i.e. if they look the same when printed). Strictly, x and y are equal if and only if they are structurally isomorphic, but for present purposes, the rule of thumb is sufficient.

    eq (eq x y) is true if and only if they are the same object (in most cases, this means the same object in memory).

    eql (eql x y) is true if and only if they are either eq or they are numbers of the same type and value.

    So what Microsoft is trying to patent is known in LISP as (not (eq a b)) for a long time already :(

  6. Re:Oh please! by WillerZ · · Score: 5, Informative

    The IsNot operator described in the patent also differentiates between objects with the same address in different memory spaces. They mentioned running a cluster-aware program which could manage objects on multiple machines simultaneously.

    So, it's equivalent to:

    ((&a != &b) && (a.host != b.host))

    Which is yet more complex but still not worth patenting a simplification on.

    --
    I guess today is a passable day to die.
  7. Re: Oh please! by Black+Parrot · · Score: 4, Informative


    > But it is the same as "Not equal to" applied to the address of the variable [...] So, it's still a pretty trivial concept...

    There's also single-operator prior art in the Scheme neq? operator.
    (I don't know whether it's standard, but it is provided by some interpreters.)

    --
    Sheesh, evil *and* a jerk. -- Jade
  8. Re:Also today... by maxwell+demon · · Score: 3, Informative

    The letter 'T' is already trademarked by the Deutsche Telekom. Sorry, MS.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  9. Re:Prior art? by vrt3 · · Score: 3, Informative

    IsNot compares the addresses of the variables, not the value. The equivalent in C is &a != &b instead of just a != b.

    It's just like the equivalent in Python: a is not b (or not a is b, I don't really understand the need for a separate operator). Only difference is that it's one word instead of two. And different capitalization (but isn't Basic case insensitive?)

    --
    This sig under construction. Please check back later.
  10. Re:Oh please! by gstoddart · · Score: 5, Informative
    a isNot b
    is equivalent to:
    &a != &b


    Well, in C, if a and b are strings, structures, or arrays, then the variable name is the same as the address.

    Therefore a != b when you're testing if the 'two variables point to the same location in memory' is covered by friggin' PDP-11 architechture. It's basically a comparison of two integers and a BNZ (branch non-zero) instruction.

    They can make all the claims they want about how they've done all sorts of innovative stuff to make the link novel, it's still comparing a pointer reference in a programming language as far as I can seem.

    What's next, start patenting the AND, NOT, OR family of operations? I hope not!

    --
    Lost at C:>. Found at C.
  11. Prior art by hey! · · Score: 4, Informative
    OK, as others point out, *ptr != *ptr2 tests if what the ptrs point to is equal (e.g. if they both point to the value 3). Now arguably, ptr1 != ptr2 is not the same concept either, because we are testing whether two addresses have the same value. But suppose I have a C program with two structs.

    // don't try this if you want to work for me...
    struct foo {
    int x;
    int y;
    }

    struct foobar {
    int x;
    int y;
    int z;
    } // ... later on we see

    struct foobar fb;
    struct foobar *fbptr;
    struct foo *fptr;

    fb.x=1;
    fb.y=2;
    fb.z=3;

    fbptr = &fb;
    // this is a bad idea, you'd better know your machibe representation
    // if you don't want a core dump, but you CAN do it.
    fb = & ((foo) fb);

    if (fbptr != fb)
    println("this should not be seen.");
    else
    println("the pointers are equal.");


    However, I think there is a closer parallel.

    Consider the following java snippet:

    String s1 = "this is a string";
    String s2 = "This is a string";

    if (s1 != s2) {
    System.out.println("s1 is NOT s2");
    } else {
    System.out.println("s1 IS s2");
    }

    if (!s1.equals(s2)) {
    System.out.println("s1 DOESN'T equal s2");
    } else {
    System.out.println("s1 EQUALS s2");
    }


    Of course, underneath it is probably implemented with pointers, but the semantics of the != operator on reference types is defined to be object identity non-equality.

    This prints out the following:
    s1 is NOT s2
    s1 EQUALS s2

    The comparison operators in Java, when applied to reference variable types (which is everything other than built in primitive3 types) tell you whether the objects have the same identity (==) or different (!=).

    Imagine, for example, instead of a conventional virtual memory architecture, we have an architecture where we have different kinds of memory with different speeds mapped to different address ranges; say that adresses under 1 million are fast memory and addresses 1 million or over are slow memory. This is not impossible to imagine for some kind of embedded device. Suppose, in addition, the runtime system understands this and caches copies of frequently used addresses in the below 1 million range to enhance performance.

    In that case suppose we have the java expression:

    if (objRef1 != objRef2)

    In this case, a correct java implementation on this hypotethetical platform could not use a simple address comparision. If the addresses were unequal, it would have to do a further check to see if one of them were a cached version of the other.

    Y'know, a news for nerds site really ought to make it possible to post code examples without resorting to stupid tricks like this: 2qy982uoiu 3o2iu4o23iuoi23u4 23o4uo23iu ou34oi 23oi4u o2i3u4o i234 lkasdfls llflawl fasdf ssdlllle asdf foo sdalkfl adlk;jlaskdf lsadf . as;ldkf ;lkasd lk dfllelaksdf lkasjdf lkasdjf lkajsdf lkkas df asdlfkj ealksdf . asaKJ SADF SADKFJ kj kajsdfh kjashdf kjas dfk aksdjf llk jasdlkjhs adflkjh asdf lkjhsad flkjadhsf lkjh j aldksjfh lsadkjfh lkj laksdjfh lkajsdfh lkasjdfh lakjsdf laksjdfh laskjdf laskjdfh lsadkjfh iuewriuy c,m.xzb wuoery oj lkjasdf ,
    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  12. Re:Oh please! by ratboy666 · · Score: 3, Informative

    Actually, the grandparent post was right...

    a and b are references, which are pointers in the C sense:

    So the C code would be:

    int *a, *b; ...

    if (a != b) { ...
    }

    The extension to C++ usage is obvious to a skilled practioner.

    And the (new, patent pending or granted?) Microsoft BASIC approach is:

    if a isNot b then ...

    The equivalence is EXACT between != and isNot. I am a skilled at programming, and I find it obvious.

    Microsoft will NEVER defend this patent. 'Cause they will lose.

    PS. Object equality vs. Value equality is carefully delineated in "Smalltalk, The Language and Its Implementation" (just the reference I had at hand, there are HUNDREDS of other discussions -- usually for stuff a bit more interesting though).

    Ratboy.

    --
    Just another "Cubible(sic) Joe" 2 17 3061
  13. Re:Sue the Patent Office? - Probably Not by iammrjvo · · Score: 3, Informative


    Unless the government specifically passes legislation allowing you to sue the government, then you can't sue the government. It's a legal concept called sovereign immunity and is derived from the ancient concept of "the divine right of kings."

    --
    Ha, ha! Nobody ever says Italy.
  14. Re:Now look here... by olderchurch · · Score: 3, Informative
    --
    Disclaimer: This opinion was created without the use of any facts