Slashdot Log In
Microsoft's New Language
Posted by
michael
on Thu Jun 22, 2000 12:33 PM
from the C-Spot-run dept.
from the C-Spot-run dept.
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."
This discussion has been archived.
No new comments can be posted.
Microsoft's New Language
|
Log In/Create an Account
| Top
| 601 comments
(Spill at 50!) | Index Only
| Search Discussion
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Re:This acronym is a no-brainer (Score:3)
Why not get the stoners on our side with GANJA? Cuz Ganja Ain't No JAva, mon.
< tofuhead >
Documentation? (Score:3)
I mean, we all know it ain't for geeks until there's an O'Reilly book, right?
Re:Embrace & Extend Again (Score:3)
Cars and programming languages have a very different tradition. AT&T Bell Labs is the creator of two of the most popular programming languages in the world: C and C++. The development of both of these languages is guided by the appropriate ANSI committe. Ditto FORTRAN, ADA and many other languages which are managed through standards. Languages like Python, Perl, Scheme and TCL are not managed through standards, but their reference implimentations are open source, and thus wide open to the community.
That leaves two newcommers as the tidings of an unfortunate trend: Java and Coctothorpe. These languages are strictly managed by their "owners" (as if one can own a language in the first place). This leaves the future somewhat uncertain for those of us who have always assumed that it was obvious to all that open standards are the way you manage a programming language.
It's fairly moot anyhow. The correct response to Coctothorpe is to evaluate it's usefulness and, if it is deemed worthy, write a GCC front-end for it or (if it's interpreted-only like Java) then a run-time implimentation can be written and open sourced. Until our government (which in the case of intellectual property is rapidly becoming the UN) gets stupid and declares languages patentable, we're OK implimenting our own Java and Coctothorpe.
Re:Oooo, garbage collection! (sarcasm) (Score:3)
Actually... (Score:5)
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--, Anyone? (Score:5)
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:
Re:C "pound" (Score:3)
Although I'm sure we had figured that out already.
-- Dr. Eldarion --
Hmm -- good name! (Score:5)
So C# could also be pronounced "C Hash", or simply "Cash".
Methinks it's the same guys who named WinCe...
Java Virtual Machine is not tied solely to Java (Score:5)
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.
Oooo, garbage collection! (sarcasm) (Score:3)
Really, a C++ smart pointer class is a trivial thing to write and gives you all the same advantages. I wrote one in 100 lines a few weeks ago and it works just as well as Java's garbage collection. The article seems to suggest that this is one of C#'s greatest features. Hmm, kinda like W2k having that "symbolic linking" thing.
------
C Sharp..... (Score:4)
Re:M$ sucks fp?? (Score:3)
Wouldn't it be good to wait until the language is actually unveiled before you bash it as "crap"?
You're new here, arent you?
Re:Embrace & Extend Again (Score:4)
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
This acronym is a no-brainer (Score:5)
Re:C "hash" (Score:3)
" C#" rhymes with CRASH!
I see blue already
Re:Embrace & Extend Again (Score:3)
Re:C# != Db (Score:3)
Ooo... so close, but not quite right.
You are more right that the person who is insisting they are not the same on "non-fretted" instruments.
Tonality of notes used to depend on the scale you were playing, and the position of the note within the scale. All notes were perfectly tuned relative to the tonic note, or "root" of the scale. The problem with this was that an organ tuned to play in the key of G-sharp would sound badly out of tune if played in the key of E-flat.
During the baroque era, the concept of the "tempered" instrument came about. Octaves, fourths and fifths became universal across the keyboard, and the seconds, thirds, sixths, and sevenths were all tweaked so you could change keys and still have a perfect fifth sound like a perfect fifth. Tempered keyboards were not perfectly in tune in the traditional sense, but the change was needed to meet the demands of modern compositions.
When the means to measure sound frequencies came about, things were locked down even tighter (which is why "middle A", the second fret on a guitar, is often called "A 440).
Today, C-sharp and D-flat are played with the same key on the piano, same fret on a guitar, and are generally considered to be the same note... However, in the context of a performance a good musician will adjust the pitch of the note ever-so-slightly to fit with the intonation of the ensemble and melody (if they are singing or playing an instrument that allows it).
So to sum up... yea, it is the same note spelled differently - most of the time.
As everyone knows... (Score:5)
hahaha! (Score:4)
awesome! this must mean they're releasing visual studio for solaris, linux, and all the *BSD's!
Thanks, microsoft! You kids are swell!
--
blue
Re:C--, Anyone? (Score:4)
Simon Peyton Jones and other nice people from MS Research release a Haskell compiler called GHC. It is open-source, multiplatform (Wintel, Linux and many more), and uses GCC as a backend. Did the previous sentence surprise you? They designed C-- because C does not serve well as a backend for a functional language like Haskell.
Haskell [haskell.org] is a cool language BTW.
--
*Yawn* (Score:3)
Yet another uninformed anti-Java rant.
Speaking as someone who has written a couple hundred thousand lines of Java code and seen that code work without tweaking, first time, on OS/2 and Macintosh after developing it exclusively on UNIX and testing it on Windows, I have to disagree with this 'almost not cross platform' assertion. Scratch that, I really have to laugh at it.
The trick to cross platform coding with Java is that you have to code to the set of API's that Sun has published and standardized. If you do that, and if you don't fall into a hole that Sun has left in their API's, you're fine. Someone has to define the greatest common denominator of portability, and Sun's been doing a surprisingly good job at that.
I will be very interested to see if Microsoft will even attempt to define a substantial set of runtime API's for the C# runtime or whether they will just provide COM and SOAP and claim that that's good enough while encouraging everyone to use COM-wrapped Win32 to get their work done.
I'm quite looking forward to seeing what Microsoft actually has in this C# and whether they actually have something new and innovative. All the blather about C# not being a response to Java is obvious nonsense, of course.
If Microsoft attempts to duplicate the Java API set with C#, then they will be open to all the same criticisms of platform definition and limited service coverage that Java has been since it was created. If they attempt merely to provide clean access to operating system API's with really decent runtime #ifdef and #include type functionality, so that the same piece of code can conditionally execute sections of code based on the underlying environment, while still sharing the high level logic and providing a Java-like code distribution framework *and* just enough runtime functions like threading and garbage collection, then they might have something which might really swing the pendulum away from Java.
They'd have to standardize it, though, after screaming at Sun for four years about that.
Interesting times ahead.
Another M$ ploy to co-opt an existing technology (Score:3)
"C# is Java by another name," said Steve Mills, general manager of IBM's software division.
If Microsoft can't make their own flavor of Java, and call it Java, then they'll just do the same thing, and call it something else ("C#"). This is a very typical strategy from M$: mirror an existing technology, add enough "features" that it's not compatible, then use their market clout to shove it down everyone's throat.
Re:Embrace & Extend Again (Score:3)
Calling "C#" an embrace and extend play on Java is like calling Java an embrace and extend play on C++. In either case they are simply two competing OO languages with a common base (C-style programming). I actually welcome this. Hopefully Microsoft will make their technology multiplatform (not holding my breath, but..). It would actually be a GOOD thing to have a serious Java competitor out there to light a fire under Sun's collective asses.
Real list of features: (Score:4)
Re:Response to Sun Suit? (Score:4)
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.
Revenge of the Coctothorpe (Score:4)
Dreamweaver
Re:Embrace & Extend Again (Score:3)
And I'm sorry you got modded down by someone who can't differentiate between a legitimate question and a real troll. I'd like to know who moderates comments so that we could moderate the moderators.
Gotta love the quotes... (Score:3)
Good intentions, yep. Sounds about right.
"Microsoft has its own unique programming model with Visual Basic..."
That's putting it mildly.
"Combine it with the Web services (Microsoft) is announcing and you get powerful stuff.
Oh no!
Okay, I'm stopping right here.
Powerful + Easy-to-use => Dangerous
Anything about "Security" has to be marketing. If it's Powerful, and it's Easy-to-use in the Microsoft sense, and on the web... then you're going to be in BIG trouble, Real Soon Now.
---
pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
C pound, C hash, C octothorpe, C number, ... (Score:3)
Any number of names come to mind.
"What is in a name? Arrows by any other name would kill just as swift."
It's all so clear now! (Score:5)
Dreamweaver
Quotes (Score:5)
I did not kill Nicole Brown Simpson
I did not have sexual relations with that woman
This is not a response to Java
Re:Another M$ ploy to co-opt an existing technolog (Score:5)
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.
I used to work for the Borg (Score:3)
- C# is just the latest name. COOL was the original code name, which was later changed to Safe C. They are all the same thing.
- At the time I left, they had no intention of being cross-platform compatible.
- They ARE trying to get a good RAD environment going. It is intended to fill that space between VB and VC++. If you want to crank out a fast GUI (for example), and hate MFC and VB, then this is for you.
- They've moved the WFC stuff from Java over to this new language. WFC is really nice to work with IMO.
- The execution engine (they don't call it a VM) is damn fast. Not native, but pretty good... faster than J++.
When it gets released, give it a try before you knock it. I think most people will be pleasantly surprised.
Re:As everyone knows... (Score:3)
Wow! Where have we seen this before? (Score:4)
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.
COOL (Score:4)
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.)
Wrong name... (Score:3)
--Shoeboy
(former microserf)
FYI: What's next for next major version of Java... (Score:3)
C# != Db? Depends on your tuning (Score:4)
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!