Slashdot Mirror


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."

112 comments

  1. Diversity by rmull · · Score: 4, Insightful

    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...
    1. Re:Diversity by 2TecTom · · Score: 1

      Nice, much better FP than my last time. As for objects, what else is there at that level of the paradigm. If code is not part of one, it should be part of another, no? Strictly on the same level, of course? Of course, I Ain't Much Of A Programmer.

      --
      Words to men, as air to birds.
    2. Re:Diversity by Anonymous Coward · · Score: 4, Insightful

      I seem to remember there being MORE to programming than objects.

      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.

    3. Re:Diversity by Chester+K · · Score: 3, Informative

      I seem to remember there being MORE to programming than objects.

      The .NET Framework excels at interoperability, and the key to that is their OOP system; so obviously that's what they're going to point out as the killer feature. In my opinion, you're wasting your time with .NET if you're not going to take advantage of the platform to its fullest; but there's nothing stopping you from putting your procedural code into a thin object wrapper; and Microsoft Research has put together a few reference implementations of some functional languages -- but those are "fringe" languages, so they don't get top billing.

      --

      NO CARRIER
    4. Re:Diversity by farnsworth · · Score: 4, Insightful
      "Informative"? oh, please. All .net is is an i18n'ed compiler with an extensive class library. Don't get me wrong, I used it for some time writing a tcp server app, and it's pretty cool and all, but it doesn't matter what language you use, it takes serious training to use the platform to any degree of real usefulness outside of the simplest, example-style apps.

      The .NET Framework excels at interoperability

      ... with itself only*. Have you ever tried to get nmake and make to coexist? It's a nightmare. Generate .net wrappers to export standard c++ code to a c# app? 'Easy' doesn't come to mind.

      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.

      --

      There aint no pancake so thin it doesn't have two sides.

    5. Re:Diversity by saden1 · · Score: 1, Funny

      The whole world is an object and it belongs to me! Me and me alone.

      This code proves it!

      Saden1 s = new Saden1();
      World myWorld = World();
      s.setWorld(myWorld);

      --

      -----
      One is born into aristocracy, but mediocrity can only be achieved through hard work.
    6. Re:Diversity by bigsteve@dstc · · Score: 4, Informative

      That is a bit unfair. While the author only deals with languages shipped by Microsoft, a number of others have been ported to the .Net platform. See here for a list.

    7. Re:Diversity by zero_offset · · Score: 4, Insightful
      You have an interesting definition of interoperability. The correct way to export standard C++ code to a C# app would be to expose the C++ code through an existing mechanism -- not munge together .NET-specific wrappers of some kind. Hell, make them a DLL and Visual Studio will do all the hard work for you. Expose them through CORBA and buy one of the off-the-shelf .NET CORBA interop packages. Expose them through COM and Visual Studio will do most of the hard work for you on both ends of the project.

      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...

      --

      Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

    8. Re:Diversity by deKernel · · Score: 1

      You are telling only half of the story here. All of your 'solutions' are correct depending on the type of data. If you are passing the data via the stack, yes, you are correct.
      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.

    9. Re:Diversity by smallpaul · · Score: 2, Interesting

      Which of these languages do you think is dynamically typed? VB has become more and more statically typed with every generation and Microsoft's answer to any problem with it (especially the problem of porting VB code to VB.NET) is "add type declarations".

    10. Re:Diversity by MrData · · Score: 1

      MicroSoft now gives you 4 flavors of crap to choose from instead of just one.

      'Nuff Said !

    11. Re:Diversity by lacrymology.com · · Score: 1

      Well, there's always F# which was not mentioned in this 'review'. This is the red-headed functional stepchild of the .NET family.

      -m

      --

      #
      # Modus Ponens
      #
    12. Re:Diversity by Kirruth · · Score: 1
      Sadly, it looks like F# was a research project: a proof-of-concept port of ML (OCaml) to .Net. Alas, functional programming is still waiting for its Larry Wall.

      --
      "Well, put a stake in my heart and drag me into sunlight."
    13. Re:Diversity by aled · · Score: 1

      Nop.

      --

      "I think this line is mostly filler"
    14. Re:Diversity by Anonymous+Brave+Guy · · Score: 3, Insightful
      Sure there is [more to programming than objects]...in academia.

      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.

      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.

      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.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    15. Re:Diversity by arkanes · · Score: 1

      If you're passing large data sets, then you're probably passing a POINTER. Interop handles pointers just fine.

    16. Re:Diversity by Anonymous Coward · · Score: 0

      u want genue new ideas perfectly glued together ? Perl6 is coming go read Lary Wall - Apocalypses on perl.com. Then u feel your head will blow up...ok go read Damian Conway - Exgesises...also "And now something completely the same" (cant remember exact name)

      uffff now u find u have nothing to worry, all your skills work tommorow too....

  2. Why is this worth anybody's attention? by fm6 · · Score: 5, Insightful
    This "comparison" is just your basic dog and pony show. Its purpose isn't to help you compare languages. They just want to fill your head with the "there's a .net language for everybody" party line.

    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.

    1. Re:Why is this worth anybody's attention? by Randolpho · · Score: 2, Interesting

      I'm a slashdotter, and I find the article quite interesting. As a programmer, it helps to keep abreast of *all* options out there, politics/personal opinions aside. Yes, you're right, the article is there to expound the benefits of .NET, but is that a bad thing? No, it's a valid platform for the development and deployment of software, and that's news to slashdot developers.

      In fact, I'm somewhat disappointed at the severe *lack* of articles such as this one for the developers section. Developers section articles, indeed articles on programming and languages in general, are unfortunately rare on slashdot anymore.

      Personally, I'd like to see more exposure of newer languages, like D, on slashdot.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    2. Re:Why is this worth anybody's attention? by fm6 · · Score: 1

      But this doesn't expose new languages. All of these have been around for a while, even C#.

    3. Re:Why is this worth anybody's attention? by Anonymous Coward · · Score: 0

      "Yes, you're right, the article is there to expound the benefits of .NET, but is that a bad thing?"

      No, but a Microsoft ad in Dr. Dobbs is there to do the same thing. It'd be pretty stupid if someone submitted that to Slashdot.

      "Hey! Check out this article in the latest Dr. Dobbs. It's all about the benefits of .Net. It's pretty short though. It's only two pages, and it's mostly pictures and large-font text. Sorry, I don't have a link."

      And submitting this marketing piece is kinda stupid too. The thing is essentially just a brochure.

      Is there anyone reading Slashdot who didn't know you could read .Net brochures at microsoft's site?

      It'd be different if there were something new there, but that seems not to be the case.

  3. This is like ... Gulags Compared! by ArmorFiend · · Score: 4, Funny
    I can just see some highschool newb coming across this article and choosing which language to learn based on it. Poor soul, so locked in for the rest of his life...

    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!
    1. Western Siberia!
    2. Cuba!
    3. Wherever in China!
    4. Eastern Siberia!

    1. Re:This is like ... Gulags Compared! by borkus · · Score: 4, Funny
      That's easy-
      • Eastern Siberia if you enjoy winter sports.
      • Cuba if you enjoy summer sports.
      • China if you enjoy meeting new people.
      • Western Siberia to stay close to friends and family
      Isn't it great to have a choice?
    2. Re:This is like ... Gulags Compared! by smallpaul · · Score: 1

      Offtopic: was Cuba a Gulag? Why would the Soviet Union pay to fly dissidents to a tropical eco-paradise: even one run by a dictatorial maniac?

    3. Re:This is like ... Gulags Compared! by ArmorFiend · · Score: 2, Funny

      Well, I was more assuming that Cuba imprisoned its own dissidents within its own borders. But the great part about trolling is ... you don't have to worry with all that pesky "research".

    4. Re:This is like ... Gulags Compared! by Anonymous Coward · · Score: 0

      In Soviet Russia, Gulags compare YOU.

    5. Re:This is like ... Gulags Compared! by MoP030 · · Score: 1

      I think he means the US enclave Guantanamo Bay, where all those evil turbans are being held under human-right-defying conditions.
      oops... oh well, flame on

      Wanna be a PIMP?

      --
      the most sexp i get is my paren-mode.
  4. "languages"? by SHEENmaster · · Score: 5, Insightful

    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.
  5. Four? by AJWM · · Score: 4, Funny

    I count two: an odd C++/Java-ish hybrid (spoken with three different accents) and something almost but not completely unlike BASIC.

    --
    -- Alastair
    1. Re:Four? by Anonymous Coward · · Score: 0

      VB.NET is really just C# with the syntax of BASIC, so the only thing stopping it being only one is syntax preference. I don't think I'd be far off saying that most people will prefer braces syntax over "Blah ... End Blah".

  6. Great by corkhead0 · · Score: 0, Troll

    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?

    1. Re:Great by zero_offset · · Score: 1

      You can download the .NET framework for free. This includes a command-line compiler. Sure it isn't the Visual Studio IDE, but it does work. (And I've written quite a few useful little utilities that way.)

      --

      Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

  7. Compared to what? by trouser · · Score: 3, Funny

    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.
  8. Crap, that's the best marketspeak in a while by abulafia · · Score: 3, Interesting
    Christ, VB as a productivity language? J++ as a migration language? c# and a real development language may make some sense sometimes, if you're trapped. Sure, I guess VB works out, if you have to. There are languages that actually make string parsing sensible, but I'm not one to tell people what to use.

    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.
    1. Re:Crap, that's the best marketspeak in a while by AJWM · · Score: 1

      All the admin languages they've tried really quite blow.

      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.

      --
      -- Alastair
    2. Re:Crap, that's the best marketspeak in a while by Juanvaldes · · Score: 2, Informative
      On the other hand, Apple's scripting language for MacOS wasn't bad. Guess it's just a Microsoft thing.

      Hell, now you can control the GUI itself with applescript! *note* I do not use AS so I can not comment on how well it works, I'll keep my perl thanks ;-)
    3. Re:Crap, that's the best marketspeak in a while by Haeleth · · Score: 1

      Er, surely Windows *is* (historically) a GUI on top of a command line base?

      As for Applescript, I've only glanced at it, but what I saw looked hideously like a dialect of COBOL. (Yes, I'm prejudiced.)

    4. Re:Crap, that's the best marketspeak in a while by AJWM · · Score: 1

      What Windows was 8+ years ago is irrelevant; the NT series was always GUI-based and even the Win9x series pretty much so (quick, how do you edit the registry without a GUI?).

      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.

      --
      -- Alastair
    5. Re:Crap, that's the best marketspeak in a while by holy+zarquon's+singi · · Score: 1

      I'm learning java at the moment (nightmare darling). Somebody pays me money to program in VBA (absolutely horrible, like fingernails down a blackboard), Sometimes I need to write shell scripts, but when I need to do something quickly, and easily, if it needs to be do something to my shell, I use backticks and perl. Perl is just the best. Terse, as elegant as you want, and not too many keypresses required (particularly for emacs users). Perl is the dog's bollocks.

      --
      "...we should just trust our president in every decision that he makes and we should just support that." B.Spears 2003
    6. Re:Crap, that's the best marketspeak in a while by abulafia · · Score: 1
      I'm with you. I can't stand Java. If I were a sadist, Java is the language I'd make my submissives code in. Nice and restrictive, with horrific little tricks like the Date object.

      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 enlightenment.

      --
      I forget what 8 was for.
  9. Major .NET feature: by Futurepower(R) · · Score: 4, Funny

    To me the most significant feature of .NET is that the languages are more easily de-compiled.

    1. Re:Major .NET feature: by sw155kn1f3 · · Score: 1

      The whole new meaning of Microsoft Shared Source initiative ;)

      --
      - Arwen, I'm your father, Agent Smith.
      - Well, you're just Smith, but my father is Aerosmith!
  10. Wait. by Vanieter · · Score: 0, Offtopic

    An article.
    On Slashdot.
    From MSDN.
    ...



    Jesus will come to save our souls before Armageddon or something ?

  11. .Net is also free and (a little) portable by berntbert · · Score: 3, Informative

    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).

    1. Re:.Net is also free and (a little) portable by Hard_Code · · Score: 0, Troll

      Yeah, the "OMIGOD MICROS0FT SI TEH DEVAL!!" rabidness is getting out of hand. .NET is a nice architecture, certainly a damn sight better than the god forsaken cruddy mix of C/C++/COM/DCOM/ActiveX/Fnord/WTF technologies they had before. Even gnome and GNU (GNU OF ALL ORGANIZATIONS!) is adopting the .NET (well, CLR) runtime. Good riddence to C/C++ hodgepodge.

      --

      It's 10 PM. Do you know if you're un-American?
  12. MASM? by Viol8 · · Score: 1

    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.

    1. Re:MASM? by REBloomfield · · Score: 1

      There was a story on here a while back about an ASM interpreter for ASP.NET...

      http://developers.slashdot.org/article.pl?sid=03 /0 4/28/2021204&mode=thread&tid=109

    2. Re:MASM? by Viol8 · · Score: 1

      Somehow I get the feeling that an interpreter for assembler rather defeats the whole point of writing
      in assembler in the first place :)

    3. Re:MASM? by edwdig · · Score: 1

      There's a Java assembler out there, called Jazmin. I might be wrong on the spelling of it though. I worked with it a bit in my compilers class. We wrote a Java compiler that outputted code for Jazmin to assemble into .class files.

      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.

    4. Re:MASM? by Anonymous Coward · · Score: 0

      What about C--?

    5. Re:MASM? by bobbotron · · Score: 0

      That class wouldn't be 95.302, Compiler Design at Carleton University, would it? :) I just took that last semester, and we coded with Jasmin, and what you just said sounded too familiar.. :)

      I agree, it can be a real pain to work with Jasmin: I like the idea of using it to take advantage of the security provided by the java virtual machine, etc, etc. Just the other day I found on Bigloo, a scheme interpreter, can compile to java class files - having tools like Jasmin around to do some of the work is definitly handy.

      Er, and yeah, function calls were a pain. I wasn't a big an of fan of JavaCC... Working in emacs trying to remember what to cast each node object from an Object was a drag! (Java.... Needs... Templates!) :)

    6. Re:MASM? by edwdig · · Score: 1

      Nope, was CS494 at Stevens Institute of Technology, spring 2002.

  13. why was this even posted? by Anonymous Coward · · Score: 1
    with the number of .NET articles posted on /., this one is totally useless. It's so superficial as to be worthless. The only people the article would be useful for is some idiot IT manager with no clue.

    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.

    1. Re:why was this even posted? by Gaijin42 · · Score: 1

      hrm, not absolutely sure, but look at cpu gardening in asp.net (as opposed to cpu farming). That may have some features that do what you want.

    2. Re:why was this even posted? by Anonymous Coward · · Score: 0

      hmm, that's close, but it's not exactly what I was thinking of. On big unix systems, you can set a process to a specific CPU. In the case of mainframes and unix systems, a large box might have a mix of 24 CPU's. Therefore having the ability to set a process to a CPU provides lots of flexibility and power. web gardening looks like a good starting point, but it could use more refinement. Then again, up until this year, most intel boxes were limited to 4 or 8 CPU's. Having those capabilities in a BUS architecture didn't make much sense, so it's understandable that windows doesn't provide that kind of flexibility.

    3. Re:why was this even posted? by Gaijin42 · · Score: 1

      Another thing that you would have some issues with for what you are looking for, is that the CLR is essentially one process spawning threads to handle each request. If you set the CLR to have affinity, all web requests would be running on the same cpu.

      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.

    4. Re:why was this even posted? by Anonymous Coward · · Score: 0
      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

      You hit the nail on the head! What I was thinking is this. Say you write an intelligent cache that polls or gets updates. If it was possible to assign that thread to a CPU on a 4 CPU box, it would improve the performance of the application. In the default affinity mode, the thread would be assigned to the next free CPU, which would mean an expensive context switch. Assuming the cached data is sufficiently larger than the CPU cache. From the benchmarks I've performed, memory and CPU intensive tasks end up performing worse on a multi-cpu box than a single cpu. The result I'm seeing is the memory and cpu variance is greater. that makes me think a light weight process is taking over the CPU and flushing out the cached data. This results in another CPU loading the same exact data into it's cache, when the light weight process should have used a different CPU to begin with.

  14. Re:MASM? ILASM.... by thing12 · · Score: 2, Informative
    Seriously though , it would be interesting if MS (or Sun for Java) released an assembler for the intermediate language used in these VMs.

    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

  15. Re:MASM? ILASM.... by Viol8 · · Score: 1

    Ah ok , didn't know about that. So why don't they ever advertise it?

  16. Re:MASM? ILASM.... by kzeddy · · Score: 1

    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

  17. .NET Borg Monkeys by tedgyz · · Score: 5, Insightful

    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
    1. Re:.NET Borg Monkeys by drxenos · · Score: 1

      .NET borg monkey? Ha ha ha! Can I use that?

      --


      Anonymous Cowards suck.
    2. Re:.NET Borg Monkeys by tedgyz · · Score: 1

      Feel free. It is not protected by any DRM. :-|

      --
      "No matter where you go, there you are." -- Buckaroo Banzai
  18. .NET languages by Latent+Heat · · Score: 5, Interesting
    Let us assume for the moment that the requirement is to program for Windows -- there are pros and cons that we don't need to get into because they have been hashed over, so lets move on here.

    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

    1. Re:.NET languages by Anonymous Coward · · Score: 0

      latent heat, thank you for that wonderfull overview.

      very illuminating.

  19. Donald Knuth by Latent+Heat · · Score: 1

    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.

  20. quick summary by Anonymous Coward · · Score: 4, Funny

    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!

    1. Re:quick summary by Anonymous Coward · · Score: 1, Insightful

      WTF is everyones problem with VB.Net. It's fantastically easy to use and it offers the same access to the framework and API's that C# and all of the other >Net Languages do. Do you feel threatened that it is easy to read and understand and that formerly arcane functions that could only be harnessed with C++ are easily available to lowly VB developers? You people are pathetic. Use the tools that work. C# works. C++.Net works. VB.Net works, and works quickly.

    2. Re:quick summary by Anonymous Coward · · Score: 0

      Anyone that says any sort of Basic is easy to use either has easy problems to solve or doesn't know any other language and doesn't know any better. Most likely both.

    3. Re:quick summary by Anonymous Coward · · Score: 0

      That was said so well I'd mod it up if I had points!

  21. Re:MASM? ILASM.... by Anonymous Coward · · Score: 0

    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?

  22. J# by beggarstune · · Score: 2, Insightful

    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
  23. It depends on the meaning of "ported"... by alispguru · · Score: 2, Informative

    If by "ported" you mean "a thin layer over .NET semantics", yeah, a lot of languages have that.

    If by "ported" you mean "language X's objects are completely visible to .NET, and efficiently so", then the numbers will drop off quite a bit.

    See this thread from comp.lang.lisp on why Franz Inc (the longest-surviving Common Lisp vendor) looked into porting their stuff to .NET, and declined.

    --

    To a Lisp hacker, XML is S-expressions in drag.
  24. MS thinks the same by Nicolay77 · · Score: 1

    I guess that a not-unimportant feature of .NET is that they can decompile and assimilate competitors software if any of it turns useful.

    And the number of commercial software made by microsoft with .NET will be the same made with MFC. (hint: none at all)

    --
    We are Turing O-Machines. The Oracle is out there.
  25. From MS for MS by lethalwp · · Score: 1

    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.

  26. Re:MASM? ILASM.... by Anonymous Coward · · Score: 0

    Hell, Microsoft Press has books on it.

  27. Compare them to REAL languages by gooru · · Score: 1

    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.

    1. Re:Compare them to REAL languages by Anonymous Coward · · Score: 0

      You are an idiot. Pure and simple.

    2. Re:Compare them to REAL languages by teknologikl · · Score: 2, Informative

      OK, troll, let's. So why not begin by explaining how ANSI C, C++, etc. are "real" languages, and how VB.NET, C#, are not.

      <SideNote>Grow up -- M$ is like so 90's... dude.</SideNote>

    3. Re:Compare them to REAL languages by jan.kristiansen · · Score: 1

      Java? Perl? Out of curiosity, where did you get your "real" programming experience? how about you post some of your real code here. so that we get a chance to laugh. or cry.

    4. Re:Compare them to REAL languages by Haeleth · · 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.

  28. Does Microsoft know something you don't? by Futurepower(R) · · Score: 1


    Exactly. ALL you need to know about .NET: Microsoft doesn't use it for their products. Does Microsoft know something you don't?

    1. Re:Does Microsoft know something you don't? by sw155kn1f3 · · Score: 1

      They don't use Visual C++ either
      Neither Sun uses Java for internal projects.
      I don't know why, actually.

      --
      - Arwen, I'm your father, Agent Smith.
      - Well, you're just Smith, but my father is Aerosmith!
    2. Re:Does Microsoft know something you don't? by Anonymous Coward · · Score: 0

      There actually was a leaked memo from Sun a while ago, where it told programmers not to use Java for in-house things because it was "too slow". And yet they still push it!

    3. Re:Does Microsoft know something you don't? by Juanvaldes · · Score: 1

      as I recall it was because the JVM for sloaris blew and they knew it. I would imagine that the OS/Java group has been told to fix this problem so they can use java for internal projects.

  29. How many do you see? by aled · · Score: 3, Insightful

    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"
  30. Funny by batkins · · Score: 1

    Haha. Microsoft Programming languages - get it?

    Boy, I tell you, the Slashdot editors have quite a sense of humor.

  31. It's FCL that's the problem. by Kunta+Kinte · · Score: 2, Insightful
    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).

    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
    1. Re:It's FCL that's the problem. by Mostly+a+lurker · · Score: 1
      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.

      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.

    2. Re:It's FCL that's the problem. by Nurgled · · Score: 1

      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 is a library which can be called from other apps.

      It shouldn't be too hard to port, for example, the socket-related parts of the class library, as the socket libraries on Windows are essentially identical to elsewhere in terms of capabilities and "paradigm".

  32. Atomistic by Anonymous Coward · · Score: 0

    or atomic?

  33. Pure M$ propaganda by Anonymous Coward · · Score: 0

    That article is utterly useless, and shouldn't have been posted

  34. Spot on. by killermal · · Score: 1
    There are no usual "pro and con" lists...

    Cons? In a Microsoft product? NEVER!

    1. Re:Spot on. by Anonymous Coward · · Score: 0

      Microsoft Lisp - like lisp, only without cons???

  35. New Assembley language by Loonacy · · Score: 1, Troll

    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. ;)

    1. Re:New Assembley language by daveoj · · Score: 1

      Reminds me of an assembler on the Commodore Amiga called 'Argasm' release by (I think) Argonaut Software. Not as "standardized" as HiSoft's Devpac, but blindingly fast :-)

  36. Mixed DLL Loading Problem by nondeterminism · · Score: 1
    Thought I'd post this because quite a few people I've talked to recently aren't aware of the "Mixed DLL Loading Problem" that affects anyone mixing native and .NET code in the same DLL (ie. linking objects compiled with and without -clr). This MSDN article describes a problem where:
    "...due to the way the loader works in version 1.0 and 1.1 of the common language runtime, deadlock situations are always possible with mixed DLLs..."
    The problem exists in versions 1.0 and 1.1 of the .NET runtime (1.1 being the current production release).
  37. wow major insight! by dBLiSS · · Score: 1

    Summary
    Programming languages may be used to build a variety of solutions.


    That's amazing! Glad he told us!

    --

    The Good Life
  38. Re:MASM? ILASM.... by arkanes · · Score: 1

    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.

  39. Standing Up for VB.Net by Anonymous Coward · · Score: 0

    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.

    1. Re:Standing Up for VB.Net by Glock27 · · Score: 1
      The less time invested in a project, the better.

      You forgot the most important part:

      ..provided it works satisfactorily.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    2. Re:Standing Up for VB.Net by Anonymous Coward · · Score: 0

      VB.NET is just C# with different syntax. You might as well just use C#. Aside from the much nicer syntax, The Microsoft.VisualBasic assembly (which provides all of the backward-compatibility junk for VB6 transition) isn't linked with your application, saving memory and making your app potentially more portable should Mono ever get good enough.

  40. Any car you want, so long as it's a shade of black by Anonymous Coward · · Score: 0

    Basically, .NET tells you, "You can have any language you want, so long as it looks and acts like C#."

    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++ .NET.

    Me neither. VC++ wasn't that bad but Managed C++ is a real bear to use. It's neither true C++ nor a true .NET language so it's easy to get into grey areas. It's not worth it.

    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 .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.

  41. What? by Eric+Destiny · · Score: 0

    No FoxPro, no Fortran?

    --

    "The meek shall inherit the earth, the rest of us shall go to the stars." Isaac Asimov

    1. Re:What? by Anonymous Coward · · Score: 0

      MS discontinued their Fortran compiler some years ago.

  42. Re:Any car you want, so long as it's a shade of bl by Latent+Heat · · Score: 1
    Is J# a joke? J# is a joke inasmuch as it is not really Java because for something to be really Java you have to have the whole class library. But as far as being a successful "skin" for Java syntax on the CLR, I can't see what is wrong with it. For people with Java syntax under their fingers and who find the minor changes to it in C# to be annoyances, I don't see what the deficiencies are in J# -- what does C# allow you to do that you can't in J#? What about J# would be foreign to a Java programmer?

    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.

  43. Thoughts. by Anonymous Coward · · Score: 0

    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.

  44. J#? by Anonymous Coward · · Score: 1, Informative

    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...

  45. What a SHAME! by Anonymous Coward · · Score: 0

    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.

  46. VB.NET by Anonymous Coward · · Score: 0

    The problem with VB.NET is that is has keywords like "NonInheritable"..

  47. Am I the only one who read at first... by Anonymous Coward · · Score: 0

    ..."Foul Microsoft Programming Languages Compared" in the title?

  48. Inspired... by Anonymous+Brave+Guy · · Score: 1
    u want genue new ideas perfectly glued together ? Perl6 is coming go read Lary Wall - Apocalypses on perl.com. Then u feel your head will blow up...ok go read Damian Conway - Exgesises...

    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:

    What we used to write as:

    sub feed {
    my ($who, $how_much, @what) = @_;
    ...
    }


    we now write as:

    sub feed ($who, $how_much, *@what) {
    ...
    }

    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.