Microsoft is absolutely
determined to move programming from Win32 to the .NET
platform.
But a great many programmers are reluctant to make
that move. Now that Visual Studio 2005 and the .NET
Framework 2.0 have been launched, the time seems right
to consider Microsoft’s .NET strategy.
Dermot
Hogan and Huw
Collingbourne chew the fat...
"If C#
isn’t any
better than the other languages why did Microsoft
invent it in the first place?" |
Huw: My feeling is that Microsoft’s entire strategy
with .NET has been confused an unfocussed. Take the C#
language as an example. When .NET was launched, we were
led to believe that C# was going to be its ‘native
language’. It was a language that had been designed
from the ground up to take full advantage of the special
features of .NET. But now Microsoft has changed its tune.
They claim that Visual Basic, J#, C++ and just about
any other language you can think of are all as good as
one another - ‘first class citizens’ I think
is the trendy marketing term. Well, if C# isn’t
any better than the other languages why did Microsoft
invent it in the first place? A pretty dumb move to invent
a new language that’s no better than all the existing
languages, I should have thought!
Dermot: My feeling is that C# was motivated by a number
of different reasons. First, Microsoft wanted a Java
strategy – more precisely a strategy to stuff Java
at least on the desktop. As it turns out, that wasn’t
necessary since Java on the desktop is non-existent anyway.
But things like a new language have a long gestation
period. Once you’ve started something like C#,
it’s difficult to turn it off. Secondly, Microsoft
realized that it needed a more “systems” approach
for .NET than Visual Basic provided. In theory, C# provides
better pointers and the like to interface to unmanaged
memory. In fact, the whole .NET approach to unmanaged
memory is rather shambolic. In my view, they would have
been better concentrating on providing VB with the tools
required to interface to unmanaged memory properly. The
third reason why C# exists is the simple fact that there
are a lot of C/C++ programmers around and Microsoft wanted
to appeal to them. I think it’s probably failed
in this last aim.
Huw: You say you’d have liked some extra features
in VB .NET. Personally, I still can’t see where
VB is going these days. I know that you’ve been
pretty critical yourself
of the way that Microsoft just dumped its huge VB6 user
base - up a stream without a paddle, so to speak. But
one of your recent columns,
you seem to have had a change of heart. You talk about
all the good stuff that’s coming
in VB9. But VB9
isn’t even a beta product yet - it’s just
a name. What use is it to all those VB programmers who
still haven’t been given any practical means of
porting big applications to .NET? Microsoft clearly no
longer has any real commitment to VB. Wouldn’t
it be better if they just cut short the agony and pulled
the plug on the language once and for all?
"People are
not going to migrate to VB .NET just because Microsoft
says it’s
the way to go.." |
Dermot: Ah now … we’re
getting onto more interesting ground here. Looking at
VB7 (VB .NET), I was pretty unimpressed with its usability
for the tasks I was trying to do. It didn’t seem
to have any advantages over C# - in fact it was worse
in handling unmanaged memory. In my view, VB needs to
be a really fast flexible programming tool, and VB7 didn’t
have that. In the past, where VB really scored was if
you had to knock out a program fast, you would find VB
helped you do it. Sure, sometimes it got in the way,
but not quite as much as C or (God help us) C++. With
VB9, I think that Microsoft has finally grasped that
it’s got make VB easier to use than any other programming
tool around. People are not going to migrate to VB .NET
just because Microsoft says it’s the
way to go. But on the transition from VB6 to VB7, I think
that Microsoft has possibly made a major misstep.
Huw: And talking of
missteps… What about Microsoft’s ‘Internet
strategy’. MS might have been able to dominate
the desktop but it’s let the Internet slip through
its fingers, hasn’t it? There’s a mass of
stuff in Visual Studio for programming web applications
but, to me, it all seems pretty much irrelevant. I mean,
how many Web Form applications have you seen on the Web?
Not a whole bundle, I’m willing to bet. The fact
of the matter is that the programming language of the
Web is called PHP and it’s Open Source. You’ll
see PHP applications everywhere. Most of the blogs, Wikis
and discussion forums are written in PHP - and they are
run on Linux. Microsoft is still trying to fight a battle
that they’ve already lost.
"Microsoft
hasn’t come to
terms with the fact of Linux running the Internet..." |
Dermot: Yes – I’d agree here. The problem
with Microsoft software is that it all works well inside
Microsoft’s magical ‘walled garden’.
If you have Internet Information Server running on Windows
Server 2003 and so on, it’s wonderful. It all works
(more or less) and it’s relatively easy to manage.
However, once you step outside into the big wide world,
you are in trouble – at least if you try and run
Microsoft stuff. The real problem is that Microsoft hasn’t
come to terms with the fact of Linux running the Internet,
and so doesn’t have a realistic strategy here.
I’ll believe Microsoft is serious about the internet
when it starts funding Mono in the same way that IBM
funds Linux.
However, there’s one other important aspect of
Visual Studio 2005 that’s often overlooked - namely,
the ‘enterprise’ bits. Yes, yes, I know
that this ‘enterprise’ stuff is usually vastly
overhyped, but I think Microsoft really has started to
address this properly now. There is – at long last – a
half decent source control system that comes with the ‘Team’ editions.
And the Project portal looks quite nice, though it remains
to be seen how useful it is.
Huw: But doesn’t that assume that enterprise developers
are all going to be prepared to switch to Visual Studio
.NET in the first place? What about all those teams of
programmers working on big Win32 projects - especially
those committed to VB6. They’re plain stuck, aren’t
they?
Dermot: Now let’s not to go overboard in moaning
about Microsoft’s language strategy. The usability
of Visual Studio is really very good; I enjoy programming
in VS 2005 more than in VS 2003. There’s a whole
raft of small new features which you don’t really
notice until you start using them. Overall, I think Visual
Studio must be one of the best programming tools around.
I’m looking forward to getting my hands on the
Visual Studio ‘toolkit’ which should be available
next year. I’m hoping to link in the Microchip
compilers and linkers (which I use on a daily basis)
if I can. If you’ve never used a software toolkit
from a hardware vendor (such as Microchip), you might
tend to underestimate just how good Visual Studio really
is!
Huw: I agree with you
to a large extent - the editing and debugging environment
of Visual Studio is excellent. The debugging tools in
particular are much better even than those in my beloved
Delphi. However, speaking of Delphi… I wonder
if Borland now has a realistic opportunity to offer competition
to Microsoft? With the new release of the Borland Developer
Studio, you’ll
have the option of coding in C++ for Win32, C# for .NET
and Delphi for .NET (Win Forms). Moreover, Borland has
a powerful class library (VCL) that works pretty well
on both Win32 and .NET. That’s why some VB developers
are looking to Delphi as a serious alternative. Unlike
VB, which commits you either to Win32 (VB6 and its predecessors)
or .NET (VB .NET), a Delphi Win32 VCL application can
be recompiled for .NET with few (or if you are careful,
with no) modifications to the source code. In principle
it seems to me that Borland’s .NET solution is
essentially better than Microsoft’s.
"Microsoft
has received two big shocks of late: the first
is Google and
the second is the slow take up of .NET..." |
Dermot: I wouldn’t go as far as saying that Borland’s
.NET strategy is better than Microsoft’s. After
all, Microsoft invented .NET and so can really determine
which direction it will go. But I do think that Microsoft
has seriously underestimated the ‘stickiness’ of
Win32. I really think that Microsoft thought that it
could wrap up and hide the Win32 bits, that the brave
new world would be all .NET and all new development would
be in .NET languages.
It’s a bit reminiscent of Sun with Java initially.
It took a few years for Java to settle down as a server
language – and in the meantime we were bombarded
by misleading (and sometimes downright incorrect) information
from all sides. Microsoft has seen something of the error
if its ways with Visual Studio 2005's version of C++
- which is what you need to support Win32 and make it
work with .NET. Interestingly, Microsoft itself doesn’t
seem to use very much of the ‘++’ bits of
C++; it’s
more like C with a few classes added (and with good reason).
So I suppose, Microsoft’s C++ is rather like Borland’s
Delphi…
Huw: (muffled
choking sound…)
Dermot: …and
I think it’s, as usual, down
to whether you prefer C or Pascal syntax. Unless you’re
a VB6 shop of course. Then you are well and truly up
the creek without the proverbial paddle.
Microsoft has received two big shocks of late. The first
is Google – that really does seem to be causing
sleepless nights in Redmond – and the second is
the slow take up of .NET. Microsoft may control the desktop,
but it sure doesn’t control the Internet or which
languages people use to develop software. For example,
the GNU C++ compiler is arguably better than Microsoft’s
version. And you can always use Java. Or Delphi. They’ll
all get the job done. Microsoft is trying to get developers
to use .NET (and so use and lock into other Microsoft
products such as Internet Information Server, etc.) by
making Visual Studio as good as it can be for developers
to use. And Visual Studio 2005 is very good, no doubt
about that. Whether it will work is a different question.
Visual Studio just doesn’t address non-Microsoft
web development and, as you say, that is where a large
chunk of development effort is now going.
|
|
|
Huw Collingbourne
has programmed in Delphi since Delphi was launched.
Now, in spite of some aesthetic objections to all
those curly brackets, he is reasonably contented
with C#. |
|
Dermot Hogan programs
in C, C++, Assembly Language, Visual Basic (of
both the 'classic' and .NET varieties) - and relaxes
with lovingly hand-crafted microcode. |
December 2005 |