Four Microsoft Programming Languages Compared 112
prostoalex writes "Prashant Sridharan, senior product manager for Microsoft's Visual Studio product, compares four Microsoft languages for .NET development. C++ (.NET version), C#, J# and VB.NET are explored with features of each language outlined. There are no usual "pro and con" lists, so the ever-popular "default public access" made into the "features
of VB."
Diversity (Score:5, Insightful)
But that's just me.
Re:Diversity (Score:1)
Re:Diversity (Score:2, Funny)
This code proves it!
Saden1 s = new Saden1();
World myWorld = World();
s.setWorld(myWorld);
Re:Diversity (Score:4, Insightful)
Sure there is...in academia.
In the corporate world, people use languages with a track record of being able to meet the balance between performance and the ability to meet deadlines. Enter the M$ product line.
Re:Diversity (Score:4, Insightful)
But academics and R&D departments are where the new ideas come from. We already have several OO languages, each of which changes everything and yet somehow stays the same. None of these is really a radical departure from status quo, none of them is going to make a dramatic improvement to productivity.
What we need today are genuine new ideas finding their way into the industry, so that the ones that work in practice can establish themselves and the ones that only work in theory can be set aside. We don't need C#JavaInteropVB++.NET.
VB.NET has no track record. It's nothing like old VB, as any VB6 developer suffering the pain of moving can tell you.
C# has no track record, except for its uncanny resemblance to Java.
C++ with managed extensions has no track record, aside from the C++ part.
Visual J#? After the "track record" of Visual J++, I'd be amazed if anyone serious goes near it.
If you want to talk about track records in a commercial setting, let's talk about C, C++, Perl, Java and VB6. The new Microsoft languages and the .NET architecture beneath them aren't even on the scale.
Inspired... (Score:2)
Thanks for the tip. I had a read of both articles, and noticed this inspired piece of refinement in the conclusion of Damian's column:
I'm sure we'll all rest easier knowin
Re:Diversity (Score:4, Informative)
The
Re:Diversity (Score:5, Insightful)
The .NET Framework excels at interoperability
My gut feeling is that .net should be applauded for what it is: a comprehesnive (finally!) win32 class library with compilers that work "pretty much the same" for each supported language. This was, no doubt, no trivial accomplishment, but "interoperability" is a far, far cry from what .net really provides.
* - True enough, there is good support for wsdl, and web services in general, but this should be not be rocket science for any platform.
Re:Diversity (Score:5, Insightful)
I'm starting to notice the only non-trolls who complain about .NET being hard to use are the die-hard C++ guys who refuse to simply use the tools that are being given to them. I am reminded of the situation about 15 years ago when I used to scoff that nobody could do any serious programming without resorting to assembly, but these days most of the C++ guys I work with don't know the first thing about assembly...
Re:Diversity (Score:1)
Now, if you are passing large data sets, then, you are most likely passing by reference. Now, your solutions break down. Interop does not handle refernce passing at all. You then have to do all of the dirty work. I had to do just that because I was using a web service to provide a COM server to the world.
Re:Diversity (Score:2)
Re:Diversity (Score:5, Informative)
It depends on the meaning of "ported"... (Score:3, Informative)
If by "ported" you mean "language X's objects are completely visible to
See this thread [google.com] from comp.lang.lisp on why Franz Inc (the longest-surviving Common Lisp vendor) looked into porting their stuff to
Re:Diversity (Score:3, Interesting)
Re:Diversity (Score:1)
'Nuff Said !
Re:Diversity (Score:1)
-m
Re:Diversity (Score:1)
Re:Diversity (Score:1)
Why is this worth anybody's attention? (Score:5, Insightful)
Which is pretty normal for any technology company. So Microsoft bashing is, for once, inappropriate. What's stupid is that anybody would think that Slashdotters would be interested in it. Even if we were all rabid .net fans, this kind of thing would have no interest for us.
Re:Why is this worth anybody's attention? (Score:3, Interesting)
In fact, I'm somewhat disappointed at the severe *lack* of articles such as this one for the developers section. Developers section
Re:Why is this worth anybody's attention? (Score:2)
.NET languages (Score:5, Interesting)
Visual Basic is Microsoft's flagship project for Windows application software development while Visual C++ has been a poor stepchild. Windows has two major features that are hard to do cleanly without some kind of support hard wired into the computer language. One is the one-size fits all WndProc() interface to the Windows API with its zillion messages. The other is the different-shoe-for-every-foot of the zillions of interfaces that make up COM along with the support for QueryInterface to interrogate objects for supported interfaces at run time.
VB has message dispatch and COM support built in as language extensions to Basic. C++ is not supposed to need language extensions because of macros, classes and templates, and Microsoft uses a mishmosh of macros, classes, and templates to support message dispatch (the infamous message map macros) and COM with QueryInterface(). We can have flame wars about languages all we want, but I think that Windows support in VB is pretty transparent because they adapted the language while the Windows support in VC++ is pretty clunky because they have stuck to C++ without extensions, and there may be a cleaner way to use C++ to support message dispatch and QueryInterface(), but Microsoft has not figured it out but come up with a hodge podge (actually several hodge podges: MFC, ATL, and perhaps something else).
Also, VB is truly visual with the Form Designer while I could never figure out how VC++ is visual -- you need to create Windows forms as dialog resources that you have to wizard your way into code somehow. In the Microsoft world, VB is the solution they offer for the cook who wants to develop a recipe program, for the race car team that wants to develop and engine analyser program, for the accountant who wants to develop a financial program. VC++ is the solution they offer for the hard-core programmer who wants to squeeze out efficiency that you can never get in VB, but is willing and able to put in the extra time required for a program that perhaps will have a large shrink-wrap market. VC++ is not meant for the rapid development of the application-specific one-of program.
While Visual Basic is Microsoft's favored child for application software development, its syntax is not modern (i.e. C-like: I am a Pascal person myself, but I admit that C-style syntax has won out), its object model is restricted (lacks class inheritance), and it is slow. A VB program is actually pretty responsive to loading (a dig at Java) and to menu clicks, but it can bog down big time if you have heavy numeric stuff.
To understand where .NET came from, you need to look at Visual J++, a product they developed by hiring Anders "Delphi" Hejlsberg away from Borland. Visual J++ had a C-style syntax (it was Java), but in terms of drag-and-drop form layout, WndProc() handling, and COM/QueryInterface() support, it was everything Visual Basic was and Visual C++ wasn't. It wasn't up to VC++ execution speed, but it was much faster than VB, and it was one of the fasted-executing Java's out there.
J++ was also a marketing failure and the focus of the infamous SUN/Microsoft Java lawsuit. It wasn't proper Java, so it didn't get any Java people to cross over, and it wasn't of interest to the great unwashed masses of VB programmers either. The lawsuit and associated bad publicity about J++ didn't help either.
Microsoft is not one to give up, and .NET is really J++ Version 2.0. Part of .NET and C# is Microsoft taking their football and going home over the Java lawsuit, part is trying a second time with J++. If you have tried Visual C# .NET, you really need to install a copy of Visual J++ 6.0, play with it, and experience the powerful sense of deja vu.
Lets face it, the .NET langu
Re:Any car you want, so long as it's a shade of bl (Score:2)
A
J#? (Score:1, Informative)
I think I'll AC on this one...
J# (Score:2, Insightful)
JDK 1.1.4 is at least 5 years old. How do they expect anybody to port their Java app to Microsoft J# if their Java is 3 versions behind? A lot has happened to Java inbetween their supposrted version and the
This is like ... Gulags Compared! (Score:5, Funny)
Probably the guy that does that shouldn't use their follow up article in choosing a nice place to live:
Compare and contrast Soviet Gulags!
Re:This is like ... Gulags Compared! (Score:4, Funny)
Re:This is like ... Gulags Compared! (Score:2)
Re:This is like ... Gulags Compared! (Score:3, Funny)
Re:This is like ... Gulags Compared! (Score:1)
oops... oh well, flame on
Wanna be a PIMP? [pornstarguru.com]
"languages"? (Score:5, Insightful)
Thank goodness I'm in Linux with gcc, gcj, and Java. All of which are free, and all of which are portable. I don't have to pay Microsoft, I can keep my code compatible, and I can compile to hundreds of platforms. When was the last time Visual anything supported compiling to the TI-89, Mac OS X, and Solaris platforms from a single codebase on a single computer?
.Net is also free and (a little) portable (Score:3, Informative)
Re:.Net is also free and (a little) portable (Score:1, Troll)
It's FCL that's the problem. (Score:3, Insightful)
Language is nothing. The dependabilty and completeness of the libraries is really what's important.
These projects may one day produces a sturdy C# compiler or CIL interpreter. But how complete will their libraries be?
The Microsoft FCL library is huge. Before we can s
Re:It's FCL that's the problem. (Score:2)
I suspect MS is relying on this. While the appearance of work to make .NET cross platform is important to MS's marketing, a real working Linux .NET implementation would be MS's worst nightmare.
Re:It's FCL that's the problem. (Score:2)
The Windows.Forms bit will be tricky to handle even with the help of Wine, since there are a lot of assumptions in there very specific to Windows.
I suspect what is more likely is that developers will make the guts of their software in some kind of library using the more general parts of the class library and language features and then bolt on a different UI for different systems. This has the advantage that the UI will better follow the "local" UI style, plus it means that the functionality of the program
Four? (Score:5, Funny)
Re:Great (Score:2)
Compared to what? (Score:3, Funny)
Crap, that's the best marketspeak in a while (Score:4, Interesting)
But damn, they don't care at all about the most important languages they compete with, sh and perl. All the admin languages they've tried really quite blow. I fix problems every day with sh, and as far as I can tell, That Creepy Virus Vector is the response. That's not competition, that's pathetic. And I build applications in perl (and sometimes other languages) that pull people away from MS. I'm done ranting, back to coding for me (mostly perl, sometimes Java when I have to, C when it is useful, and various pgplsql/plsql/etc. DB languages when it makes sense.)
Re:Crap, that's the best marketspeak in a while (Score:2)
That's what happens when you design the system around a GUI rather than a command line. It's a lot easier to put a GUI on top of a command line base than the other way around.
On the other hand, Apple's scripting language for MacOS wasn't bad. Guess it's just a Microsoft thing.
Re:Crap, that's the best marketspeak in a while (Score:3, Informative)
Hell, now you can control the GUI itself [apple.com] with applescript! *note* I do not use AS so I can not comment on how well it works, I'll keep my perl thanks
Re:Crap, that's the best marketspeak in a while (Score:1)
As for Applescript, I've only glanced at it, but what I saw looked hideously like a dialect of COBOL. (Yes, I'm prejudiced.)
Re:Crap, that's the best marketspeak in a while (Score:2)
Applescript may be verbose, but the point is that it gives you access to everything, as any decent systems scripting language should. The closest thing Windows has to an equivalent scripting language would be Dismal, er, Visual Basic.
Re:Crap, that's the best marketspeak in a while (Score:1)
Re:Crap, that's the best marketspeak in a while (Score:2)
OTOH, I really like Perl's permissive notion of objects. We've built a niftly little framework and our own database libs that self configure against a database and let us crank out ungodly amounts of functionality quickly.
But of course, didn't you know that every time you use emacs, God kills a kitten?... Vim is the path to en
Major .NET feature: (Score:5, Funny)
MS thinks the same (Score:1)
And the number of commercial software made by microsoft with
Does Microsoft know something you don't? (Score:2)
Exactly. ALL you need to know about
Re:Does Microsoft know something you don't? (Score:1)
Neither Sun uses Java for internal projects.
I don't know why, actually.
Re:Does Microsoft know something you don't? (Score:1)
Re:Major .NET feature: (Score:1)
MASM? (Score:2)
Seriously though , it would be interesting if MS (or Sun for Java) released an assembler for the
intermediate language used in these VMs.
Re: (Score:2)
Re:MASM? (Score:2)
in assembler in the first place
Donald Knuth (Score:2)
Re:MASM? ILASM.... (Score:3, Informative)
ILAsm comes with the .net framework along with csc (C#), vbc (VB.Net), jsc (J#). That's what you're asking for, right?
C:\WINNT\Microsoft.NET\Framework\v1.1.4322>ilasm
Microsoft (R) .NET Framework IL Assembler. Version 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.
Usage: ilasm [Options] <sourcefile> [Options]
blah blah...
Re:MASM? ILASM.... (Score:2)
Re:MASM? ILASM.... (Score:1)
too lazy to find them for you. checkout msdn [microsoft.com]
Re:MASM? ILASM.... (Score:2)
Re:MASM? (Score:2)
Coding Java in assembly isn't very interesting. Calling functions is a bitch, and since it's just a simple stack machine, you aren't going to get any better performance than you would by using a compiler unless your compiler really blows.
Re:MASM? (Score:2)
why was this even posted? (Score:1)
On another side, anyone happen to know if .NET 1.1 supports CPU affinity, ie, set a process to a specific CPU? I've been searching and googling for answers and haven't found any. SQL 64 apparently has the option, but that is SQL Server. I'm hoping someone knowledgable knows the answer to this, since all indi
Re:why was this even posted? (Score:2)
Re:why was this even posted? (Score:2)
There might be a way (theoretically, not that it is implemented) to have threads for a certain app go to a certain CPU, but what if that CPU is already loaded up etc. Also, handling multiple requests could be a bitch if that CPU is tied up by a bad thread.
.NET Borg Monkeys (Score:5, Insightful)
It got really bad when we were debating whether to go with a Web interface or a traditional windows interface. Monkey-boy says, "No problem. The windows forms can be cut and pasted to ASP forms. It will _only_ take us 3 months to convert the GUI." ONLY 3 months! I told my boss later that I could write the GUI from SCRATCH in JSP in 3 months! My blood pressure is rising just typing this. It took all my energy to stop myself from strangling the guy.
This isn't an article. It's a marketing page.
Re:.NET Borg Monkeys (Score:1)
Re:.NET Borg Monkeys (Score:1)
quick summary (Score:4, Funny)
J# - like Java, only different!
VB.NET - Aw, isn't it cute! It's Microsoft My First Language! With real working arrays and everything!
C# - Like Java, only different!
My recommendation? Use C#, it's at least standardized and when you use it on Mono it will be the same. Of course the Mono runtime will have to be removed for the inevitable patent lawsuit, but the C# compiler will still be there for you!
Thanks microsoft, for your rich palette of non-standard languages!
Re:quick summary (Score:1, Insightful)
From MS for MS (Score:1)
My point of view?
This is MS trying to "sell" their products again
"look it can do this, it can do that"
"fast" ?
i don't know if we can trust their objectivity.
At least, i don't.
Compare them to REAL languages (Score:1)
Re:Compare them to REAL languages (Score:2, Informative)
<SideNote>Grow up -- M$ is like so 90's... dude.</SideNote>
Re:Compare them to REAL languages (Score:1)
C# is not a real language because C# does not exist. It is a myth put about by people such as yourself who wish to tempt programmers from the True Path of GNU. There is no such language as VB.NET, either. If you claim to use them you are obviously lying.
Next you'll be trying to tell us that Idaho exists, which is another dangerous lie [fantasymaps.com].
Re:Compare them to REAL languages (Score:1)
How many do you see? (Score:3, Insightful)
Something must be wrong with my eyes.
Funny (Score:1)
Boy, I tell you, the Slashdot editors have quite a sense of humor.
Spot on. (Score:1)
Cons? In a Microsoft product? NEVER!
New Assembley language (Score:1, Troll)
It's ORGanized ASM, so we can call it ORGASM.
I bet we get a LOT of college students who want to try it out.
Re:New Assembley language (Score:1)
Mixed DLL Loading Problem (Score:1)
The problem exists in versions 1.0 and 1.1 of the .NET runtime (1.1 being t
wow major insight! (Score:1)
Programming languages may be used to build a variety of solutions.
That's amazing! Glad he told us!
Re:Standing Up for VB.Net (Score:2)
You forgot the most important part: