Four Microsoft Programming Languages Compared
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."
A "rich palette of languages"? Let's see, three statically typed object-oriented languages and one dynamically typed object-oriented half language. I seem to remember there being MORE to programming than objects.
But that's just me.
See you, space cowboy...
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.
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!
Non-portable C++,Psuedo Java with all the crap of and the portabiltiy of neither(C#), Wannabe Java(J#), and Beginner's Anal Soviet Interogation Code (VB.NET).
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?
You can't judge a book by the way it wears its hair.
I count two: an odd C++/Java-ish hybrid (spoken with three different accents) and something almost but not completely unlike BASIC.
-- Alastair
Now let me go get my enormous wallet and pay the trillion dollar tab to use them. Or maybe I should pull a Mr. Burns and use my trillion dollar bill?
C# is really good compared to ahhh.....J# which is really good compared to being eaten by a crocodile which is really good compared to Micro$haft C++
Now wash your hands.
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.)
I forget what 8 was for.
To me the most significant feature of .NET is that the languages are more easily de-compiled.
An article.
...
On Slashdot.
From MSDN.
Jesus will come to save our souls before Armageddon or something ?
The .Net framework and development tools are also free, and can be downloaded.
And efforts are being made for making .Net portable. Examples include Microsoft's own Rotor (Windows, FreeBSD and Mac OSX), Mono (Linux) and DotGNU (Linux).
Why isn't there MASM for .NET?? Oh , hold on....
Seriously though , it would be interesting if MS (or Sun for Java) released an assembler for the
intermediate language used in these VMs.
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 indications tell me .NET 1.1 doesn't offer that ability. Then again, AFAIK it's probably a windows API limitation. In this particular area, Java and .NET need more work.
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... usage options
Ah ok , didn't know about that. So why don't they ever advertise it?
they did indirectly through some of the msdn magazine articles as part of tutorials on the emit api and the overview of the VS.NET 2003
too lazy to find them for you. checkout msdn
I had to sit through 3 days of meetings listening to a .NET borg monkey feed his PHB the .NET mantra. Every problem we discussed could be solved by .NET.
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.
"No matter where you go, there you are." -- Buckaroo Banzai
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
Knuth seemed to believe in writing in an interpreted "machine language" (which also had an assembler). He seemed to think his algorithms were more clear if they were expressed in atomistic operations.
C++ - awful language, but at least it has high performance .. no wait this is the .NET version!
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!
They do. Every developer conference I've been to has mentioned it. The documentation mentions it. Articles on MSDN mention it. Why haven't you ever read an introduction to the CLR?
Class library support. Independently developed class libraries designed to provide the functionality of most Java Development Kit (JDK) level 1.1.4 class libraries and many of the classes in the JDK 1.2 java.util package specified in College Board's Advanced Placement curriculum for Computer Science.
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 current release from Sun.
(S+C) x (B+F)/T = V
If by "ported" you mean "a thin layer over .NET semantics", yeah, a lot of languages have that.
.NET, and efficiently so", then the numbers will drop off quite a bit.
.NET, and declined.
If by "ported" you mean "language X's objects are completely visible to
See this thread from comp.lang.lisp on why Franz Inc (the longest-surviving Common Lisp vendor) looked into porting their stuff to
To a Lisp hacker, XML is S-expressions in drag.
I guess that a not-unimportant feature of .NET is that they can decompile and assimilate competitors software if any of it turns useful.
.NET will be the same made with MFC. (hint: none at all)
And the number of commercial software made by microsoft with
We are Turing O-Machines. The Oracle is out there.
i've read some parts of the article written by a Microsoft employee hosted on the Microsoft website.
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.
Hell, Microsoft Press has books on it.
Now, let's do the comparison to what I think of as real programming languages such as ANSI C, C++, Java, and Perl and see how much M$'s languages SUCK.
Exactly. ALL you need to know about
Funny, I can see just one semantic, in four syntaxis flavors.
Something must be wrong with my eyes.
"I think this line is mostly filler"
Haha. Microsoft Programming languages - get it?
Boy, I tell you, the Slashdot editors have quite a sense of humor.
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 say that linux supports .NET we're going to have to have a complete and dependable FCL implementation.
That FCL implemenation will also have to behave very closely to the Microsoft's library for compatibility. I don't think Mono, or DotGNU is going to be able to pull that off and I suspect MS realizes this as well.
My 2cents.
Based on upvotes, Ageism is the only "-ism" Slashdotters care about and think isn't SJW
or atomic?
That article is utterly useless, and shouldn't have been posted
Cons? In a Microsoft product? NEVER!
I want to see a more organized asm language. But rather than call it asm.net or something silly like that, let's just break the words down. ;)
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.
Summary
Programming languages may be used to build a variety of solutions.
That's amazing! Glad he told us!
The Good Life
When .NET was in Beta test, before Visual Studio 2002 was realeased, this was how everyone used it - you used the command line tools & your favorite make utility. Theres tons of tutorials and FAQs and what have you on MSDN and all the .NET sites. It's not in the marketing literature because they're pushing VS .NET and it's RAD features - CIOs don't care about command line assemblers.
I agree that this articles is just a bunch of M$ advertising, but I gotta say that VB.Net does have some decent things going for it.
* Simplicity
Code is almost self documenting
* Quick-To-Production
A single coder can build a modestly complex application quickly and satisfy the BURNING needs of users quickly.
As a corporate developer for a mid-sized company, I have to point-out ROI's look a lot nicer for projects when there are less man hours involved. There is a much better chance of an app written in 3 months using VB.Net being more valuable than an equivalent application written in 4 or 5 months using a more coder-based language such as C++.
The less time invested in a project, the better.
Basically, .NET tells you, "You can have any language you want, so long as it looks and acts like C#."
.NET.
.NET language so it's easy to get into grey areas. It's not worth it.
.NET really isn't about choice of language since all the most prominent languages are basically the same. .NET is about converting all VB and C++ programmer to become C# programmers.
I know several VB programmers, and trust me, VB.NET is *nothing* like VB. It's about as easy to learn VB.NET as C#, so they aren't bothering with VB.NET and moving on to the higher paying C# jobs.
> I have used VC++, but I don't know if I want to
> touch VC++
Me neither. VC++ wasn't that bad but Managed C++ is a real bear to use. It's neither true C++ nor a true
J# is a joke that has never really been accepted.
So that leaves C#. C# isn't a bad language. It's not significantly different than Java, but then again, neither is Python and Ruby which pretty much target the same user base. C# is definitely an improvement over C++.
So
No FoxPro, no Fortran?
"The meek shall inherit the earth, the rest of us shall go to the stars." Isaac Asimov
As for VB# vs VB, I have only done "toy" programs in each and find each equally bizarre, only VB# seems to me less bizarre because it lacks the half-an-OO language restrictions of straight VB.
Perhaps a good analogy is Borland's Delphi and C++ Builder. They both share the same class library and GUI framework underneath, which is written in Object Pascal. The automatically-generated C++ code is a kind of line-by-line translation of Object Pascal. Not only that, C++ Builder can mix source code modules written in C++ or in Object Pascal.
C++, C, and Java, with Microsoft goodness. Okay, so we have three old languages with funky APIs and what have you. Nothing to see here.
VB. Now this is actually interesting. Slashdrones can whine all they want, but VB is actually a good thing.
Some hoser needs something done in Windows that's ridiculously simple and could be written with a line of shell on any real operating system? Well, what do you do? Can't write a batch file or anything crazy like that, no, Mr. Hoser wants flashy GUI and buttons that make noise when they're pressed!
The solution? VB. It lets you get rid of Mr. Hoser as quickly as possible, so you can get back to programming in a real language.
There's already a skin for Java on the CLR. It's called C#. The biggest headache moving from Java to C# or vice versa is the library, although for all intents and purposes they overlap almost everywhere. Take my opinion with a grain of salt, but I'm the network engineer at my company and I can code better C# based on my Java experience than most of our developers who have taken "classes" in C#.
I think I'll AC on this one...
reading your responses, I don't beleive that no one has mentioned the portability issue and locking developers to code for bloody Windows. I did it for 15 years and now I'm sick of it, because I'm stock.
The problem with VB.NET is that is has keywords like "NonInheritable"..
..."Foul Microsoft Programming Languages Compared" in the title?
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 knowing that radical new techniques such as this are still being developed. Perhaps in time, they will even become popular in more mainstream languages like C or Java.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.