Microsoft's New Language
We've been buried in submissions about Microsoft's new programming language. Here's one of them. Brohamm writes: "Microsoft has created a new language called c# (pronounced C-Sharp). It's supposed to look like C but has the same concepts as Java. Looks like they gave those J++ developers something to do. Check it out at CNet."
When they say C# is language-independent, they're actually talking about the underlying object model, libraries, and runtime platform. It shares the same runtime platform as VB (called the "URT"), and there's no reason any language in general couldn't be made to compile to the URT. In case you haven't heard, Microsoft is also completely revamping the VB language. C# and VB will be almost identical in terms of power and what you can do with them. It seems to me that C# is more or less just an alternative for the people - including most developers at MS - who simply don't like using VB, and, as has already been pointed out, a response to Java. Even the developers at Microsoft admit (amongst themselves) that C# and Java are practically identical languages on the surface. But really, it's more or less equivalent to the new VB, it just uses a C-like syntax.
They also are producing something called "managed C++", which is mostly a bunch of hacks to the C++ language to allow programs to compile and run on the URT. They are pretty much betting the company on this new platform. The language independence comes from the fact that all managed code (anything that runs on the runtime) uses the same object model and can share libraries. WFC has been implemented on the URT (written in C#), and it also has a bunch of system libraries which are all pretty well designed. The reason they say it's cross-platform is because everything is compiled to run on the URT, not natively. In theory, the URT can be ported to other platforms, and immediately any app that runs on it will run on those platforms. In the future, pretty much EVERY Windows app will run on the URT, so this is a good thing. The libraries for it are very rich, so there's no reason an application would need to use any Windows API calls or the like. The only real problem, of course, is that the URT will still be proprietary and controlled by Microsoft. However, it's not the mess that COM was (despite the fact the it was originally called COM+ 2.0), and may be easier to reverse engineer. The fact that it abstracts away pretty much anything that's Windows-specific (no more registry, among other things) certainly is a good step towards portability.
In my opinion, the platform Microsoft is working on now is by far the best progress they have made in a long time, and it's long overdue. They've realized that the current Windows development model is broken, and has no future, especially as the Internet takes over. Instead of trying to continually extend what they've done before, they're pretty much completely abandoning the existing infrastructure. They are throwing backwards compatibility out the window, which is what they needed to do a long time ago. Unfortunately, due to the DOJ stuff, I wouldn't be surprised if the public never even sees the fruits of these efforts. I've never liked Microsoft's software or many of the things they've done, but this is something they've got right. I really dislike what they're intending to use it for, which is to offer software as a service over the Internet, but as a development platform, the URT is exactly what the world needs right now. Of all their major undertakings - and this is one of the biggest - it's probably the first which is truly well-designed with the potential to last for a long time.
A lot of this progress on the URT, C#, WFC, and such can probably be attributed to Anders Hejlsberg, the mind behind Borland's Turbo Pascal and Delphi who moved to Microsoft a few years ago to be the WFC architect.
C-- is intended, as the article suggests, as a "portable assembly language."
There actually are some implementations available in source form.Microsoft may produce some software of frightening quality, but that doesn't mean that the people that they hire are ignoramuses, but merely that:
If you're not part of the solution, you're part of the precipitate.
So C# could also be pronounced "C Hash", or simply "Cash".
Methinks it's the same guys who named WinCe...
Recursive: Adj. See Recursive.
The JVM was created to support the Java language, but there's no reason that you must use Java to write for the JVM.
In fact, many other languages have been written, compilers to target the JVM bytecode format. Also, the JNI (Java Native Interface) grew out of Netscape's support for C APIs to call into, and be called by, JVM bytecode.
I wonder if Csharp/Dflat/Chash/Cpound/Coctothorpe might be targeting Microsoft's JVM implementation, which has gotten good grades on speed, or if it really is a whole new virtual machine.
Microsoft doesn't appear to be claiming that the new language is free from entanglements with the operating system. In fact, if their "C#VM" were to make it easy to use COM/VBA automation, and to use native C# programs as clients and as services, it could be a win for them.
I think they're missing the mark, though. Sun's reluctance to allow their JVM to be managed by an outside standards group, and Microsoft's reluctance to follow outside de facto standards, both played to this announcement.
[
Hey someone already has the trademark on C Sharp. Just ask Al Stevens of Dr. Dobb's Journal.
Right, it's apparent from the article that this language (which I have chosen to call C-Pound ;) is an attempt to "Embrace & Extend" C++. Which, really isn't necessary, but hey, we have to cut them some slack -- dirty tricks are the only games Microsoft knows how to play.
Er... what?
Stroustrup has approved the language by the way. Just thought you'd like to know.
You might find out why if you compare C# to some of Stroustrup's bitch list in "The Design and Evolution of C++"
Simon
Coming soon - pyrogyra
Are you kidding me? NINJA!! Ninja Is not JAva
It's rare that you're presented with a knob whose only two positions are Make History and Flee Your Glorious Destiny.
C sharp is the enharmonic equivalent of D flat. Which is probably what I'll end up calling this language.
"Beware he who would deny you access to information, for in his heart he deems himself your master."
they have a quote on c|net where an M$ executive claims OS independance for C#.. later, he goes on to say that it's part of visual studio.. so.. hmm..
awesome! this must mean they're releasing visual studio for solaris, linux, and all the *BSD's!
Thanks, microsoft! You kids are swell!
--
blue
i browse at -1 because they're funnier than you are.
-o Disclaimer: My employer doesn't even agree with me about C indentation style. o-
MS Java's incompatibilities weren't mistakes at all. They were part of the normal embrace, extend, extinguish strategy that they rely on. The only flaw in their plan was that Sun stopped MS before they could completely extend Java. At this point it's probably easier for MS to invent a new language than to find more ways to tear down Java.
Your right to not believe: Americans United for Separation of Church and
Not just touchtone phones, Octothorpe is the correct name for the # symbol.. though i'm betting the MS marketing department didn't know that, because Coctothorpe sounds like a really awful porn adaptation of a B-grade horror movie.
Dreamweaver
"If a man hasn't discovered something he will die for, he isn't fit to live" -- MLK, Jr.
Of course MS releases a new programming language.. they've probably had it in a red, glass-fronted box in the legal department for years marked with a "Break glass in case of anti-trust" sign. Now when they're forced to release the windows source code, they'll just release it in 'C sharp' which nobody knows and is just close enough to C and java to really screw up the people who Do know them.
Dreamweaver
"If a man hasn't discovered something he will die for, he isn't fit to live" -- MLK, Jr.
I am not a crook
I did not kill Nicole Brown Simpson
I did not have sexual relations with that woman
This is not a response to Java
It's 10 PM. Do you know if you're un-American?
RMS had some interesting thoughts on this --
Either the Open Source community rewrites Java (calling it by a different name, of course, to avoid trademark problems - [Something] Is Not Java) and then everyone has an open standard to write to; or, every large commercial concern rewrites Java, and then instead of one proprietary language, we have three or four.
Microsoft has been public about their C# ('COOL') plans for a long time. After a recent standards battle, IBM is grumbling about creating their own Java too. Venture capitalists are probably circling around a few Java-clone startups as we speak.
So, if we break this down further than Sun/Java = Good and MS/C# = Evil, you'll realize that Microsoft isn't really doing anything more than what other vendors will do eventually.
When I hear the word 'innovation', I reach for my pistol.
Let's see. We have a new product from Microsoft that:
It's the whole Microsoft strategy in a bottle again. I guess that their attempts to embrace and extend Java aren't working, so now their offering their Windows-only clone instead.
There's no point in questioning authority if you aren't going to listen to the answers.
I had heard they were coming out with a C++ based language called "COOL". It sounded very similar to this newer speculation about "C#".
There are a couple of problems with Microsoft coming out with a cross-platform language and expecting everyone to use it instead of it's competitors (C,C++, and Java are all reasonably well supported across most platforms.)
1. Microsoft isn't well known for good cross-platform support. Their new SOAP XML standards are a good start. However, the technologies VB, COM, and MFC extentions were quite well rememberred as terribly non-cross platform, even though they claimed COM was (and claimed NT was POSIX compliant).
2. There is a good deal of heavily entrenched and saturated languages like Java and TCL already poised to defend their positions.
3. Microsoft is more weak than ever in claiming "This is the future." Their future is quite uncertain now, even if they fix a deal with the Justice Department.
-Ben
(P.S. This sounds like a computer language made for people who played flue and programmed C before, and now want to try object modelling their computer synthesiser.)
That's right, because fretless string players don't play exactly in equal temperament. In equal tempered tuning, which almost all Western instruments are in, C sharp is the same tone as d flat. In just intonation, however, they are subtly different.
Quick primer on tunings, because it's not common knowledge (it is pretty offtopic, but germane to this thread): our old pal Pythagoras discovered that pitch is directly related to the length of the vibrating body (a string, an air column, etc.), and that the simplest ratios of the lengths of two strings are consonant. The most consonant ratio is 2:1 (an octave), followed by 3:2 (a perfect fifth), etc.
To get a scale, start at any pitch and find the next note one perfect fifth up, then the next, and so on until you reach an octave equivalent of your first note, which is your key. Find the octave equivalents of all of those notes and and you've got your scale. This is called just intonation. The only problem is that you're stuck in one key on that instrument, because the octave equivalent isn't exactly an octave equivalent.
To get around this, various methods have been created. The one that caught on was equal temperament (although well temperament was popular in the baroque era--hence the title of "The Well-Tempered Clavier"), in which the intervals between consecutive pitches are equalized, and certain close pitches are made equal (E# F, C# Db, etc.). In essence, every note in an equal tempered scale is a wrong note! They're just close enough that it's not particularly jarring.
---
Zardoz has spoken!
Oper on the Nightstar