Jeff Prosise on .NET






4.86/5 (8 votes)
Jeff Prosise answers your questions on .NET
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 http://msdn.microsoft.com/library/psdk/buildapp/64bitwin_410z.htm.
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 intended).
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 — Wintellect, the 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 fellow programmers.