Analysis of .NET Use in Longhorn and Vista
smallstepforman writes "In a classic example of "Do as I say, not as I do", Richard Grimes analyses the ratio of native to managed code in Microsoft's upcoming Vista Operating System. According to the analysis at Microsoft Vista and .NET, "Microsoft appears to have concentrated their development effort in Vista on native code development. Vista has no services implemented in .NET and Windows Explorer does not host the runtime, which means that the Vista desktop shell is not based on the .NET runtime. The only conclusion that can be made from these results is that between PDC 2003 and the release of Vista Beta 1 Microsoft has decided that it is better to use native code for the operating system, than to use the .NET framework.""
I mean, an operating system IS supposed to be as efficient and speedy as possible. .NET may be easy to develop, but it isn't as fast as native code. As the trolls would say, "Move along, nothing to see here".
I wonder if the Mono project had any effect on their decision... Imagine porting windows apps to *nix via Mono. But maybe I'm just making a mountian out of a hill...
So what... We donot use JVM as an OS. Every tool has a purpose. ".Net" is not created to be able to write an OS from scratch.
Writing bare-metal OS software vs. application programs is not a good comparison. DotNet was never sold on its principles of performance, but instead on its simplicity of development. That simplicity does not come at zero cost, so when writing base OS function, it is paramount to focus on features and performance, not ease-of-implementation.
is that it's not dependent on Blu-Ray.
Isn't it impossible to do that anyway? .Net (or C# rather) is an interpreted language, and it needs an interpreter to be running in a host operating system. That interpreter needs to be run somewhere, but I don't think between the processor and the kernel is an especially good place for it.
This is not surprising. Performance-sensitive applications (just as the shell, explorer or whatever they call it) would suffer from not being built with optimised, native code. Just remember the OS X Finder (pre-10.2). It was not multi-threaded and made using the UI practically impossible.
The proof is in their application layer. Office, Visual Studio, and their other user applications.
.Net provides many more facilities to the underlying operating system than most other runtime packages that came before it, and that it does so in a way that makes programming in that environment a pleasure, then you see the value of .Net.
People like to complain about MFC, but fail to realize that Visual Studio, from its humble beginnings up through VS6, was based on MFC.
Besides that, the value of a tool is not determined by what the toolmakers do with it, but with what you can do with it. When you see proved over and over that
Microsoft deciding to keep OS components in native code is not indicative of anything.
...Not bottom-level performance systems. I love .NET, but no one in their right mind would write anything in it where performance is a key factor. Web applications and office productivity enhancers are not even in the same arena as, say, your network protocols implementation layer.
.NET... the difficulties would completely negate any development speed gains.
I'm not sure how realistic it is to even try to write OS-level stuff in
Rex is 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
I spent a year developing games (yes, believe it or not) in C# under "managed" DirectX. Keeping up with the various versions of the runtimes required (D3DX) was difficult... and just to test our game, it took over 3 minutes to recompile and get it to come up under the just-in-time compiler. That was for each tweak-code/recompile/test-to-see-how-it-looks iteration -- talk about killing my productivity! The first opportunity I got to take a job back in the C++ "non managed code" games world, I took it! Good riddance. I see why they don't want to use it either. Just more bloat from the kings of overkilled Fronkenschtinian solutions.
and the winner is? wait, I'm sorry, I thought this was informative. As a long time MS developer (sigh, yes I can imagine the flames as I type) I really do not see the deep value of this article.
As it stands today, I have to deliver MS framework 1.x or 2.x or flipin x.x because it is not part of the basic OS. As a coporate developer I have to get our platform installers to push framework out so I dont have xx mg added to my installs. What would be the miracle would be that MS actually implemented an OS that had all the damn components in place (gasp) like it use to be, instead of today were I need to tell users to upgrade to FW then install the app. I try to stay within the envelope, it is MS that keeps changing the edges. How about getting back to basics where the OS, when released had it all.
Life is a great ride, the vehicle doesn't matter
.. not that an OS could be written in .NET, but Microsoft going back on their words. Having the OS based on .NET would be a nightmare with the runtime overhead and would slow down the OS too much.Windows would certainly lose ground to other OS due to demanding hardware requirements.
If you code an object in .Net, you open the object up to reuse by external applications by default. This can be managed through certain programming practices, but the benefit of OO design is that the objects that you create can be reused in ways you hadn't imagined.
Now imagine that Microsoft's utility programs had a security vulnerability. In their managed code, you jokers.
Exporting objects that were fully reflective is asking for trouble. It's probably bad enough that you can tear apart binaries now with a good debugger and resource editor. It will be much worse if those programs actively advertised their services.
So if we project trends out a couple of years more of GNOME will be C#/.NET than Vista. Figures. So basically .NET was just something to slow down third party Windows devels (and the GNOMEs) and sow discord into the Java weenie camp.
Democrat delenda est
When looking at the ratio of .net vs. native, it would make more sense to consider only new code as opposed to all code. It is unrealistic to expect the existing codebase (like explorer) to be rewritten.
This sort of ridiculousness reminds me of Sun's disasterous failure with their Java OS/Appliance shit they tried pushing about 6 yrs ago. Its stupid to base an OS on a virtual machine architecture. The entire purpose of an OS is to offer services efficiently so that apps don't have to implement their own functionality to control devices.
If they had put .NET into Vista, then this article would be along the lines of "OMG MS PUTS INEFFICIENT CODE IN THEIR SHELL" and then blather endlessly on about how all real applications are written in [low-level-language]. Then we'd all sit around and wax about how wonderful it is that Gnome is pure C (and ignore the fact that Mono is associated with it because of cognitive dissonance).
Really, nobody can win when you sit there and pick apart everything someone does out of sheer spite. But I suppose it is far too unreasonable to ask for informed discussion these days...
I respect Richard Grimes' writing, as a .NET programmer. However, I cant figure out his rants on .NET's directions.
.NET was never promoted as a systems programming environment - a few tasks such as network programming and higher-level services may have some benefits, but throwing out well-tested subsystems because of a new framework is asinine. There are tons of things MS is building with .NET - for example, I assume ASP.NET is a fairly large codebase, and it's completely built with .NET(no pedantic comments about ISAPI filters pls..) And their research team is building a C#-based OS called Singularity from the ground-up. I'd like a few more things to be .NETized, but my expectations are lesser than Mr.Grimes'.
This issue is largely irrelevant;
What is this .NET framework anyway?
Did a search for it and apart from some buzzworded texts and complaints about it I came up with nothing that actually said what it was...
Vista has no services implemented in .NET and Windows Explorer does not host the runtime, which means that the Vista desktop shell is not based on the .NET runtime.
.Net runtime.
.Net runtimes.
Why would Microsoft want to slow Windows down any further?
Ask Linus why he isn't using the JVM inside the kernel. Ask the KDE team why every call doesn't go through the JVM. Its a stupid assumption that any Vista program would run under the
A better question would be to ask Microsoft why they won't allow anyone to publish program benchmarks for Java vs
Enjoy,
It's just the normal noises in here.
And yet there are Java Chips.
When Microsoft took over Hotmail, it took them years and many failed efforts to switch it over from unix to Windows. I'm not actually convinced they ever fully pulled it off.
20 years of Windows, and the more expert we are in either/both Windows and unix (or Linux), the less likely we are to use Windows technology for our most important development. Especially stuff that's less than 10 years in the field.
--
make install -not war
Solaris doesn't make their kernel run in the JVM means that we should all stop using Java because it's obviously shit.
It's a low level hardware code you zealot fanboys.
Read this blog posting by Dan Fernandez:
"...For those of you that refuse to believe, here's an estimate of the lines of managed code in Microsoft applications that I got permission to blog about:
The Online Slang Dictionary
Are supposed to run like glacially slow dogs, which have just been fed a tranquiliser overdose?
Deleted
Is Solaris written in Java, now?
I am the maverick of Slashdot
I can't believe that Microsoft is actually making a good decision for once. Although .NET may be easy to work with, it's quite slow. I'm glad to see they're slowly moving away from .NET. I wouldn't mind if it died out anyway.
.Net was one of the few technologies that I've seen come from Microsoft in recent years where I've actually said, "hey that's pretty slick, good call!"
So of course they'll let it languish. Anyone heard any status from Parrot?
The more you know, the less you understand.
Sure, there's obfuscation. Doubtlessly, MS already uses obfuscation extensively in every one of its published .NET assemblies.
But obfuscation will only get you so far. Your garden-variety reverse engineer will have an easier time working with obfuscated .NET code than traditional assemblies.
While, a few years ago, Microsoft was pushing the MS koolaid drinking developers towards MFC (which I used for some projects), MS used WTL (Windows Template Library) for projects such as Office! Think I'm smoking crack? At one point, I renamed all the MFC DLLs in my system and then proceeded to try all the apps in my system to see which ones were dependant on MFC. Guess which ones weren't? That's right, Microsoft products, such as Office, weren't (use Dependancy checker to verify)! Don't know what they're using for Office now, though...
Although MS never really officially supported WTL too much (was on MSDN CDs at one point if you knew where to look), it had a great fan base. I used it for a few apps, and it produced some of the tightest GUI code I've ever seen! With no DLL dependancies either! MS apparently dropped support, but now it's on Sourceforge, so it's still available.
Great, just when they finally got me to drink the forking .NET koolaid, they have to switch it on developers AGAIN! Just how much crap will MS developers take?!?!?! You know, I do like the .NET forms library and the way it's cross language compatible, but couldn't this have been done WITHOUT putting all this on a virtual machine?!? Virtual machines make working on real world apps a pain to develop, IMHO, with having to interface with legacy libraries and the performance issues wrapped around those interfaces...
I remeber posters here on /. predicting that .NET was the wave of the future: it was easier and faster to code apps with; it was more secure; and most of all, it was the future, get off your dead ass and learn it!
Naysayers were modded down and anyone who dared to mention that Microsoft has done this in the past only to yank the rug out from under and release the next "new" thing to force everyone to buy all over again was derided.
Well, where are you now, you Microsoft shills? Still coding in what Microsoft will soon make obsolete technology?
I remember specifically having to download MFC42.dll when installing ICQ with windows 98.
MFC42.dll was never 20 MB, and entry-level Internet access hasn't got any faster since Windows 98 came out. (Windows 98 and V.90 modems came out in mid-1998.)
I'm not so sure. I think that C++ is probably the opposite of what you suggest... although I guess that can't be true either. The statement 'to problem solve' is too general. C/C++ when you absolutely must squeeze everything out of the hardware that you possibly can, regardless of whether it means a rewrite each time the general community figures out faster way of doing things. But most of the time, for your average problem, far better I think to use a higher level language like java, ruby, c#. Then you solve the problem more quickly, more robustly, and more concisely, and usually since you're coding to standard API's you get automatic performance gains when your dependencies show up with newer better versions or when your sandbox figures out a faster way to allocate objects or garbage collect. The right tool for the right job my man. I think.
If you want to avoid buffer overflows, you don't need to resort to a virtual machine. O'Caml can be compiled to very efficient native code, including unobtrusive automated garbage collection. The risk of buffer overflows is extremely minimal, assuming you don't go interfacing with poorly written C code.
Why not a C# notepad, mspaint, explorer.exe, taskmgr, regedit etc?
.Net is the "soup of the day" at MS. .Net will be replaced in 3-5 years with something else that will require MS customers to re-purchase their development tool chain.
.NET or longer. Consider Office. That's been around forever.
.NET? Personally, I think notepad and regedit are fine the way they are. If .NET needs to prove itself, it will not be through clones of tools as simple as those.
Why waste time re-implementing something that already works fine? Also, explorer.exe doesn't really qualify as userland. Sure, it's not the kernel, but it's as close as you get in userland.
As it looks to me,
Again, it seems you're expecting Microsoft to instantly rewrite all their software from scratch. A lot of software that's going into Vista, and indeed Vista itself, have been in the work as long as
You're saying they should just throw away everything and do it all over again in
If vista's explorer is not hosting the runtime it does not mean that it won't support the .NET platform. It only means that it is now less risky to have a .NET app running and that if it crashes, when it does, it will not take down the OS along with it.
.NET is easy on development it was not advertised that it would be the fastest thing in the world.
Have a good one.
P.S. Don't bother to reply to this 'cause I rarely ever check my posts.
It would seem that this is more like the JVM that takes care of eating it own dogfood.
And like many people have said here already,
===== "Every head is a different world so don't invade mine you FREAK!" smartSAGA said
Grammar tip: "Effect" is a verb. "Affect" is a noun.
I know this is entirely off-topic, but I feel I must comment. Frankly, you're wrong. "Affect" and "effect" are both nouns and both verbs.
You can read the verb and noun definitions of affect here. You can read about those of effect here, if you want to learn more.
Anyway, please change your sig. It's bad to spread misinformation.
Whoever thinks that writing the most heavily stressed user-mode components of your operating system in anything other than native code is a good idea, please raise your hands.
Guards, please remove those hands, that these fools never type a line of code again.
'Nuff said.
You're absolutely right. Look how much ground Windows lost when 95 came out and it's bloated system requirements.
And when windows xp came out with its hefty requirements...
Companies like Microsoft and Sun have always provided easily de-compiled languages for others to use, and not used them themselves.
(The links provided are just the first listed for the searches ".NET De-compile" and "Java De-compile". There are many de-compilers, and the ones linked are not necessarily the best.)
--
Movie claims overthrow of the U.S. government: Loose Change, 2nd Edition.
.Net and Windows Vista, even separately neither of these sound appealing to me. Combined, wow, that's as appealing as, say, some raw Rhubarb & a hefty slice of Blue Cheese.
The desktop applications (as opposed to games or special applications) that I use that are made with high level languages.. (Python, Mono, etc)
Beagle -- desktop search engine (files/meta data/email/IM/etc): mono.
Deskbar Applet -- Integrates internet search, dictionary, email, beagle search, etc etc: python
Straw -- RSS agrigator: python
Tomboy -- note taking: mono
F-spot -- advanced photo management: mono.
(of course I include python because that has very aggressive memory management. Also it is compiled into intermediate bytecode before being run through a interpreter.. so don't think of it as a 'basic' style interpreted language either. It just happens in a more automatic fasion then mono and such does.)
And that is just the stuff off of the top of my head. Of course the 'core' stuff that is sensitive to speed is almost exclusively C. I am sure that there are more apps like this sneaking around that I and I just don't realise that they are using stuff like that.
Originally Longhorn was suppose to be all managed code. Remember??! Or has the Microsoft marketting people managed to wipe another little peice of undesirable Microsoft history off into the dustbin?
Google around for that.. You'll find it.
Of course early on Microsoft found out that this ran like shit so they shut up about it very quickly.
In reality all Vista is is just a WinME to WinXP like WinME versus Win98 SE.
That's all it is.
Sure there are substantial changes in a evolutionary manner, but fundatmentally it's the same OS as XP and uses the same codebase.
I've read that wallstreet article before too. The one were Microsoft released information that made it look like they've completely redone it.
But go and look at what MS said about WinXP with their marketting machine back then. When they compared to to Win9x and Win2k saying that it was all new and such. But it is fundamentally the same OS as Win2k and has the vunerabilities to prove it.
Nobody can afford to rewrite a OS anymore. Even Microsoft.
Microsoft actually advises pretty strongly against using managed code for extensions to Windows explorer due to issues with language version binding that can cause problems in some cases.
It shouldn't be too much of a surprise that they aren't really using it so much themselves as a result of that.
Throw the bums out!
The assumption that managed code runs slower than native code is more myth than fact. Many studies have shown (just search on the net) that in a lot of circumstances managed code can be just as fast as, if not faster, than native code. This is mainly due to garbage collection and managed structures. Also as a platform becomes more mature performance will continue to improve (which you can't say for native code).
.Net is more a case of not wanting to write everything again. There is a lot of stuff which is going to be carried over from previous versions of NT. Even if these things have new versions small updates is quite different to a complete reimplementation in .Net. If they were to do that they might aswell just completely write a new OS from scratch and then provide emulation software etc to run legacy apps. Somehow I really don't think MS is going to do that.
I'd say that MS not using
It's bad PR that Microsoft isn't using it .NET more aggressively in Vista, but it's also good software engineering: it doesn't make sense to rewrite large amounts of mostly working code, in particular when a company is already years behind on its schedule. Still, it would make sense for them to start moving some services over to .NET, like personal web server, FTP, and a few others, not just to spread .NET, but also to make them more robust and secure.
.NET for new services or applications--it is.
.NET will initially be custom software development, where it has big advantages. That's the place where software like Cocoa started as well; it takes many years for a platform to become mainstream after such beginnings.
None of this has any bearing on whether it's a good idea to use
The primary market for
I've heard a few rumors that MS has already gotten pretty far with the .Net successor. We will see a V3 .net, but after that something different. Rumor also is that efforts that would be going into Vista .Net is being put into the successor.
If you look at history, it took a while for MS to really fully embrace com as part of the OS, but when they did, it was fairly complete. Here we are in V2 of .Net and there are several huge missing pieces (WIA, full DirectX, still poor web app dev support etc) so you kind of have to assume it (.Net) is a stop gap.
At least that is what I'm hearing.
I understand what you are saying. In an ideal world it SHOULD work like .NET.
that. But, after more than 2 decades of development I can say, sadly, it
does not. I have, many times, been called in to convert systems from their
existing form, into one that would more completely do the job. dBase-->c, Foxpro-->c,
Access-->c++, VB-->c++. Speed, and lack of needed features were the primary
reasons for this. I think MS is shooting themselves in the foot with
There will be a great opportinuty for someone to step in a replace their OS dominance.
If you want quick and dirty then go with the high level language. If you want to clean it
up and optimize it then go as low as you can while keeping it maintainable (which is exactly what
C was invented for).
Why would someone sacrifice application performance for ease of development?
.net, you can create the code and have it working with 1200 developer hours, with standard C code it can be done in about 1400.
.net framework is $9000. That's a pretty decent server to handle the extra load.
.net? It's right there.
.net website: .NET is the Microsoft strategy for connecting systems, information, and devices through Web services so people can collaborate and communicate more effectively.
Here's a reality check for you:
Suppose you have a semi-large development task ahead of your team. In
Those extra 200 hours are charged to your department at $45/hour internally. Which means that the extra development time necessary to extend/create new libraries and start "from scratch" instead of using the
Quite simply, hardware is cheaper than developer time. That's the driver - overall cost to create and maintain your application. NOT overall performance, unless the difference is so significant that the hardware cost to make up the difference would be astronomical.
You want to understand the allure of
One more thing...I stole the following shamelessly from MS's
Microsoft
So...you want to write an OS as a web service? Here's a question for you: What are you going to run your OS service on? I guess that means you want Microsoft to have an OS for their OS!
Duh indeed.
In school, I had read a paper on qualifying software tools for use in US Military and Airforce. Specifically the compiler, used to build software should be certified at D0-178B(I think) standards. Myearliest lesson was if the tools used to build software were poor, then the software built using those tools could never be better. Likewise, VISTA would have created history for being the most expensive software project that failed to take off. And finally, fire Cutler & Allchin ;-)
I'm quite content that notepad has remained almost entirely unchanged since Win95, actually. It's nice to be able to open up a *pure* text editor, no frills whatsoever, when I want. You have a point that they should include a better text editor, but then again that's already taken over by wordpad; not that wordpad doesn't suck, but I don't see why notepad is getting all the hate here. It's just a edit-plain-text-period editor, and that's fine with me. But avoiding being too pedantic here, yeah, wordpad isn't really anything more than support for some font formatting and the like, it's not much improvement especially compared to the kinds of little neat things that other 3rd party text editors have been doing since Win95.
.NET might be a good move . . . but it's not going to happen for text editors. For Windows the idea is notepad as a legacy plaintext editor (which I respect), then wordpad as a sucky slightly higher-level app so that people can barely read word documents and get suckered into buying Office. Yes, I realize that there is a difference between a text editor and a word processor, but Microsoft wants you to use Word and the other Office apps for everything, so they're not going to give you any apps that even so much as remind people that there are more choices other than either absurdly-basic (notepad/wordpad) and full-office-suite (Office, naturally). It's in their interests to maintain this binary picture of text apps in the mind of Windows users.
And sure, Microsoft should be working on some snazzier looking basic apps, and writing them to showcase
Okay, so that doesn't work for ya (and I often myself, if I'm doing plaintext editing on Windows for one reason or another, use something other than notepad). But hey, not to give in to the rampant bashing of Microsoft here on Slashdot but there are some pretty good reasons why people abbreviate it M$, right? Maybe I'm just driving out in Conspiracy Land here, but it seems to me that it's actually a business strategy for Microsoft not to have any better default editors.
I remember sigs. Oh, a simpler time!
We had someone out to interview last month who is currently at Microsoft working on Windows. He said that the major reason that Vista is so late is that they had to rollback all of the development to remove all of the managed code because performance had gone to hell. Every thing that had been done in managed code had to be reimplemented from scratch. Ouch.
The whole perl6/parrot thing is taking much longer than many observers expected.
.NETs,JVM's,LispMachines and the like.
.NET/JVM. For starters, it's written to optimise dynamic strongly type-inferenced languages with many optimised in-core FP (functional programming) constructs.
.NET.
That's not to say it's going slowly... it's quite fast considering the sizes of the development teams.
Now that Pugs (haskell implementation of Perl6) is leaping ahead, the parrot folks have a realistic consumer of their product... several major upgrades of parrot have ensued.
perl6 will be mostly ready long before parrot (the platform) is a polished product.
At the time that parrot is "ready" for general use (I'd expect 1.5 years), there'll be lot's of interoperability with your
I don't think parrot will be in the same space as
I'd expect that by the time polished language compilers (other than perl6) are available targetting parrot in a meaningful way, Microsoft will have shipped many core/non-core products utilising
-just my opinion
"You're saying they should just throw away everything and do it all over again in .NET?"
No different than when some complain about 'X' and say we should throw it away and start over.
This has been leaked several times. It'll probably be leaked again and ignored again. Here it goes.
.NET almost entirely. Avalon, Indigo, WinFS, tons of other application and API layers were built on .NET tech. Yes, you heard me - the new graphics layer was going to be a .NET system, primarily. Older systems were being ported to .NET. Any new features were to be written in .NET. It was a huge initiative.
.NET handled versioning. This wouldn't be complete until the next iteration of .NET - past VS 2005 (Whidbey). This was considered a pretty risky thing - to depend on this way to deal with versioning that hadn't even come out yet. In the middle of 2004 it was discovered or hashed out that the versioning story was just not going to work.
.NET assembly that depends on the 1.1 framework. You've got another that needs the 2.0 framework. Both of these need to be accessible via the same process, potentially - otherwise you're in a worse version of DLL hell. Note that this is impossible to do currently via Java; having multiple packages that need different versions of Java to run can not run in the same package without recompilation. Microsoft's original answer was to have a sort of virtual-VM that would allow this to run, but for whatever reason it was scrapped.
.NET parts of Longhorn/Vista would be cut except under really extreme situations. This is why Avalon, Indigo, Monad and a host of other features that were going to be part of Vista natively will now be addons - because they were deemed too dangerous to ship with.
.NET - and it looked like they were going to be able to do it too. These were all cut because of the versioning issue, not the performance issue.
Vista had been built around
One of the things this initiative depended on was the way that
An aside: what do I mean by versioning? For instance, let's say you've got a
When this versioning problem came up, it was decided by the higher ups that ALL
Long story short - MS had every intent of having performance-critical APIs, applications and big parts of the OS be in
Microsoft's inability or disinterest in leveraging their .Net API to rapidly build new applications and system utilities stands in stark contrast to Apple use of Cocoa, the API they're selling to their developers.
.Net 2.0 - more than 1/2 a decade.
Apple uses Cocoa not only to rapidly build new freestanding apps like iPhoto, but has rebuilt bundled apps like Mail with it, as well as pretty much everything that isn't Java or a standing legacy codebase (like iTunes or the Finder, which was ported from OS 9 in Carbon). Apple is very much eating their own dog food, so that the direction they sell to developers is actually being put into practice at home, and actively being developed by its owner (and premier user).
The difference:
- Cocoa isn't a flavor of the month. It has functional origins back into the 1989 release of NeXTSTEP, making it over 15 years old.
- Apple moved decisively to Cocoa after revealing their strategy for Mac OS X around 2000.
- The work to modernize the NeXT APIs into today's Tiger Cocoa (yum) is comparable to delivering
- Cocoa has incrementally absorbed an increasing role in Mac OS X as it expands to encompass new functions that were only available procedurally before in Mac OS X.
So Apple has a strategy that they are decisively using, while Microsoft takes wild stabs at various things, few of which ever get to mature before a new stab is announced.
Microsoft 2006 sounds a lot like Apple 1996. The difference: there isn't another NeXT for Microsoft to buy.
Since the kernel is unchanging (except service packs), they would probably use static compilation of .net code if they were to go that route, which is very unlikely.
.net and it would be fine. The big problem is that garbage collection in a kernel environment is a big no-no. Kernel allocations must be *very* carefully managed for things to work right under heavy load like WoW.
You could certainly write many parts of the kernel in a language like
Melissa
"Screw Sun, cross-platform will never work. Let's move on and steal the Java language." - Visual J++ Product Manager
(this is apart from portability concerns -- which is a whole another discussion).
i am failing to see why people are so afraid of the M that we need the V. maybe on large multiuser mainframe-style system, you'd want some V. we are talking about PCs. if you need 'em, just get a bunch of 'em. those are your VMs.
if the argument is that if the app crashes or malfunctions -- for whatever reason -- you don't want the V to go down with it, well, if my app crashes, i couldn't care less about the machine staying up.
> I've often wondered how much more secure our computers would be if we ran web browsers, mail clients, and other web facing applications in a sandbox like the JVM
first, in todays day and age, what is not facing the web?
second, doesn't that make the JVM an extension (of the OS) whose sole purpose is to run the apps?
wasn't that what the OS itself is designed to do in the first place? so now, OS isn't something that runs apps but something that runs the VM to run the app? so shouldn't the VM be a standard part of the OS? but it is. it is the OS itself. but the OS isn't secure! so the VM on top of that very same OS is?
it almost sounds like packing on some cake-ey layers of makeup on top of wrinkled up skin and expecting it to fix the wrinkles. if it does show thru the layers, what next, another layer?
anyhow, i cringe when i see JVM. or any other VM for that matter. just give me the freakin M.
1. heard about the longhorn restart? lol, this has been long predicted 2. a lot of windows applications are being developed in .net
3. mono = linux implementation of .net that came AFTER .net was developed (though pretty well done)
4. people will eventually have c# notepad, it is only a matter of time
5. singularity, singularity, singularity, its actually quite interesting in concept; However, in practice it is something extremely different.
6. in practice certain components of managed, can be compiled down to native with special experimental compilers (was talking to some guy that was working on singularity about this earlier)
7. yes, no one in their right mind write the quickest and slickest code in managed, but it is (in my preference the easiest to naturally understand)
8. i probably would never go back to native for any of my research projects, for the sole reason that it is easier to think about the problem rather at the efficiency for example it is easier to think about webservices, objects, delegate than cgi, structures with functions, and function pointers (even though they are virtually the same thing respectively)
9. actually if you guys haven't realized a good amount of new softwares (as quoted above) have been done in dot net, the most common example that anyone can view is their website.
10. I am completely disappointed in they way they are running most of their projects (especially some of their live projects) SIGH.... live messenger beta was much better before the stupid update lol.
Part of the point of .NET is, like Java, it protects you from basic programming faulta - no buffer overflows and the like. so rewriting lots of services in .NET ought to improve the vulnerability of those services to exploits.
It's easy to decompile and analyze .NET bytecode, all the way to method and variable names.
.NET expert.
See Reflector: http://www.aisto.com/roeder/dotnet/
OK, now shoot me. I'm not a
I'm sorry if I haven't offended anyone
What about Sun's JDS? I'd wager it had the same amount of Java apps as Vista has .Net apps. Does that mean Sun isn't invested fully in Java? .Net. That's going to be the signal to developers to leverage .Net in their *user* apps.
The real interesting question is what percentage of Office is going to be written in
This scenario is pure fantasy. The vast majority of apps nowadays are IO limited, and spend most of their time idling whilst they wait for on the hard drive/network for more data, or (more commonly) waiting for the user to type something or click a button. I doubt you'd realise these types speed gains you talk about - most of the time the user him/herself is the weak link in the throughput chain.
Well, you've left out those 60 people who are twiddling their thumbs for 100 hours because the "super-speedy C version" of their app doesn't exist yet. That's 60 people * 100 hours of thumb-twiddling * $8.00/h = $48,000 of money that is lost as users eagerly await the software that is going to save them $4,160 per year.
In your world, they'll break even in around 12 years. Funny, you haven't convinced that development time isn't the leading factor in the cost equation.
I take issue with you referering to me as a 'Script Kiddie'..
1. Large parts of Vista are built on existing code. If something's not broken, you don't rewrite it from scratch just so that you can say that you're using the latest and greatest technology. Not if you're smart, anyway.
2. Windows Forms applications feel slightly sluggish and start slower than native - even for very simple applications.
(NT)
Why is Java a higher level language than C++?
My way of thinking is the higher level the language, the less code you need to write and I've found Java to be more verbose than C++. Java is also missing paradigms that C++ has, like operator overloading and (proper) generic programming.
If managed code means something like ATI Control Center, then I'm happy that MS didn't develop it's core windows applications in .NET.
Of course we all in the end use third party software because MS always avoids support for common formats in it's picture viewers, music players (their media player sucks in fact), etc.
Parent mention things moved into addon releases because they were dangerous. The reality is that they were moved into addons so they could also be used for applications targeting XP and 2003. That, if anything, shows that they are less dangerous, not more, given that they are going to make them more widely available, not less.
The parent is written just barely well enough to fool some readers into believing it. Don't.
So, what, MS is telling people to write their OSes in .NET? Or could you just not resist yet another cheap, meaningless shot?
It's official. Most of you are morons.
Read the article, microturfer. Did you buy your account on E-Bay? You are disgrace to the 15,000s.
I take the old definition of high/low level languages: Assember is low level, and everything else is high.
I know Java does JIT, but originally it was intended to be entirely interpreted, so it higher level, as it abstracts more than say plain C.
In other news, Red Hat announced today that its newest Linux release was written entirely in Perl.
A foolish consistency is the hobgoblin of little minds
.NET is not intended for OS development. It is intended for business application (web or desktop) development. A similar comparison would be how many web sites are now developed in C++, none because it is not efficient and is the wrong tool for the job. I'm still waiting for an article that is critical because Sun hasn't developed Solaris in JAVA, but I doubt that will happen either because it would be silly. This is more a slash dot circle jerk against MS.
...not mostly old stuff... But hey, that's marketing for you.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
Yes. That is indeed the ONLY conclusion one could make - on Slashdot.
Solaris is written in C!
OMG!
No Way!
meh.
...it's still not really classes and pretty stilted to code for in the first place. Just because a "winning" environment uses something, it does not go to be that it's good and usable for anything other than that application- and you just don't know how problematic development for VS might be.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
...don't fix it. I think there is something to see here. Why doesn't MS port their non-OS apps to .Net? MS wants their customers to always port software to the latest and greatest MS language/environment of the year, so why doesn't MS do the same?
With Vista as late as it is, I doubt they have the time to port all their working user-land apps over to .Niet, and quite frankly, I'm glad they didn't -- why introduce new bugs in a well-tested, stable (yes, stable, I can't recall ever hearing of notepad crashing) application for the sake of the .Niet Marketing initiative? They really don't need to either; go to monster.com and search for ".NET developer" and you'll see what I'm talking about.
body massage!
If it was written in Win32, IME it would take a lot longer before it was a bug-free and stable application. c# encourages better programming in the first place.
So for 12 months all your users may take twice as long to use the app due to crashes and buggy behaviour if you wrote it in win32.
You can't have .net applications in the OS because only 1 version of the CLR can be running at one time. The OS would essentially lock the computer at the version of .net it was using -- or worse -- crash if another app had loaded a previous version into memory.
Honestly, Grimes has to know this -- and by not including it at the top of the article, it makes me suspect this was just a troll.
Windows 95 was a big thing on a number of fronts -- preemptive processes and threads, 32-bit virtual memory, the Start button, standardized File dialogs. Another front was the COM/ActiveX component software model.
Having some kind of object and/or software component standard at the operating system level has been this long-time dream -- Taligent/Pink, Copeland, Open Doc, Wirth's Black Box. For all of its warts, COM and ActiveX became the standard for Windows, using an object-reference based standard to replace earlier attempts based on Windows messages and HWNDs.
Besides that ActiveX became the new plumbing for Visual Basic widgets, Microsoft did consume their own dog food in that COM/ActiveX became pervasive throughout the Windows desktop and desktop apps. Think of all of those demo programs of how to control Excel through your favorite scripting language (Automation) or how to include an IE window into your GUI (ActiveX). There is a lot more code sharing on the Windows desktop than you realize thanks to COM and ActiveX and the fact that Microsoft uses it.
I am in the boat that it has taken me a good 10 years to absorb the lessons of ActiveX, to decide on tools to develop for it, to develop software in it, to consume one's own dog food and use one's own ActiveX controls, to develop ActiveX libraries for commercial release. And this .NET thing comes along. Is this the Wave, should I drop everything I am doing in ActiveX and write .NET components? Or should I keep plodding along because that is what Microsoft is doing -- they too have 10 years invested in their own ActiveX libraries and are not about to start over.
ActiveX is incredibly crufty -- no one knows what half the interfaces do, and no one develops for it from ground zero without using automatic code generation from either Microsoft or some 3rd party tools (Delphi), and no one knows what that automatic code generation is doing. ActiveX controls are clunky in that they are software components, but they are not true object classes that you can inherit and extend in your own applications. But they get the job done, they are superbly language-independent (of course restricted to the Windows world), and .NET apps can mix and match ActiveX widgets with the newer .NET widgets.
So why .NET widgets? They allow true object inheritence, the crufty parts are better hidden and encapsulated away, and they are, well, the new thing! On the other hand, everything from the open-source Python to the commercial Matlab has excellent support for ActiveX but nothing for .NET widgets.
When someone does this analysis of .Net use in Vista, this is not just a matter of "ha, Microsoft doesn't eat their own dogfood." I really need to know what state my investment in ActiveX is in and where I need to go next. For example, the current support for 2-D graphics in .NET is rather hamstrung compared to what you can do with CreateDIBSection and ScrollWindowEx under Win32/ActiveX. On the other hand, if there is a whole 'nother graphics model under Vista requiring .NET to access, and if legacy ActiveX controls under Vista start looking like 16-bit Windows apps under Windows 95, then I have to respond to that. But if Microsoft hasn't seen the need to bother with reimplementing their disktop apps under .NET, maybe I am OK with my stuff. If they have reimplemented their desktop stuff to give it a Vista/Aero look but are not using .NET to do it, I sure as heck want to know what they are using instead.
In case you are wondering, I am looking to Java if I have to go through the bother of rewriting all my ActiveX stuff. First off, the BufferedImage.setRGB() and Graphics.copyArea are pretty m
The idea of the .NET framework is to make it easy to create robust applications quickly, writing as little code as possible.
.NET to add on functionality to the core OS seamlessly.
The goal of Operating System code is to be as fast as possible.
The two goals aren't best solved in the same way, which is why MS didn't solve them that way. The important thing is that you can use
Amazing magic tricks
It's a technicality, but actually Microsoft has written Notepad in .Net - it comes as a free example app with the SDK. They've even shown how to do it as a tabbed interface, or how to draw it with 3D calls.
.Net incurs a small startup hit as the .Net library kicks off, so it doesn't start quite as fast as the existing Win32 Notepad app, which is pretty much the fastest-starting app of any use in Windows. So, you get both - a free .Net Notepad implementation to play with, and a faster-starting native one built-in. I think that's a nice way to slice it.
.Net, it won't just be in .Net - it'll be in Sparkle. Look for that as an awkward Plus pack in 2008 or 2009 that's eventually integrated into the version of Windows after Vista/Longhorn.
But, the basic Notepad in
If Microsoft rewrites any of these apps in
There are some very legitimate reasons for us to look to Microsoft to use .Net extensively in their own products, including parts of the OS.
.Net, that means real use in real apps by Microsoft. Now.
.Net (kernel, drivers, etc.). But lots of stuff in a modern OS distribution is really bundled applications. As "JSD" pointed out, components like Outlook Express are bundled applications, not core OS components. Survey 1000 people and ask if they'd rather have sucure, bug-free browsing and email or have Outlook Express run 2% faster. Anyone have any doubt at all about the results?
.Net with C++, but one of the reasons for a framework like .Net is that you want to make most apps perform very well, rather than just a few apps perform exceptionally well, and the rest run like crap or never get finished at all. A reasonably competent developer should be able to pick up a framework like .Net and use objects and data structures that are already developed, tested, and optimized. The reult may not be as fast as recoding the exact right algorithm in a native language, but for most developers and most development, they're going to end up with a better app than if they'd written it from scratch. That's why we use high-level languages, folks.
.Net?
.Net 1.0 was what - 2002? And it's not like it snuck up on anyone. Let's give MS the benefit of the doubt and say that they all knew about it in 2000 / 2001, so it's been five years, easy. That's plenty of time to work out the bugs in a framework that they expect the rest of the world to build apps with. We've had the .1 releases, and we've had the hotfixes and service packs. It's got to be production-ready now, right? So why isn't it showing up in more of MS's own distributions?
.Net.
.Net. I'd like to see it succeed. One of the critical factors for its success is for it to reach a critical mass. It's time for MS to step up and help .Net hit that critical mass.
Readers here have seen the "dogfooding" idea, and have seen lots of arguments for why this makes sense in terms of getting requirements and design right. For a framework as sweeping and critical as
I don't think there are too many people who would expect low-level code to be written in
Besides, the argument that unmanaged code is faster than managed code falls pretty flat on me. I completely agree that a good coder should be able to beat
I think what this really points to is a combination of two factors, both of which are a little unsettling.
First, Microsoft is subject to the same product planning dynamics as the rest of us. For existing code and existing apps, virtually any incremental change will be more economical and less risky when built on an existing code base. Even the iffy cases will *appear* less risky when built on an existing code base. In order to undertake an architectural change, you have to have a pretty compelling reason to do so, and a good bit of courage to shelve the old stuff and move forward. This hasn't happened in a meaningful way in Vista.
Why is this disturbing? Simple. This points to the depth of reengineering that's going into making the OS and apps more stable and more secure. Very often, the right thing to do when fixing a bug is to find the specific pinprick in the code and patch it. Sometimes, however, when you start to accumulate enough bugs in one place, you have to consider whether there's a systemic problem in that area. In those cases, the only way to stop the bugs for good is to fix them systemically -- ie, to re-engineer that part of the app. If this is happening anywhere in the Vista code base, why wouldn't it be happening on
Which brings me to disturbing point #2. The release date for
It's either because any MS OS release is really a bunch of pretty small changes scattered across a staggering number of individual files and components such that MS can't justify rewriting any of the components, or because MS has, as Grimes concludes, lost confidence in
I'm a fan of
Have you been living in a hole? Microsoft publicly announced that .NET would not be core to Vista (then, "Longhorn") and listed many reasons why, but that it would consider putting some of the effort back into the V.next release.
You need to read /. more often if you're going to post crap.
It no longer has a 64k file size restriction and now lets you have extensions that are not .txt.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Launch notepad.exe and look in Task Manager (yes I know). How much memory does it use? Roughly 2900KB. Now compile a .NET application that does nothing more than:
.NET is freaking amazing when you need to write a complex system in a minimal amount of time, but there is a price. If Vista came out and suddenly RAM requirements doubled (they may still) we /.ers would tear 'em a new one.
static void Main() { Application.Run(new Form()); }
This uses 6300KB, and we have zero functionality coded.
Really, we're gonna tear 'em a new one no matter what they do...
You know, there's a lot of developers who prefer VS6 to its successors, and there's even community patches to keep the libraries up to spec. It wouldn't surprise me if there's people in Microsoft still using VS6 and checking on VS200x occasionally to take advantage of its tighter syntax checking.
I always thought the power of .NET was its speed for development, not its execution. I think it's kind of silly to think it's some magical tool that makes programming easier AND YET is as fast as native code. I'd be horrified if Microsoft made their OS based on .NET. Everything would be even more bloated than it already is. Seems like a trolling observation to me.
I've been working with both C# and Objective-C for a good 5+ years now and there's good and bad about both. However, you are slightly off on a couple things:
Cocoa's default language (Objective C) is not interpreted at runtime
And neither is C#. It is compiled at runtime. Meaning that once the program is running, it is no slower than it would be as a "native" app.
This makes it almost as fast as raw C.
And yet, its no faster than C#. And with as much experience I have using both side-by-side, I can definitively say that if you can't get the same performance from an algorithm written in C# as one written in Obj-C, you are most likely doing something wrong.
Bottom line, both Obj-C and C# have their advantages over the other, but raw speed is not one of them.
Perl - $Just @when->$you ${thought} s/yn/tax/ &couldn\'t %get $worse;
...and the text editor never freezes because Intellisense is barfing.
Ever try to work with Unicode translations in east asian languages in Visual Studio? Guess what, it craps out horribly. Notepad is your best option unless you've got the money to buy some specialized big $$$ software for the task (or write your own, I guess). It is absurd that in this day and age, translation support is so crappy in Windows dev tools. Anyone know of some OSS software for Unicode file editing that doesn't Sh1t all over the line feeds and such?
Notepad doesn't require you wait for a runtime to startup. It is very quick to launch. One of the first things I do to a Windows box is put Notepad in the SendTo context menu.
It is a stupid simple program, and that is probably a major reason why it works. I often get angry about the single level of undo and other such shortcomings, but I still find myself using Notepad quite a bit.
They should rewrite Visual Studio, because it has some serious stability issues. Oh wait, they do that every year or so, and it never gets better.
You don't have to throw all that work away unless you want to. It's fairly trivial to use COM/ActiveX from .NET using COM interop. Visual Studio will generate a wrapper around the COM object for use by a .NET application. The interface that is exposed is usually pretty crufty, at least from my experience with doing Word automation from ASP.NET (don't ask...).
Karma: Positive. Mostly effected by cowbell.
You do OS development.... yet you've not used C++ in 10 years ?
.... What are you developing in ?
I'm curious
I've not heard of an OS out there that's not implemented in C++ or C.