Brent Fulgham wrote:
> Thanks for the link! Unfortunately, its click-through
> license forbids disassembly, reverse engineering, and a
> raft of other endeavors that one should be allowed if
> they were truly interested in global acceptance.
Well, this _is_ Microsoft, after all.
> Of course, a few hops up the chain you might run across Joshua
> Trupin's execrable description of the C# language. Really one
> of the worst articles I've ever read. You will get such
> wisdom as:
>
> "It's [C#] a little like taking all the good stuff in
> Visual Basic (C) and adding it to C++, while trimming off some
> of the more arcane C and C++ traditions."
More like "Microsoft Java", but of course they never mention Java, as if
hoping that people will read all this tripe and not notice the similarities.
I had a most exquisite sense of down-the-rabbit-hole a few weeks ago when I
browsed through a Microsoft book on C#. I kept running into all this stuff
about how C# was a revolutionary next-generation OO language, better than
C++, but all the programming samples looked only trivially different from
Java, which of course they never mentioned, as if the book had arrived from
some parallel universe in which James Gosling was assassinated by Richard
Stallman after inventing Gosling Emacs, and had thus never invented Java. I
had to put the book down after a little while because I felt like I'd lose
my mind if I kept going.
I don't really mind them inventing a variation on Java. Either it will take
off or it won't, and I don't really care either way. But I just wish they'd
admit what they're doing, and stop treating us all as if we're so stupid
that if they don't _tell_ us that C# is a Java derivative, we won't notice.
> If you're like me, you might be wondering what exactly the
> "good stuff" allegedly contained within Visual Basic (C) might
> be. Well, one such element is apparently the labeled "goto".
My impression is that C#'s use of labeled gotos is extremely restricted. (I
could be wrong.) The only reference to gotos that I found in a Microsoft
Press book on C# is its use in jumping to the start of one case in a switch
from another case in the same switch. This is actually useful, since it is a
better solution than "falling through" from one case to another, as is
sometimes done in C, C++, and Java (but which cannot be done in C#, since
the "break" required in those languages is implicit in C# -- also a good
thing). It's a better solution because (1) it doesn't look like a mistake
when you see it in someone else's code; (2) it is more flexible, since the
case you're going to doesn't have to be positioned directly below the case
you're coming from.
Now, if it turns out that C#'s goto can be used for any other purposes, I
will be much less happy about it.
> Joshua is also quick to highlight another:
>
> "What's one of the most annoying things about working in C++?
> It's gotta be remembering when to use the -> pointer indicator,
> when to use the :: for a class member, and when to use the dot."
>
> Hmm. I guess stating precisely what you mean is a bad feature
> for programming languages.
Well, claiming that the -> vs. . thing is one of the "most annoying things
about working in C++" is pretty silly, but only because it's so trivial, not
because "stating precisely what you mean is a bad feature". C#, like Java,
doesn't need -> because there's no distinction between having a reference to
an object vs. having a pointer to an object. And C++ overloads so many
things that it's sort of silly to complain that getting rid of the
double-colon scoping operator reduces clarity. The double-colon was
unnecessary to begin with.
> The thing that really bothers me is that they claim that ".NET
> will be available on Windows (C) and other systems". But they
> have no reference implementations available for non-Windows (C)
> environments. When Sun released Java, we had Unix and Windows
> versions available right away, and the Linux Blackdown port
> shortly thereafter.
True, but then Sun is a Unix vendor, so of course they had to support it,
and Windows is 90% of the market, so they had to support that too.
Microsoft's incentive to support anything other than Windows is unclear to
me, to say the least. I interpret "other systems" to mean Windows CE, and
will believe otherwise only when a less ambiguous announcement is made.
Craig