To view parent comment, click here.
To read all comments associated with this story, please click here.
20 years ago? That'd only be 1988.
All versions of Unix had been written in C since 1973. VMS had always been written in a combination of BLISS and C. Pretty much anything developed since then would have been almost entirely written in C or something similar.
This includes even OSes for home computers starting around 1984, such as the Amiga's OS (BCPL and C, with bits of assembly), the Mac OS (Pascal and assembly), or pretty much anything except DOS. Even Windows (such as it was back then) would have been written in either C or Pascal.
The basic difference is that the transition from assembly to C had huge advantages, and minimal (if any) disadvantages. They ran no slower, but were much easier and faster to develop, didn't require rewriting for new architectures, and so on. Most importantly, an OS written in C would be compatible with the same OS written in assembly, and would be able to run existing applications, or have existing applications adapted to it.
Using something like C# offers more advantages (mostly in regard to safety and potential security, with a very small possible speed advantage), but crippling disadvantages - basically, it's incompatible with every piece of software developed over the past 40 years, and it's nearly impossible to adapt existing code to run on it.
There are possible work-arounds, but they have unacceptable security or performance penalties.
Sorry, I should have said 40 years (I wasn't really thinking). A longer timeframe actually supports my argument though.
You are wrong here. They ran way slower. But it was a higher level, and more importantly, a portable language. C was the big, revolutionary thing UNIX had going for it when it came out. K&R kind of decided that the machines were fast enough at that point that the additional cost in performance was outweighed by the numerous advantages.
here is a quote from the UNIX wiki
In 1973, Unix was rewritten in the C programming language, contrary to the general notion at the time "that something as complex as an operating system, which must deal with time-critical events, had to be written exclusively in assembly language".[4] The migration from assembly language to the higher-level language C resulted in much more portable software, requiring only a relatively small amount of machine-dependent code to be replaced when porting Unix to other computing platforms.
(http://en.wikipedia.org/wiki/Unix#1970s)
I'm not quite sure what you are talking about here. it is very easy to work with C code in C# (here is a site that gives you method signatures for most of the common windows APIs http://pinvoke.net/). What C# has going for it over C is improved security, stability, interoperability and theoretically, portability. The price you pay is some additional overhead at runtime for actually managing the process.
The argument isn't about interop, it is about performance.
Edited 2008-02-09 16:30 UTC
are you saying that a C# OS can't run binaries compiled from C++? I will be interested to see if a C# OS actual has limits on how you write programs for it. I think there will actually not be any problems as long as the proper Userland/Kernel space division is made, the fact that they are making it a microkernel tells me that they plan to make it as interoperable as possible with other language environments. All they need is a proper communication system to talk to the kernel and it should be invisible to needs of many developers.







Member since:
2006-02-05
C# is to C as C is to ASM. Go back in time 20 years and you would have heard the same thing as you just said, just replace C with ASM, and UNIX with ITS.