Welcome to the first in our series of interviews. Our inaugural interview
was to be with Lon Fisher but he has been delayed due to work commitments, so
Jeff Prosise from Wintellect
has agreed to step up to the podium and give us his thoughts on Life, the
Universe, and .NET.
What will be the role of ATL and COM in
the new .NET technologies? What about emerging technologies such as WTL?
ATL will have no role whatsoever in writing
Microsoft .NET applications. COM won’t be a player there either, although it’s
interesting to note that .NET began its life as COM+ 2.0. Microsoft .NET is a
logical evolution of COM, but to describe it that way hardly does it justice.
.NET is much broader in scope than COM ever was.
WTL won’t rise to prominence unless
Microsoft wants it to. And all indications are that it doesn’t. Microsoft’s
energies right now are being directed toward helping us write better Internet
apps, not better desktop apps. WTL was an interesting experiment and would
probably foreshadow what MFC would look like if it were rewritten to use
templates. But it’s unikely that will that MFC will be rewritten or that WTL
will be further developed.
In your opinion, what is the future of MFC?
If you’re writing traditional desktop-style
Windows applications, MFC is still a fine way to go about it—and probably will
be for some time to come. But do I think developers will be writing a lot of
new MFC code five years from now? No. We’ll be using better tools (hopefully)
to write a more diverse assortment of apps (particularly Web apps) that target
platforms like .NET and, of course, that leverage the Internet. Microsoft has
demonstrated no interest in giving MFC the radical retooling it would need to
adapt to this new world order.
Do you have any idea how MS will protect intellectual property in the new
.NET runtime—especially since we are provided with a decompiler.
Like Java byte code, IL is rather easy to
reverse engineer. As far as I know, Microsoft has no plans to protect the IL
code that a compiler generates. Microsoft apparently will provide a
“pre-JITter” which would enable you to compile IL to machine code. You’d lose
platform independence, but you’d be able to hide your code.
How long do you think MS will wait before Linux.NET comes out?
My money’s on Commodore 64.NET.
What advice you might give to a newphew of yours if he was wondering into
the software development field today? Would you say, Learn C# and you'll make a
good solid living. Would you say learn C++/MFC/ATL, cause there's always a need
for a good C++ programmer, would you say learn VB, 'cause there's just plain
more jobs? or would you say learn Java 'cause all the big companies seem to be
standardizing on it.
The truth? You can’t go wrong with any of
them. C# is the biggest risk right now, because it’s too early to tell whether
the world will embrace C#. (I wouldn’t bet against it, though.) C++, MFC, and
ATL programmers will be needed for a long time, because even if .NET is
successful, it won’t take over the world overnight. VB programmers are in
demand; I can’t see that demand slipping any time soon. The key is that
whatever path you choose, you have to be prepared to change direction when
demand dictates. Today’s developer must be willing to retool every few years.
Windows dominates the software industry today, but do you think its
perceived flaws (cost, constant upgrades, stability) will make Linux more
popular in the future. What is your opinion on the future of operating systems?
I think people tend to overemphasize
Windows’ instability and underemphasize Linux’s weaknesses. IMHO, Windows
NT/2000 is a well-designed operating system that is extraordinarily stable
given the broad range of tasks it’s asked to perform and the wide variety of
hardware that it runs on. I have nothing against Linux, but I’ve met people who
are religious in their hatred of Windows. Go figure.
On the future of operating systems, it
seems we’ll be moving towards environments such as .NET and Java that layer
run-times on top of operating systems. The underlying OSes will be abstracted
away more and more as run-times (and the class libraries that we use to program
them) become the target of the code that we write.
How will Win64 impact MFC applications and our custom extensions and
classes? Any issues you feel we should be aware of now?
Assuming Microsoft produces a 64-bit
version of MFC, MFC will insulate programmers from some of the bitness changes,
just as 32-bit MFC eased the chore of porting from 16-bit Windows. But even MFC
programs will suffer when they cast pointers to DWORDs and commit other no-nos
like that. For an excellent overview of the things you should be doing today to
make porting to 64 bits easier, go to
The Big Question: C#? Why? Is this really necessary to make .NET happen, or
is it a political move to fight Java?
I can offer a personal insight here, but
keep in mind that this is purely my opinion—and that it’s difficult for me to
be totally unbiased on this issue. I know a lot of Microsoft employees who just
a few years ago were utterly in love with Java. My perception is that Microsoft
would have embraced Java more fully, and would not have invented .NET, had Sun
not proved to be such a difficult partner. Given the personal enmity that Scott
McNealy apparently harbors toward Bill Gates, it’s entirely reasonable to
suspect that no matter how well Microsoft toed the “100% pure Java” line, Sun
would never let them rest in peace. If that’s the case, then Microsoft made the
only business choice they could when they divorced themselves from Sun and
struck out on their own.
Personally, I like Java a lot. I don’t use
it professionally, but I downloaded some of the early Sun JDKs and used them to
learn the language. One thing that bothers me about Java, though, is that one
company owns it and controls it. I doubt that Sun will ever turn Java over to a
standards committee and make it a truly open language. To its credit, Microsoft
is turning C# over to a standards committee. They’re also helping a bunch of companies
develop .NET compilers for every programming language under the sun (no pun
As to whether C# is necessary, no, it’s not
necessary. .NET is not about languages; it’s about a common run-time that runs
Intermediate Language (IL). The language you use is a personal choice and is
little more than a vehicle for producing IL. C# is one of many languages that
you’ll be able to choose from for writing .NET code. That said, if you like
Java, you’ll like C#, too.
Will we be able to write apps in .NET (ie using managed code etc) that will
run outside of .NET - say, on Windows 98?
Microsoft plans to make the .NET run-time
available on down-level operating systems, including Windows 95 and Windows 98.
So yes, you’ll be able to run it on Win9x. But no, you won’t be running it
“outside of .NET.”
What is it that you are involved with at the moment?
I’m currently traveling a lot teaching COM
programming to developers and consulting on COM projects. I’m spending a lot of
time working for—and helping to chart future directions for —
company I recently founded with John Robbins and Jeffrey Richter. Wintellect
has been a ton of work, but I’m having a blast. I’m also spending every moment
that I can learning and studying Microsoft .NET. The COM+ book I’ve been
planning is shelved for now given COM’s irrelevance in the era of .NET, but
there’s a very good chance that I’m going to begin working on a .NET book soon.
.NET represents a whole new paradigm for Windows developers, and I’m excited
about the prospect of making the learning process a little bit easier for